Логотип

Документация по макросам и шаблонам UMI.CMS

search search_do()

Название

%search search_do()% — Выводит результаты поиска по сайту.

Параметры: search search_do([template = 'default', search_string = '', search_types = '', search_branches = '', per_page = 0])

template

Имя шаблона, по которому следует выводить результаты поиска по сайту. В XSLT-шаблонизаторе игнорируется.

search_string

Поисковая фраза. Если значение не задано, оно берётся из переданного через форму поиска запроса.

search_types

Список идентификаторов иерархических типов для поиска (указываются через пробел). Если значение не указано, поиск оcуществляется по всем типам.

search_branches

Список разделов в которых будет осуществляться поиск (указываются через пробел). Если значение не указано, поиск осуществляется по всем разделам. Параметр может принимать как id страниц, так и их URL.

per_page

Количество результатов на странице. Если параметр не задан, будет взято значение, указанное в настройках модуля "Поиск".

Описание

Выводит результаты поиска, если они переданы через форму, выведенную с помощью макроса %search insert_form()% (поисковый запрос будет присутствовать в URL после отправки данных формы).

По умолчанию для вывода результатов поиска используется системная страница с адресом /search/search_do/. Можно создать обычную страницу контента, вставить в нее макрос %search search_do(...)% и в форме поиска, выводимой через %search insert_form()% поменять атрибут action у тега form на адрес этой страницы контента.

В результатах поиска искомые слова будут выделены тегом <b></b>.

Дополнительные сведения

<?php $search = $this->macros('search', 'search_do') ?>

Может быть использован с параметром "?search_string=поисковый_запрос". В остальных случаях будет пытаться получить его из URL .

Пример вызова

udata://search/search_do/?search_string=cms

XML-ответ UData

<udata module="search" method="search_do" generation-time="0.022250">
  <items>
    <item id="27" name="FAQ" link="/umicms/" xlink:href="upage://27">
      <p><b>UMI&#46;CMS</b> Вопросы о коммерческом продукте <b>UMI&#46;CMS</b>.</p>
    </item>
    <item id="28" name="Общие вопросы по UMI.CMS" link="/umicms/obwie_voprosy_po_umicms/" xlink:href="upage://28">
      <p>Общие вопросы по <b>UMI&#46;CMS</b></p>
    </item>

    ...
 
  </items>
  <total>7</total>
  <per_page>10</per_page>
</udata>

Элементы и атрибуты

<items>

Ветвь, содержащая элементы item — результаты поиска.

<item>

Элемент, описывающий отдельный результат поиска. Значение элемента — контекст, в котором встречается одно из слов в поисковом запросе.

@id

id найденной страницы.

@name

Название найденной страницы.

@link

Ссылка на найденную страницу.

@xlink:href

Ссылка UPage на найденную страницу.

Вывод осуществляется по шаблону, указанному в параметре template. Вы можете не указывать этот параметр, в этом случае для вывода свойства будет использован шаблон по умолчанию — default.tpl.

Используемые шаблоны

Макрос оперирует шаблонами, находящимися в каталоге /tpls/search/.

Используемые блоки шаблона

search_block

Выводит блок оформления для результатов поиска.

%last_search_string%

Выводит предыдущий поисковый запрос, если такой был.

%lines%

Выводит список результатов поиска, построенный с использованием блока search_block_line .

%total%

Выводит общее количество новостей в ленте. Можно использовать для макроса %system numpages()% .

%per_page%

Выводит значение параметра per_page. Можно использовать для макроса %system numpages()% .

search_block_line

Выводит отдельную страницу в результате поиска.

%id%

Выводит id найденной страницы.

%name%

Выводит название найденной страницы.

%link%

Выводит ссылку на найденную страницу.

%num%

Выводит порядковый номер найденной страницы.

%context%

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

%quant%

Выводит разделитель используя блок search_block_line_quant.

%list-class-first%

в случае, если элемент первый, выводит "first"

%list-class-last%

в случае, если элемент последний, выводит "last"

%list-class-odd%

в случае, если элемент четный, выводит "odd"

%list-class-even%

в случае, если элемент нечетный, выводит "even"

%list-position%

вставляет порядковый номер в списке

search_empty_result

Используется в том случае, если в результате поиска не найдено ни одной страницы. В таком случае этот блок выводится вместо блока search_block.

%last_search_string%

Выводит предыдущий поисковый запрос, если такой был.

search_block_line_quant

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

Примеры использования

<?php

$FORMS = Array();

$FORMS['search_block'] = <<<END

 %search insert_form('searchform')%

 <p>Найдено %total% страниц.</p>

 %lines%

 <p>%system numpages(%total%, %per_page%)%</p>

END;

$FORMS['search_block_line'] = <<<END

 <p>
  <span class="s_num">%num%.</span> <a href='%link%'><b>%name%</b></a>
  %context%
 </p>

END;

$FORMS['search_empty_result'] = <<<END

 %search insert_form('searchform')%

 <p>Извините. По данному запросу ничего не найдено.</p>

END;

?>