Здравствуйте, дорогие друзья и коллеги! Хочу познакомить вас с отличным пакетом для организации поиска на сайте под системой 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:
[[%sisea.search? &namespace=`sisea` &topic=`default`]]
в новый чанк с названием 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", "$0", $string);$string = preg_replace("/" . $quoteValue . "/iu", "$0", $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. Вот их параметры
- containerTpl
- pageTpl
- currentPageTpl
Ну а называть сами чанки мы уже будем как хотим.
Параметр tpl - чанк SimpleSearchResultПараметр tpl отвечает за вывод каждого отдельного пункта результата поиска. Давайте создадим чанк и назовем его SimpleSearchResult . Скопируем в него код из файла core/components/simplesearch/elements/chunks/searchresult.chunk.tpl :
[[+idx]]. заменяем на $text = preg_replace("/(\[\[\+.*?\]\])/iu", "", $text);
строку 311: $text = trim(preg_replace("/\s+/", " ", $this->sanitize($text)));
заменяем на $text = trim(preg_replace("/\s+/u", " ", $this->sanitize($text)));
строку 413: $string = preg_replace("/" . $quoteValue . "/i", "$0", $string);
заменяем на $string = preg_replace("/" . $quoteValue . "/iu", "$0", $string);
закоментируем строку 179: If (!empty($str)) $this->searchString = strip_tags($this->modx->sanitizeString($str));
т.е. должно получиться вот так /*if (!empty($str)) $this->searchString = strip_tags($this->modx->sanitizeString($str)); */
3. Делаем копии всех стандартных чанков
которые лежат в директории core/components/simplesearch/elements/chunks/ Создаем новые чанки с теми же именами и префиксом -new, и тем же содержимым (только они уже не на основе файлов, а обычные), для чего все это поймете дальше. Например, берем первый чанк currentpagelink.chunk.tpl
и создаем новый чанк currentpagelink-new
(элементы — создать новый чанк) ну и переносим в него код. [[+text]] Отвечает за управления кнопкой в пагинации для активной страницы. И таким же образом создаем остальные чанки: — pagelink-new
— отвечает за вывод отдельной кнопки пагинации. — searchform-new
— форма поиска
[[%sisea.search? &namespace=`sisea` &topic=`default`]]
— searchnoresults
можно не переносить — там нет не какого оформления; — searchresult-new
— вывод каждого пункта результата.
[[+idx]]. [[+pagetitle]]
[[+extract]]
- [[+idx]] - номер результата поиска в списке
- [[+link:is=``:then=`[[~[[+id]]]]`:else=`[[+link]]`]]
- [[+longtitle]] - расширенный заголовок
- [[+pagetitle]] - заголовок
- [[+extract]] - текст, по которому был найден этот документ
— searchresultli — по сути тоже можно не переносить.
— searchresults-new — обертка всех результатов
[[+resultInfo]]
[[+paging]] [[+results]] [[%sisea.result_pages? &namespace=`sisea` &topic=`default`]][[+paging]]- [[+resultInfo]] - инф-я о кол-ве найденных документов и по какому словосочетанию.
- [[+sisea.result_pages? &namespace=`sisea` &topic=`default`]]
Вывод фразы «Страницы с результатами поиска:»
- [[+paging]] - пагинация
- [[+results]] - результаты поиска
После всего проделанного у вас должно получиться 5 новых чанков.
4. Создаем новый документ на который будут выводиться результаты поиска
Заголовок: Результаты поиска, ставим галку «Не показывать в меню». В «Настройки» и убираем галки с «Доступен для поиска», «Использовать HTML-редактор». Сохраняем. Обновляем страницу и прописываем в содержимое
[[!SimpleSearch? &tpl=`searchresult-new` &containerTpl=`searchresults-new` &pageTpl=`pagelink-new` ¤tPageTpl=`currentpagelink-new`]]
чанки оформлении которые создали на 3 шаге (внешний вид).
Если хотите чтобы в результах поиска были картинки, то дописываем в конце этого вывода
&includeTVs=`1` &processTVs=`1`
В чанке searchresult картинку можно вызывать так: [[+img]].
5. Выводим форму поиска
На месте где нужно вывести форму поиска, пишем
[[!SimpleSearchForm? &landing=`11` &tpl=`searchform-new`]]
Здесь landing — id страницы с результатами поиска, в tpl — чанки оформления формы, который создали на 3 шаге.
Делали 4 и 5 шаг мы для того, чтобы можно было редактировать на свое усмотрение внешнее оформление: самой формы, результатов поиска и т.д. не влезая в исходники. А стандартное оформление достаточно печальное, вот так к примеру выглядит стандартная форма поиска.
6. Меняем оформление.
Описывать как оформить все чанки не вижу смысла, для примера приведу новое оформление для чанка searchform-new
Это обычная стандартная разметка формы от бутстрап 3, на сайте выглядит так:
Официальная документация здесь: docs.modx.com/extras/revo/simplesearch
Если есть вопросы, пишите задавайте их в комментариях.