Новости → Избавляемся от � при использовании в 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;
	  }

Я не робот.