SearchResult


Назначение

Вывод результатов поиска по сайту

Ключи

where Строка, содержит название зоны поиска. Принимает одно из следующих значений:
  • nowhere - не выводить результаты поиска. используется для формирования заголовка и подвала результатов поиска.
  • site - выдать результаты поиска по страницам сайта.
  • data - выдать результаты поиска по записям в таблице.
  • catalog - выдать результаты поиска по каталогу.
design Строка, содержит идентификатор дизайна, примененного для отрисовки и расположенного в файле Templates/searchresult_design.xml. Использование и настройка аналогичны работе с дизайном для новостных лент.
fields Строка, содержит через запятую названия полей, среди которых необходимо произвести поиск. Применяется для поиска в справочниках и в каталоге.
source Строка, имя xml файла со структурой каталога. Используется только при поиске по каталогу. Расширение .xml можно не указывать.
catalogid Строка, идентификатор каталога в указанном в source файле, по которому нужно производить поиск.
filter Фильтр, полностью аналогичный по синтаксису и назначению ключу filter макроса News. Предназначен для отбора из справочников только нужных записей при проведении операции поиска. Работает только в секции поиска по справочникам.
stemming Логическое значение (on|true|yes|1) определяющее включена ли функция стемминга, которая в каждом слове из поискового набора выделяет корень, в результате чего ищутся все словоформы. То есть, при задании в поисковой форме слова "почта" при включенном стемминге будут найдены "почтовый, почтовик, почтовая, почта" и так далее. А при выключенном будут найдены только полные вхождения слова "почта". По умолчанию, если ключ не задан, опция включена.

Комментарии

Поиск по сайту состоит из двух частей: формы поиска и страницы с результатами. Поиск по умолчанию производится с использованием всех словоформ всех слов, введенных пользователем (для русского языка), но эта опция может быть отключена. Для запроса из нескольких слов используется логика "ИЛИ", то есть будут показаны все результаты, которые содержат хотя бы одно слово из заданных в запросе. Это позволяет выдать максимальное количество результатов.

Форма поиска верстается в произвольной форме. На страницу с данной макроподстановкой (страницу результатов поиска) форма должна передавать поле terms, которое должно содержать строку поиска.

Дизайн вывода результатов (файл Templates/searchresult_design.xml) обычно содержит секции searchdesign со следующими идентификаторами:

  • header - обычно содержит строку "Вы искали ".
  • helper - обычно содержит строку "Возможно, Вы хотели найти $Attribute:term$". Данная секция выводится только если результат поиска пустой и, предположительно, пользователь ошибся с раскладкой.
  • site - дизайн для результатов поиска по сайту.
  • другие секции, определяемые разработчиком и используемые через ключ design.

Каждая секция разбита на следующие части: header, footer, item, delimiter, empty. Их назначение полностью аналогично частям шаблонов для подстановки $News[]$.

В секции helper дизайна вывода результатов могут использоваться следующие локальные макроподстановки:

  • $Attribute:term$ - выводит значение поисковой строки, исправленное из неверного набора русских букв с ошибочно включенной английской раскладкой.
  • $Attribute:termlink$ - escape вариант той же строки для формирования ссылки, по которой пользователь сразу может попасть к результатам поиска перекодированной строки.

В секции site дизайна вывода результатов могут использоваться следующие локальные макроподстановки:

  • $Attribute:drillnumber$ - порядковый номер элемента в общем списке результатов поиска.

Файл с примером дизайна результатов поиска может быть взят из состава базовой версии или из комплекта примеров для полной версии Системы.

Примеры

Пример типичного применения, весь блок подстановок обычно находится на странице /searchresult.

$SearchResult[where: nowhere; design: header]$
$SearchResult[where: site; design: site]$
$SearchResult[where: data; table: news; fields: caption, content, announce; design: news]$
$SearchResult[where: nowhere; design: helper]$
$SearchResult[where: catalog; source: catalog.xml; catalogid: maincatalog; fields: title, annotate; design: catalog]$