[Modx Revo] Создать поиск по сайту SimpleSearch modx, параметры, шаблооны
Для создания поиска по сайту modx Revo необходимо установить пакет SimpleSearch.
Затем, в ресурсах, создаем ресурс с названием ПОИСК и вписываем туда:
[[!SimpleSearch]]
Запоминаем id этого ресурса, это страница вывода результатов поиска. В шаблон (где находится сама форма поиска) вставляем следующий код:
[[!SimpleSearchForm? &landing=`1` &tpl=`MySForm`]]
где вместо 1 вставляем ID страницы вывода результатов поиска
Затем копируем содержимое файла core/components/simplesearch/elements/chunks/searchform.chunk.tpl в новый чанк с названием MySForm и создаем тот шаблон отображения формы поиска, который нам необходим
Все, поиск на сайте под управлением Revo Modx готов.
Основные параметры и чанки SimpleSearch
чанки:
- tpl - вывод каждого отдельного пункта результата поиска
- containerTpl - отвечает за обертку всех результатов поиска
- pageTpl - отвечает за вывод отдельной кнопки страницы пагинации
- currentPageTpl - для управления кнопкой в пагинации активной страницы
- noResultsTpl - когда нет результатов поиска
Параметры:
- depth - глубина поиска (стандартно - 10)
- hideMenu - скрыть или показать ресурсы, с галочкой- не показывать в меню (0 -только видимые ресурсы, 1 - только скрытые, 2 - все показывает)
- docFields - области для поиска документов (pagetitle,longtitle,alias,description,introtext,content)
- perPage - количество результатов поиска на странице (стандартно 10)
- extractLength - кол-во символов для извлечения каждого результата поиска, обычно 200
- includeTVs - включить в поиск TV (если много тв, то замедляет поиск)
- pagingSeparator - какой сепаратор сипользовать для разделения плагинации, обычно - палочка
- ids - разделенный запятыми список идентификаторов документов, что бы искать только в них
- idType - оганичение для верхнего параметра - родители или дети (parents, documents)
- exclude - список id документов, через запятую, которые надо исключить для поиска
- contexts - контексты для поиска
- sortBy - разделенный запятыми список полей ресурсов для сортировки
- sortDir - разделенный запятыми список направлений (кол-во должно совпадать с кол-вом в верхнем параметре)
Далее решаем проблемы с кодировкой (если они есть)
Находим файл 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)));
Затем, заменяем строку
$string = preg_replace('/' . $quoteValue . '/i', '<'.$tag.' class="'.$cls.'">$0</'.$tag.'>', $string);
на
$string = preg_replace('/' . $quoteValue . '/iu', '<'.$tag.' class="'.$cls.'">$0</'.$tag.'>', $string);
А так же заменяем строку
$text = preg_replace('/(\[\[\+.*?\]\])/i', '', $text);
на
$text = preg_replace('/(\[\[\+.*?\]\])/iu', '', $text);
И последнее, надо закомментировать строчку
if (!empty($str)) $this->searchString = strip_tags($this->modx->sanitizeString($str));
за решение проблем с кодировкой спасибо valikras