function smarty_modifier_truncatehtml($html, $limit = 80, $endchar = '…')
{
    try {
        $output = new TruncateHtmlString(html_entity_decode(preg_replace('#<([bh]r)>#', '<$1/>', $html), ENT_HTML5 | ENT_QUOTES), $limit, html_entity_decode($endchar));
        return $output->cut();
    } catch (Exception $e) {
        // parsing error
        return smarty_modifier_truncate(preg_replace('#<[^>]+>#', ' ', $html), $limit, $endchar);
    }
}
 public function truncatehtml($html, $limit, $endchar = '&hellip;')
 {
     $output = new TruncateHtmlString($html, $limit);
     return $output->cut() . $endchar;
 }