We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 785
    • 2,113 Posts
    Наконец решил посмотреть версию 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'] = 'Вывести больше результатов'; 

      Создание сайтов на MODx, поддержка сайтов, поисковая оптимизация, программирование, копирайтинг
      Статьи о MODx, регулярно новые публикации