Поиск по сайту на MODX Revolution. mSearch. Поиск modx
tpl | SearchResult | Чанк который будет использоваться для отображения каждого результата. |
containerTpl | SearchResults | Чанк который будет использоваться в качестве обертки результатов поиска, в нем можно указать расположение пагинации и дополнительных сообщений. |
useAllWords | 0 | Если указано true, будут найдены только те результаты, которые полностью совпадают с указанными словами. |
maxWords | 7 | Максимальное количество слов допустимое в поиске. Применяется, если значение useAllWords установлено в off. |
minChars | 3 | Минимальное количество символов для поиска. |
searchStyle | partial | Стиль поиска: partial — использует оператор LIKE; match — основывается на релевантности. |
andTerms | 1 | Добавлять или нет логическое AND между словами. |
matchWildcard | 1 | Активирует подстановочный поиск. Надо установить false чтобы поиск выполнялся по точному совпадению. |
docFields | pagetitle, longtitle, alias, description, introtext, content | Разделенный запятыми список полей ресурса участвующих в поиске. |
fieldPotency |
Оценка и сортировка результатов. Например: &fieldPotency=`pagetitle:10,content:1` Допустим при запросе «сайт» вылезает 2 документа. У первого слово встречается 1 раз в заголовке и 1 раз в тексте, у второго 10 раз в тексте. Соответственно второй документ будет предпочтительнее. Это свойство позволяет задавать приоритет для полей (На момент написания статьи есть баг, свойство правильно обрабатывает только то количество страниц, которое указано в perPage) |
|
perPage | 10 | Количество результатов поиска выводящихся на странице. |
showExtract | 1 | Выводить или нет анонс контента для каждого результата. |
extractSource | content | Позволяет пользователю определить, откуда извлекается результат. Если значение этого параметра — поле ресурса (включая TV, если includeTVs установлено), тогда это поле ресурса используется для выделения. В противном случае, параметр берется из имени запущенного сниппета. Сниппет передает ресурсу массив как параметры. Если сниппет с данным именем не найден, тогда параметр выделения остается пустым. |
extractLength | 200 | Количество символов, для отображения каждого результата поиска. |
extractEllipsis | ... | Строка, использующаяся для сокращения результата поиска. |
includeTVs | 0 | Надо проставить 1, если необходимо подключить дополнительные поля(TV), для доступа в результатах поиска. Включение этой опции может сильно замедлить время отображения результатов. |
includeTVList | Необязательный, разделенный запятыми список имен дополнительных полей, которые должны включаться при обработкее поиска, если includeTVs установлен 1. | |
process TVs | 0 | Указывается если значения дополнительных полей (TV) должны быть отображены так же как они отображались бы на странице ресурса. Некоторые особенности: Дополнительные поля могут быть доступны по их именам . По умолчанию SimpleSearch не использует префиксы, например не будет отображен. Дополнительные поля начинают индексироваться в процессе Solr поиска, поэтому здесь нет необходимости их индексации. |
highlightResults | 1 | Выделять или нет найденный термин в результатах поиска. |
highlightClass | sisea-highlight | Имя CSS класса, которое добавляется к тегу оборачивающему найденный термин в результате поиска. |
highlightTag | span | Html тег, оборачивающий найденный термин в результате поиска. |
pageTpl | PageLink | Чанк для ссылки пагинации. |
currentPageTpl | CurrentPageLink | Чанк использующийся для текущей страницы пагинации. |
pagingSeparator | | | Разделитель использующийся между ссылками пагинации. |
ids | Разделенный запятыми список ID для ограничения поиска. | |
idType | parents | Ограничение типа для параметра ID. Если parents, в поиск будут добавляться все дочерние ресурсы с ID включенными в ids параметрами. Если documents, будут использоваться только указанные ID. |
exclude | Разделенный запятыми список ID ресурсов исключенных из поиска. | |
depth | 10 | Если в idType установлено parents, устанавливает глубину поиска вниз по дереву ресурсов. |
hideMenu | 2 | Надо ли отображать ресурсы у которых проставлен параметр скрывать из меню (hidemenu): 0 — показывать только видимые ресурсы; 1 — показывать только скрытые; 2 — показывать все. |
contexts | текущий контекст | Контекст поиска. |
searchIndex | search | Имя REQUEST параметра которое будет использовать поиск. |
offsetIndex | sisea_offset | Имя REQUEST параметра который используется для изменения страницы пагинации. |
placeholderPrefix | sisea. | Префикс для плейсхолдера, устанавливаемого этим сниппетом (полезно если на сайте несколько поисков). |
toPlaceholder | Если установлено значение, все результаты будут записываться в плейсхолдер с указанным именем. | |
urlScheme | URL схема которую надо использовать: http, https, full, abs, relative, etc. Больше подробностей в документации MODX $modx->makeUrl(). Используется при генерации ссылок пагинации. | |
customPackages | Устанавливается для кастомизации поиска путем загрузки их пакетов. | |
postHooks | Разделенный запятыми список постХуков, которые должны запуститься, для того чтобы добавить фасетный поиск к результатам. | |
activeFacet | Текущий активный фасет. Оставьте поле пустым, если хотите показывать результат в не стандартном фасете, полученном через postHook. | |
facetLimit | 5 | Число не активных фасетов результатов, отображаемых на основной странице результатов. |
sortBy | Разделенный запятыми список полей ресурсов для сортировки результатов. Оставьте пустым для сортировки по релевантности. | |
sortDir | DESC | Разделенный запятыми список направлений сортировки результатов. Должно соответствовать количеству элементов в параметре sortBy. |
noResultsTpl | Чанк использующийся когда поиск не дал никаких результатов. |
www.riwkus.pro
Modx поиск по сайту с помощью SimpleSearch
07 окт. 2017
Всем добрый день.
Сегодня хочу вам рассказать о том, как я организовал поиск на своем сайте.
Сделал я это, с помощью плагина SimpleSearch. Так что сразу заходим в установщик приложений, ищем этот плагин и устанавливаем.
SimpleSearch Modx Revo
Необходимо создать новую страницу для вывода результатов поиска. Я назвал ее "Результаты поиска", убрал галочку "Доступен для поиска" и поставил галку "Не показывать в меню". В содержимое страницы вставил следующее:
[[!SimpleSearch]]Дальше необходимо определиться где будет располагаться наша форма для ввода поискового запроса. В моем случае я регил сделать ее в правом сайдбаре. Для того чтобы вывести ее открываем чанк(или шаблон) отвечающий за эту часть шаблона и в нужном месте вставляем следующее:
[[!SimpleSearchForm? &landing=`146` &tpl=`search`]]Разберем данную запись:
&landing=`146`- 146 здесь это id страницы с результатами поиска которую мы создали в самом начале(у вас id будет отличатся)
&tpl=`search`- название чанка отвечающего за внешний вид формы
Далее открываем чанк search и вставляем в него следующий код:
<form action="[[~[[+landing]]]]" method="[[+method]]"> <fieldset> <input type="text" name="[[+searchIndex]]" value="[[+searchValue]]" placeholder="Введите Ваш запрос"/> <input type="hidden" name="id" value="[[+landing]]" /> <input type="submit" value="[[%sisea.search? &namespace=`sisea` &topic=`default`]]" /> </fieldset></form>
Основные параметры и чанки SimpleSearch
Чанки:
- tpl - вывод каждого отдельного пункта результата поиска
- containerTpl - отвечает за обертку всех результатов поиска
- pageTpl - отвечает за вывод отдельной кнопки страницы пагинации
- currentPageTpl - для управления кнопкой в пагинации активной страницы
- noResultsTpl - когда нет результатов поиска
Параметры:
- depth - глубина поиска (стандартно - 10)
- hideMenu - скрыть или показать ресурсы, с галочкой- не показывать в меню (0 -только видимые ресурсы, 1 - только скрытые, 2 - все показывает)
- docFields - области для поиска документов (pagetitle,longtitle,alias,description,introtext,content)
- perPage - количество результатов поиска на странице (стандартно 10)
- extractLength - кол-во символов для извлечения каждого результата поиска, обычно 200
- includeTVs - включить в поиск TV (если много тв, то замедляет поиск)
- pagingSeparator - какой сепаратор сипользовать для разделения плагинации, обычно - палочка
- ids - разделенный запятыми список идентификаторов документов, что бы искать только в них
- idType - оганичение для верхнего параметра - родители или дети (parents, documents)
- exclude - список id документов, через запятую, которые надо исключить для поиска
- contexts - контексты для поиска
- sortBy - разделенный запятыми список полей ресурсов для сортировки
- sortDir - разделенный запятыми список направлений (кол-во должно совпадать с кол-вом в верхнем параметре)
На этом все.
Вот так вот просто организовать поиск по сайту на этой замечательной CMS.
Удачи всем. Подписывайтесь на обновления блога в форме ниже!)
Если статья понравилась, то поделитесь ей в социальных сетях:
foxtan.ru
Создаём поиск по сайту на MODX Revo при помощи компонента mSearch
03 июл 2014 г. в 14:15
Почти любой сайт должен иметь такой функционал как поиск. Во всех CMS есть для этого дополнения или компоненты, не стал исключением и MODX Revo. Самым популярным пакетом в MODX для этих целей является «SimpleSearch». Несмотря на это мы воспользуеся другим компонентом — «mSearch». Его преимущество заключается в учитывании при поиске морфологии русского языка, а так же в повышенной скорости работы.
К сожалению, у этого пакета есть и недостатки:
- Во-первых, его нет в официальном репозитории MODX. Тем не менее, его можно без проблем найти через поисковые системы, либо скачать по этой ссылке.
- Во-вторых, автор прекратил его поддержку, переписал компонент заново, назвал его «mSearch3» и теперь он платный. Тем не менее, я настроил старую версию и она прекрасно работает.
- В-третьих, у него есть проблемы с выводом 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» узнает, что именно надо искать. Для этого в любом месте сайта располагаем следующий код:
<form action="[[++site_url]][[~20]]" method="GET"> <input type="text" name="query" maxlength="40" value="" placeholder="Найти" /> <input type="submit" value="Найти" /> </form>Как вы наверно догадались, [[~20]] это id страницы, которую мы создали на предыдущем шаге. Вся задача этой формы — отправить ей методом «GET» или «POST» параметр «query». Можно приступать к тестированию, так как основная часть поиска на MODX закончена.
Вывод результатов с постраничной пагинацией
Если в выдаче очень много ресурсов, то целесообразно использовать постраничный вывод. Для этого можно использовать сниппет «getPage» или «pdoPage». Последний входит в состав дополнения «pdoTools», поэтому пример именно с ним:
[[!pdoPage? &elementClass=`modSnippet` &element=`pdoResources` &parents=`0` &resources=`[[!mSearch? &templates=`4` &returnIds=`1`]]` &limit=`5` &includeTVs=`img-news,tags,HitsPage` &tpl=`articleTpl` ]] <div> [[!+page.nav]] </div>Форма поиска должна обязательно передавать параметр «query» методом «GET».
realadmin.ru