Как настроить msearch2 modx

mSearch2

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

Оглавление

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

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

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

Параметры

Название По умолчанию Описание
&tpl tpl.mSearch2.row Чанк оформления для каждого результата. Обычные плейсхолдеры ресурса и [[+weight]] и [[+intro]] .
&returnIds false Вернуть только список id подходящих страниц, через запятую.
&showLog false Показывать дополнительную информацию о работе сниппета. Только для авторизованных в контексте «mgr».
&limit 10 Лимит выборки результатов.
&offset 0 Пропуск результатов с начала выборки.
&depth 10 Глубина поиска ресурсов от каждого родителя.
&outputSeparator \n Необязательная строка для разделения результатов работы.
&toPlaceholder Если не пусто, сниппет сохранит все данные в плейсхолдер с этим именем, вместо вывода не экран.
&parents Список категорий, через запятую, для ограничения вывода результатов.
&includeTVs Список ТВ параметров для выборки, через запятую. Например: «action, time» дадут плейсхолдеры [[+action]] и [[+time]] .
&tvPrefix Префикс для ТВ плейсхолдеров, например «tv.».
&where Дополнительные параметры выборки, закодированные в JSON.
&showUnpublished false Показывать неопубликованные ресурсы.
&showDeleted false Показывать удалённые ресурсы.
&showHidden true Показывать ресурсы, скрытые в меню.
&hideContainers false Скрывать ресурсы-контейнеры.
&introCutBefore 50 Укажите количество символов для вывода в плейсхолдере [[+intro]] перед первым совпадением в тексте.
&introCutAfter 250 Укажите количество символов для вывода в плейсхолдере [[+intro]] после первого совпадения в тексте.
&htagOpen Открывающий тег для подсветки найденных результатов в [[+intro]] .
&htagClose Закрывающий тег для подсветки найденных результатов в [[+intro]] .
&parentsVar parents Имя переменной для дополнительной фильтрации по родителям. Может быть передано через $_REQUEST.
&queryVar query Имя переменной для получения поискового запроса из $_REQUEST.
&tplWrapper Чанк-обёртка, для заворачивания всех результатов. Понимает плейсхолдеры: [[+output]] , [[+total]] , [[+query]] и [[+parents]] .
&wrapIfEmpty false Включает вывод чанка-обертки &tplWrapper даже если результатов нет.
&forceSearch true Обязательный поиск для вывода результатов. Если нет поискового запроса — ничего не выводится.
&minQuery 3 Минимальная длина поискового запроса.
&fields Переопределение системной настройки веса для проиндексированных полей, через запятую: &fields=`pagetitle: 5,content: 3,comment: 1`. По умолчанию используется mse2_index_fields .
&showSearchLog false Показывать подробную информацию о начислении баллов поиска ресурсам при включенном &showLog.

#

Лексиконы

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

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

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

Форма поиска

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

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

Примеры

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

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

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

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

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

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

Благодарность автору

Если по какой-либо причине вы хотите поблагодарить автора данного ресурса, вы можете это сделать одним из удобных для вас способов ниже.

Один из самых популярных способов поблагодарить автора, воспользоваться сервисом Яндекс.Деньги.

Источник

Поиск по сайту на MODX Revolution — mSearch

Почти любой сайт должен иметь такой функционал как поиск. Во всех CMS есть для этого дополнения или компоненты, не стал исключением и MODX Revo. Самым популярным пакетом в MODX для этих целей является «SimpleSearch». Несмотря на это мы воспользуеся другим компонентом — «mSearch». Его преимущество заключается в учитывании при поиске морфологии русского языка, а так же в повышенной скорости работы.

К сожалению, у этого пакета есть и недостатки:

  • Во-первых, его нет в официальном репозитории MODX. Тем не менее, его можно без проблем найти через поисковые системы, либо скачать по этой ссылке.
  • Во-вторых, автор прекратил его поддержку, переписал компонент заново, назвал его «mSearch2» и теперь он платный. Тем не менее, я настроил старую версию и она прекрасно работает.
  • В-третьих, у него есть проблемы с выводом TV параметров при выдаче результатов, но мы обойдём это хитрым способом.

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

Устанавливаем дополнения «mSearch» и «pdoTools». Второе дополнение есть в официальном репозитории MODX. Из него нам потребуется сниппет «pdoResources», хотя вполне можно вместо него использовать и «getResources». Это на ваше усмотрение.

