Поиск по сайту в Modx Revolution с помощью SimpleSearch

Поиск по сайту на Modx Revolution с помощью сниппета SimpleSearch

Здравствуйте, дорогие друзья и коллеги! Хочу познакомить вас с отличным пакетом для организации поиска на сайте под системой Modx Revolution - SimpleSearch. Я пошагово объясню вам, как установить этот пакет на сайт и организовать поиск на сайте. Итак, приступим:

1. Для начала заходим в "Система" - "Управление пакетами"

2. Жмем кнопку "Загрузить дополнения"

3. Вбиваем в строку поиска - SimpleSearch, нажимаем "Enter" и нажимаем на кнопку "Загрузить"

4. Пойдет загрузка пакета

5. Нажимаем "Управление пакетами"

6. И жмем кнопку "установить" возле скаченного нами SimpleSearch

Жмем "Продолжить", а потом "ОК"

7. Создаем новый ресурс в корне дерева

Заголовок: Результаты поиска, ставим галочку "Не показывать в меню". Нажимаем на вкладку "Настройки" и убираем галочки с "Доступен для поиска", "Использовать HTML-редактор". Незабываем сохранить ресурс.

8. Далее заходим в новосозданный ресурс и в поле "Содержимое ресурса" вписываем

[[!SimpleSearch]]

9. Запоминаем id этого ресурса, это страница вывода результатов поиска

В шаблон где находится сама форма поиска вставляем следующий код:

[[!SimpleSearchForm? &landing=`1` &tpl=`search`]]

где landing — это ID страницы вывода результатов поиска, а чанк search отвечает за саму форму поиска, который мы сейчас создадим

10. Затем копируем следующий код

это содержимое файла core/components/simplesearch/elements/chunks/searchform.chunk.tpl:

<form class="sisea-search-form" action="[[~[[+landing]]]]" method="[[+method]]"> 
<fieldset>   
<label for="[[+searchIndex]]">[[%sisea.search? &namespace=`sisea` &topic=`default`]]</label>
    <input type="text" name="[[+searchIndex]]" id="[[+searchIndex]]" value="[[+searchValue]]" />   
<input type="hidden" name="id" value="[[+landing]]" />
    <input type="submit" value="[[%sisea.search? &namespace=`sisea` &topic=`default`]]" /> 
</fieldset>
</form>

в новый чанк с названием search и создаем тот шаблон отображения окна поиска, который нам необходим.

11. Далее решаем проблемы с кодировкой

Находим файл core/components/simplesearch/model/simplesearch/simplesearch.class.php в нем заменяем строку

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

на

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

12. Затем заменяем строку

$string = preg_replace('/' . $quoteValue . '/i', '<'.$tag.' class=".$cls.">$0</'.$tag.'>', $string);

на

$string = preg_replace('/' . $quoteValue . '/iu', '<'.$tag.' class=".$cls.">$0</'.$tag.'>', $string);

13. А так же заменяем строку

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

на

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

14. И последнее, надо закомментировать строчку

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

Основные чанки SimpleSearch

Поиск на сайте под управлением Modx Revolution готов. Он работает, можете убедиться в этом сами, но есть еще несколько моментов, которые пригодятся в работе с этим сниппетом. А именно редактирование чанков результатов поиска, его обертки, пагинации и так далее. Для начала Вам нужно понимать, что все чанки в формате .tpl находятся вот по этому пути: core/components/simplesearch/elements/chunks/. Ну а для того, чтобы с ними было легче работать выведем основные чанки в админку Modx. Вот их параметры

  • tpl
  • containerTpl
  • pageTpl
  • currentPageTpl

Ну а называть сами чанки мы уже будем как хотим.

Параметр tpl — чанк SimpleSearchResult

Параметр tpl отвечает за вывод каждого отдельного пункта результата поиска. Давайте создадим чанк и назовем его SimpleSearchResult. Скопируем в него код из файла core/components/simplesearch/elements/chunks/searchresult.chunk.tpl:

<div class="sisea-result">
    <h3>[[+idx]]. <a href="[[+link:is=`:then=