Заметки о решаемых задачах АйТишников

Сделал - запиши. Нашёл - сохрани :)

MODX Revo: Организовываем поиск по сайту с помощью SimpleSearch

MODX Revo: Организовываем поиск по сайту с помощью SimpleSearch

 

Для организации простого механизма поиска по сайту, созданному на основе 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 сделали :).

 

16 февраля 2014, 18:01    Александр CMS 0    550 0

 



Комментарии (0)

    Вы должны авторизоваться, чтобы оставлять комментарии.