Новости → Избавляемся от � при использовании в Ditto параметра &truncLen
Если нужно вывести определенное кол-во символов в анонсе новости, то для этого воспользуемся Ditto с паарметром &truncLen и тут же встречаемся с проблемой, что в конце всегда выводится �. Избавиться от этого просто:
сначала смотрим прописана ли у нас правильная кодировка коннекта к базе данных:
1 | в config.inc.php $database_connection_characterset = 'utf8' |
если там все ок, то дописываем в .htaccess следующие строки:
1 2 3 4 5 6 | PHP_VALUE mbstring.internal_encoding UTF-8 PHP_VALUE default_charset UTF-8 PHP_VALUE mbstring.http_output UTF-8 PHP_VALUE mbstring.encoding_translation On PHP_VALUE mbstring.detect_order UTF-8 PHP_VALUE mbstring.func_overload 7 |
UPDATE:
если вышеуказанные действия не помогли, то открываем файл
1 | assets/snippets/ditto/extenders/summary.extender.inc.php |
находим там функцию function textTrunc($string, $limit, $break=”. “) и делаем 2 действия: 1. дописываем в ее начало такую строку mb_internal_encoding(”UTF-8″); и 2. меняем функции substr на mb_substr. должно получиться следующее:
1 2 3 4 5 6 7 8 9 10 11 12 13 | function textTrunc($string, $limit, $break=". ") { // Original PHP code from The Art of Web: www.the-art-of-web.com mb_internal_encoding("UTF-8"); // return with no change if string is shorter than $limit if(strlen($string) <= $limit) return $string; $string = mb_substr($string, 0, $limit); if(false !== ($breakpoint = strrpos($string, $break))) { $string = mb_substr($string, 0, $breakpoint+1); } return $string; } |
