MODX. Поиск на сайте с использованием AdvSearch

AdvSearch — поиск для MODX, немного более функциональный, при сравнении с SimpleSearch. Главный недостаток дополнения на текущий момент — устаревшая документация. Для полноценной работы компонента на сервере должен быть установлен Zend Framework, большинство современных хостингов устанавливают его по умолчанию. Если подыскиваете себе удобный хостинг с минимумом проблем с настройкой, рекомендую использовать Timeweb.

Настройка поиска с использованием AdvSearch:

  1. Установить дополнение AdvSearch;
  2. Создать новый ресурс, страницу на которой будет отображаться результат поиска:

    Запомните ID созданного ресурса — он нам еще понадобится.

    • Имя: Результаты поиска;
    • Псевдоним: search;
    • Галки: «не показывать в меню» и «Оубликован»;
    • Убрать галки: «Доступен для поиска», «Кешируемый»;
    • В поле содержимого вставляем: 
    [[!AdvSearch]]
  3. В шаблон, на место где должен находиться поиск вставляем следующий код:
    • [[!AdvSearchForm? &landing=`1` &tpl=`tpl.search`]]
    • &tpl: шаблон формы поиска.
    • &landing: ID созданной страницы поиска;
  4. Создаем чанк tpl.search. Код можно использовать такой:

    <div class="search">
             <form id="[[+advsearch.asId]]_advsea-form" method="[[+advsearch.method]]" action="[[~[[+advsearch.landing]]]]">
                    <input type="hidden" name="id" value="[[+advsearch.landing]]" />
                    <input type="hidden" name="asId" value="[[+advsearch.asId]]" />
                    [[+advsearch.helpLink]]<input type="text" id="[[+advsearch.asId]]_advsea-search" name="[[+advsearch.searchIndex]]"  value="[[+advsearch.searchValue]]"  placeholder="Что ищем?">
                    [[+advsearch.liveSearch:isnot=`1`:then=`<input type="submit" id="[[+advsearch.asId]]_advsea-submit"  name="sub" value="[[%advsearch.search? &namespace=`advsearch` &topic=`default`]]" />`:else`=``]]  
             </form>
    </div>
    [[+advsearch.resultsWindow]]

 Теперь поиск должен появиться на сайте.

Параметры сниппета AdvSearchForm

Дополнительные функции

Название По умолчанию Описание
clearDefault 1 Отключает текст по умолчанию. Поставьте 0 если вам не нравится отсутствие текста.
help 1 Добавляет ссылку помощи рядом с формой. Установите 1 для отображения и 0 для ее отсутствия. 

Настройка

Название По умолчанию Описание
asId as0 Уникальный ID для экземпляра AdvSearch. Любая комбинация символов az, подчеркивание и цифры 0-9. Чувствительный.
landing   Ресурс, на который ссылается экземпляр AdvSearch, на котором будут отображаться результаты поиска.
method GET Выбор метода, GET или POST.
searchIndex search Имя параметра REQUEST, который будет использоваться поиском.
toPlaceholder   Если указан параметр, все данные будут сохраняться в плейсхолдере с этим именем.
tpl SearchForm Блок, с шаблоном для отображения формы поиска.

Управление файлами

Название По умолчанию Описание
addJs 1 Установите 1, если хотите включить файл advsearchform.min.js, и 0, если нет
addCss 1 Установите 1, если хотите включить файл advsearch.css, и 0, если нет
addJQuery 1 Установите 1, если хотите включить библиотеку jQuery в заголовке ваших страниц автоматически
jsJQuery assets/components/advsearch/js/jquery-1.5.1.min.js Url, где расположена библиотека jquery
jsSearchForm assets/components/advsearch/js/advsearchform.min.js Url (в каталоге assets/), где расположена библиотека js, используемая с формой (help, clearDefault, ...)

Параметры сниппета AdvSearch

Настройка результатов

Название По умолчанию Описание
contexts web Контекст поиска.
fields

pagetitle,
longtitle,
alias,
description,
introtext,
content

Разделенный запятыми список полей доступных в результатах поиска.
hideContainers 0

Поиск по ресурсам контейнерам:

0 — ищет во всех ресурсах.

1 — не ищет в ресурсах помеченных как контейнер.

hideMenu 2

Нужно ли показывать Ресурсы, на которых установлен флаг hidemenu:

0 —  показывает только видимые ресурсы.

1 —  показывает только скрытые ресурсы. 

2 —  показывает все.

ids   Разделенный запятыми список ID которыми ограничивается область поиска. Используйте GetIds аддон для указания сложносоставных списков ID. 
parents   Разделенный запятыми список  ID родительских контейнеров, по потомкам которых должен происходить поиск.
includeTVs   Разделенный запятыми список дополнительных полей (TV), значения которых должны отображаться в результатах поиска.
queryHook   Имя сниппета изменяющего стандартный запрос.
withFields

pagetitle,
longtitle,
alias,
description,
introtext,
content

Разделенный запятыми список полей участвующих в поиске.
withTVs   Разделенный запятыми список дополнительных полей (TV), которые должны участвовать в поиске.

Организация результатов поиска

Название По умолчанию Описание
fieldPotency createdon Оценка и сортировка результатов. Разделенный запятыми список пар «поле: вес».
perPage 10 Количество результатов отображаемых на странице
sortby createdon DESC Разделенный запятыми список пар для сортировки. «поле [ASC]»
showExtract 1:content

Выделяет ключевое слово в результатах поиска. Записывается как «n: список полей, разделенных запятыми».

n — максимальное количество выписок по результату. Поисковый запрос выполняется в конкатенированных полях.

Оформление страницы с результатами

Название По умолчанию Описание
containerTpl SearchResults Чанк, который будет использоваться для обертывания всех результатов поиска, разбивки на страницы и сообщений.
tpl AdvSearchResult Чанк, который будет использоваться для отображения содержимого каждого результата поиска.
pagingType 1 Тип разбивки на страницы. тип 0 или 1
pageTpl PageLink Чанк, используемый для ссылки на страницы.
paging1Tpl Paging1 Чанк, используемый для пагинации типа 1
paging0Tpl Paging0 Чанк, используемый для пагинации типа 0
currentPageTpl CurrentPageLink Чанк, используемый для выбранной ссылки на страницы. (Тип пагинации 0)
pagingSeparator | Разделитель используемый между ссылками на страницы в пагинации. (Тип пагинации 0)
extractEllipsis ... Строка, используемая для переноса результатов пагинации.
extractLength 200 Количество символов для вывода содержимого в каждом результате поиска.
extractTpl Extract Чанк, который будет использоваться для обертывания каждого переноса.
highlightClass advsea-highlight Имя класса CSS для добавления к подсвеченным условиям поиска в результатах.
highlightResults 1 Выделять или нет поисковый запрос в тексте результата.
highlightTag span Тег html, в который будет обернут выделенный запрос в результатах поиска.
placeholderPrefix advsearch (since 2.0.0) Префикс для плейсхолдеров.
toPlaceholder   Если указан, все результаты будут записаны в плейсхолдер с данным именем.

Настройки AdvSearch

Название По умолчанию Описание
asId

as0

Уникальный идентификатор для экземпляра AdvSearch. Любая комбинация символов az, подчеркивание и цифры 0-9. Чувствительный.
engine mysql Поисковый алгоритм, выбирается среди «mysql», «zend» или «all». Режим «Zend» или «all» запрашивает репозиторий с индексированными ресурсами.
init none Определяет, отображает ли поиск все результаты или нет, когда страница загружается в первый раз. 'all' или 'none'
maxWords 20 Максимальное количество слов для включения в поиск.
method GET Отправлять ли поиск через метод POST или GET.
minChars 3 Минимальное количество символов, требуемое для того, чтобы слово было действительным для поиска.
offsetIndex offset Имя параметра REQUEST, используемого для пагинации на странице.
output html Тип для вывода данных. Варианты «json» и «html». Json предоставляет результаты как объект json.
searchIndex search Имя параметра REQUEST, который будет использоваться поиском.
urlScheme -1 Указывает, в каком формате создается URL. -1, 0, 1, полный, abs, http, https

Пользовательские установки

Название По умолчанию Описание
docindexPath docindex/ путь до assets/files/ где расположены Lucene индексы документов
libraryPath libraries/ путь до assets/ где расположена Zend библиотека

Официальная документация