Skip to content
  1. Компоненты
  2. mSearch2
  3. Сниппеты
  4. mSearch2

mSearch2

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

В работе использует pdoTools, поэтому обладает всеми основными возможностями: подключение ТВ, таблиц, указание условий в &where, &select и т.д. По большому счету, этот сниппет является переделанным pdoResources с двумя отличиями:

  • Для вывода результатов он использует поиск и добавляет плейсхолдер [[+weight]] с набранными баллами.
  • Также добавляет плейсхолдер [[+intro]] с подсвеченными совпадениями.

Сниппет должен реагировать на передаваемые запросы, поэтому его нужно вызывать некэшированным.

Параметры

НазваниеПо умолчаниюОписание
&tpltpl.mSearch2.rowЧанк оформления для каждого результата. Обычные плейсхолдеры ресурса + [[+weight]] и [[+intro]].
&returnIdsfalseВернуть только список id подходящих страниц, через запятую.
&showLogfalseПоказывать дополнительную информацию о работе сниппета. Только для авторизованных в контексте «mgr».
&limit10Лимит выборки результатов.
&offset0Пропуск результатов с начала выборки.
&depth10Глубина поиска ресурсов от каждого родителя.
&outputSeparator\nНеобязательная строка для разделения результатов работы.
&toPlaceholderЕсли не пусто, сниппет сохранит все данные в плейсхолдер с этим именем, вместо вывода не экран.
&parentsСписок категорий, через запятую, для ограничения вывода результатов.
&includeTVsСписок ТВ параметров для выборки, через запятую. Например: «action,time» дадут плейсхолдеры [[+action]] и [[+time]].
&tvPrefixПрефикс для ТВ плейсхолдеров, например «tv.».
&whereДополнительные параметры выборки, закодированные в JSON.
&showUnpublishedfalseПоказывать неопубликованные товары.
&showDeletedfalseПоказывать удалённые ресурсы.
&showHiddentrueПоказывать ресурсы, скрытые в меню.
&hideContainersfalseСкрывать ресурсы-контейнеры.
&introCutBefore50Укажите количество символов для вывода в плейсхолдере [[+intro]] перед первым совпадением в тексте.
&introCutAfter250Укажите количество символов для вывода в плейсхолдере [[+intro]] после первого совпадения в тексте.
&htagOpen<b>Открывающий тег для подсветки найденных результатов в [[+intro]].
&htagClose</b>Закрывающий тег для подсветки найденных результатов в [[+intro]].
&parentsVarparentsИмя переменной для дополнительной фильтрации по родителям. Может быть передано через $_REQUEST.
&queryVarqueryИмя переменной для получения поискового запроса из $_REQUEST.
&tplWrapperЧанк-обёртка, для заворачивания всех результатов. Понимает плейсхолдеры: [[+output]], [[+total]], [[+query]] и [[+parents]].
&wrapIfEmptyfalseВключает вывод чанка-обертки &tplWrapper даже если результатов нет.
&forceSearchtrueОбязательный поиск для вывода результатов. Если нет поискового запроса - ничего не выводится.
&minQuery3Минимальная длина поискового запроса.
&fieldsПереопределение системной настройки веса для проиндексированных полей, через запятую: &fields=pagetitle:5,content:3,comment:1. По умолчанию используется mse2_index_fields.
&showSearchLogfalseПоказывать подробную информацию о начислении баллов поиска ресурсам при включенном &showLog.

Лексиконы

Сниппет может выдавать сообщения об ошибках поиска, которые меняются с словарях системы.

  • mse2_err_no_results → "Подходящих результатов не найдено".
  • mse2_err_min_query → "Слишком короткий поисковый запрос". То есть, указанный запрос меньше значения &minQuery.
  • mse2_err_no_query → "Задан пустой поисковый запрос".

Там же находятся и другие записи, используемые с чанках и сниппетах по умолчанию.

Лексиконы

Форма поиска

Для работы сниппету нужен только поисковый запрос в массиве $_REQUEST. Его может отправить простейшая форма:

modx
<form action="/search.html" method="get">
  <input type="text" name="query" value="[[+mse2_query]]" />
  <button type="submit">Искать!</button>
</form>

Обратите внимание, что запрос должен передаваться под тем же именем, что указано в параметре &queryVar, по умолчанию это query.

Примеры

Если у формы указан пустой action, то она отправляется на текущую страницу:

modx
<form action="" method="get">
  <input type="text" name="query" value="[[+mse2_query]]" />
  <button type="submit">Искать!</button>
</form>

[[!mSearch2]]

Можно использовать разбивку на страницы при помощи pdoPage. mSearch2 устанавливает pdoTools автоматически, так что pdoPage у вас уже есть.

modx
<form action="" method="get">
  <input type="text" name="query" value="[[+mse2_query]]" />
  <button type="submit">Искать!</button>
</form>

[[!pdoPage?
  &element=`mSearch2`
]]

[[!+page.nav]]

Сниппет можно вызывать вместе с mSearchForm

modx
[[!mSearchForm]]

[[!pdoPage?
  &element=`mSearch2`
]]

[[!+page.nav]]

Также mSearch2 можно использовать для поиска и вывода товаров вместе с msProducts:

modx
[[!pdoPage?
  &element=`msProducts`
  &parents=`0`
  &resources=`[[!mSearch2:default=`999999`?returnIds=`1`&limit=`0`]]`
  &sortby=`ids`
]]

[[!+page.nav]]

Параметр returnIds указывает msProducts список найденных товаров для вывода. А фильтр default подставляет отсутствующий id в случаях, когда ничего не найдено, иначе msProducts будет выводить все товары подряд.

При таком вызове вы сможете использовать все поля товаров в чанке оформления.