в MODx CMS, Разработка

SimpleSearch проблема с кодировкой

Описание проблемы — в выводе результатов поиска появляются «ромбики» вместо слов, то есть проблема с кодировкой.

Давно попадалась эта проблема, но все ни как не доходили руки к описанию решения. Итак, поискав аналогичные проблемы в интернете, я нашел решение.

Нам нужен файл, отвечающий за логику работы поиска. Идем по пути core/components/simplesearch/model/simplesearch/ и открываем файл simplesearch.class.php

Далее нам нужно будет заменить некоторые строки на новые, а именно:

нужно удалить или закомментировать строку 177

//if (!empty($str)) $this->searchString = strip_tags($this->modx->sanitizeString($str));

заменяем строку 247

$text = preg_replace(‘/(\[\[\+.*?\]\])/i’, », $text);

на

$text = preg_replace(‘/(\[\[\+.*?\]\])/iu’, », $text);

заменяем строку 261

$text = trim(preg_replace(‘/\s+/’, ‘ ‘, $this->sanitize($text)));

на

$text = trim(preg_replace(‘/\s+/u’, ‘ ‘, $this->sanitize($text)));

заменяем строку 361

$string = preg_replace(‘/’ . $quoteValue . ‘/i’, ‘<‘.$tag.’variable’>$cls.'»>$0</’.$tag.’>’, $string);

на

$string = preg_replace(‘/’ . $quoteValue . ‘/iu’, ‘<‘.$tag.’variable’>$cls.'»>$0</’.$tag.’>’, $string);

Написать комментарий

Комментарии

  1. Спасибо! Помогло.
    Только если закомментарить эту строку:
    if (!empty($str)) $this->searchString = strip_tags($this->modx->sanitizeString($str));

    тогда на странице с результатами не выводится запрос:
    4 результатов найдено для «»
    а если оставить, то
    4 результатов найдено для «куртка»

  2. P.S. Номера строк видимо еще зависят от версии самого снипета, так что указанные в статье для многих могут быть уже не актуальны. Нашел нужные строки с помощью поиска, причем полностью по стоке совпадений не будет.