Наконец решил посмотреть версию AjaxSearch
1.7.1. Кое-какие проблемы прошлой версии устранены, но для нормальной работы все же пришлось кое-что дорабатывать. На данный момент после решения трех описанных проблем все работает нормально.
1. Проблема, существующая достаточно давно: иногда при использовании UTF-8 поисковые запросы не подсвечиваются, и не выводится фрагмент, в котором найдено слово (если не совпадает регистр). Для решения этой проблемы нужно в нескольких местах (конкретно в 5) заменить
/i на
/iu. В файлах
snippet.ajaxSearch.inc.php и
ajaxSearch.php нужно исправить строки, содержащие:
preg_match('/' . preg_quote($searchTerm) . '/i', $text)
preg_replace( '/' . preg_quote( $searchTerm, '/' ) . '/i',
В плагине
SearchHighlighting исправить:
$pattern = '/' . preg_quote($word) . '(?=[^>]*<)/i';
2. При поиске в режиме AJAX в результатах выводятся некоторые служебные символы, такие как, например, плейсхолдеры Ditto [+start+] - [+stop+] из [+total+]. В обычном режиме их нет, так как вывод из AjaxSearch обрабатывается MODx, а в режиме AJAX все без обработки передается в браузер. Для решения вопроса следует в файле
ajaxSearch.inc.php найти функцию
stripSnip и в ней добавить дополнительную строку:
$modRegExArray[] = '~\[\+(.*?)\+\]~'; // [+placeholders+]
3. В данной версии сниппета утерян файл с русскими терминами. Взять его можно из старой версии или из расположенного ниже кода.
$_lang['as_resultsIntroFailure'] = 'По вашему запросу ничего не найдено. Попробуйте ввести похожие по смыслу слова, чтобы получить больше результатов.';
$_lang['as_searchButtonText'] = 'Найти!';
$_lang['as_boxText'] = 'Введите запрос...';
$_lang['as_introMessage'] = 'Введите ваш запрос для начала поиска.';
$_lang['as_resultsFoundTextSingle'] = '%d найдено по запросу "%s".';
$_lang['as_resultsFoundTextMultiple'] = '%d найдено по запросу "%s".';
$_lang['as_paginationTextSinglePage'] = '';
$_lang['as_paginationTextMultiplePages'] = 'Страницы с результатами поиска: ';
$_lang['as_moreResultsText'] = 'Щелкните здесь мышью, чтобы увидеть все результаты поиска.';
$_lang['as_moreResultsTitle'] = 'Вывести больше результатов';