Для организации простого механизма поиска по сайту, созданному на основе MODX Revolution, я использую пакет расширения SimpleSearch.
1. Устанавливаем пакет из репозитория MODX.
2. Создаем новый ресурс в корне дерева ресурсов «Результаты поиска», ставим галочку «Не показывать в меню». Нажимаем на вкладку «Настройки» и убираем галочки с «Доступен для поиска», «Использовать HTML-редактор».
Сохраняем ресурс.
3. Создаём шаблон страницы «Поиск», на основе типового шаблона нашего сайта. Этот шаблон будем использовать для вывода результатов поиска.
В место, где бы мы хотели видеть вывод результатов поиска, вставляем следующий код:
[[!SimpleSearch]]
Мой пример шаблона:
<!DOCTYPE html> <html lang="ru" dir="ltr"> [[$Head]] <body class=""> [[$Header]] <div class="wrapper row3"> <div id="container"> [[$Sidebar.Catalog]] <div class="three_quarter"> <div class="push50"> <h1>[[*pagetitle]]</h1> [[!SimpleSearch]] </div> </div> <div class="clear"></div> </div> </div> [[$Footer]] </body> </html>
4. Возвращаемся к ресурсам и смотрим id нашего ресурса «Результаты поиска».
Запоминаем id этого ресурса. В шаблон или чанк, где должна быть форма поиска вставляем следующий код.
[[!SimpleSearchForm? &landing=`44` &tpl=`search`]]
44 нужно заменить на id вашего ресурса.
5. Копируем следующий код (это содержимое файла core/components/simplesearch/elements/chunks/searchform.chunk.tpl)
в новый чанк с названием search.
В моём примере есть некоторые стилевые дополнения.
<form class="sisea-search-form" action="[[~[[+landing]]]]" method="[[+method]]" style="{float:right; margin:0; padding:0;}"> <fieldset> <label for="search"> </label> <input type="text" name="[[+searchIndex]]" id="[[+searchIndex]]" value="[[+searchValue]]" style="display:block; float:left; width:200px; margin:0; padding:8px; color:#747474; background-color:#FCFAF7; border:1px solid #DDDDDD;" /> <input type="hidden" name="id" value="[[+landing]]" /> <input type="submit" value="[[%sisea.search? &namespace=`sisea` &topic=`default`]]" style="width:auto; padding:7px; font-weight:bold; text-transform:uppercase; color:#FFF383; background-color:#184927; border-color:#76C38F; cursor:pointer;" /> </fieldset> </form>
Решаем проблемы с кодировками.
Сразу же оговорюсь, мне это не пригодилось, но для справки, я размещу материал.
Находим файл 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', $string);
на
$string = preg_replace('/' . $quoteValue . '/iu', '< '.$tag.' class="'.$cls.'">$0', $string);
А так же делаем замену строки
$text = preg_replace('/(\[\[\+.*?\]\])/i', '', $text);
на
$text = preg_replace('/(\[\[\+.*?\]\])/iu', '', $text);
И последнее, надо закомментировать строку
if (!empty($str)) $this->searchString = strip_tags($this->modx->sanitizeString($str));
Поиск на сайте под управлением MODX Revolution сделали :).
Вы должны авторизоваться, чтобы оставлять комментарии.
Комментарии ()