Затем создадим страницу (ресурс), которая будет отвечать за вывод результатов поиска. Шаблон для этого ресурса в большинстве случаев подходит стандартный, требование одно — основное место в нём должно выделяться под содержимое ресурса. В содержимом страницы вызываем сниппет «pdoResources», в параметре к которому передаём id найденных ресурсов сниппетом «mSearch»:

В этом примере мы немного извратились. По идее, сам сниппет поиска может выводить результаты, но на деле он некорректно отображает связанные с ресурсом TV параметры. Точнее он их отображает только для первого найденного ресурса. Чтобы обойти это мы настроили «mSearch» так, чтобы он выдал только id найденных ресурсов, а их вывод и оформление мы осуществляем через «pdoResources».

Используемые плейсхолдеры и параметры:

  • [[+mse.query]] — плейсхолдер выводит строку запроса.
  • [[+total]] — выводит количество найденых ресурсов.
  • [[+mse.error]] — выводит ошибки, например при отсутствии найденных ресурсов выведет об этом сообщение.
  • &templates=`4` — параметр задаёт поиск только среди ресурсов с этими номерами шаблонов, через запятую. Если требуется искать по всему сайту, указываем все шаблоны. Так же вместо этого параметра можно использовать &parents , в котором потребуется указать список ресурсов-родителей, в которых будет производиться поиск.
  • &returnIds=`1` — указывает на то, что требуется вернуть id найденных страниц.
  • &tpl=`articleTpl` — параметр сниппета «pdoResources» — указывает чанк для оформления результата вывода одной страницы. В нём можно вывести название ресурса, TV параметры и.т.п. Например:

Создание формы поиска

Осталось передать созданной странице параметр, через который сниппет «mSearch» узнает, что именно надо искать. Для этого в любом месте сайта располагаем следующий код:

Как вы наверно догадались, [[

20]] это id страницы, которую мы создали на предыдущем шаге. Вся задача этой формы — отправить ей методом «GET» или «POST» параметр «query». Можно приступать к тестированию, так как основная часть поиска на MODX закончена.

Вывод результатов с постраничной пагинацией

Если в выдаче очень много ресурсов, то целесообразно использовать постраничный вывод. Для этого можно использовать сниппет «getPage» или «pdoPage». Последний входит в состав дополнения «pdoTools», поэтому пример именно с ним:

Форма поиска должна обязательно передавать параметр «query» методом «GET».

Источник

FENOM’енальный курс. Часть 14. Поиск по сайту на mSearch2 на Fenom.

Приступим с вами к уже знакомой нам части разработки – реализации поиска по сайту, но в этот раз на основе компонента mSearch2. Почитать как мы это делали ранее на основе SimpleSearch вы можете в статье “Поиск по блогу с помощью SimpleSearch”.

Я нашел 3 места, где у нас должна выводиться форма поиска, за которую отвечает сниппет mSearchForm:

  • В шапке сайта
  • Блок меню в мобильной версии
  • Страница поиска

Так как у нас нет в комплекте шаблона страницы поиска, предлагаю вам пока скопировать шаблон текстовой страницы. Начнем мы с вами с того, что создадим ресурс страницы поиска. Посмотрите, как это сделано у меня:

Я думаю, что мы пойдем с вами сверху вниз и сначала выведем форму в шапке сайта:

Параметр pageId – это идентификатор ресурса, на котором мы будем выводить результаты поиска. Чанк search_form_desktop.tpl:

Вызов mSearchForm в блоке мобильного меню:

Чанк search_form_mobile.tpl:

Вызов в шаблоне поиска по сайту:

Чанк search_form_page.tpl:

В данных чанках мы с вами использовали новую Fenom-конструкцию <$.get.query>, которая позволяет нам получать элементы массива GET. Аналогично можно получать элементы массивов REQUEST, POST, SESSION.

Отлично! Формы мы вывели. Теперь нам нужно вывести обработчик запроса. Поиск, я думаю, мы с вами будем производить только по товарам. Сниппет mSearch2 будет возвращать только id найденных ресурсов, а их мы будем передавать в сниппет msProducts. В итоге у нас получится примерно такой шаблон страницы поиска по сайту:

Теперь можно проверить функциональность нашего поиска по сайту. Надеюсь, что у вас так же, как и у меня все получилось с первого раза.

Петропавловский Артем

автор

Основатель Dart Agency, web-разработчик, блоггер.

Источник

Читайте также:  Что делать если компьютер не работает дисковод
Оцените статью