MODX. Поиск на сайте с использованием AdvSearch
Отредактировано: 03 Июля 2023
AdvSearch — поиск для MODX, немного более функциональный, при сравнении с SimpleSearch. Главный недостаток дополнения на текущий момент — устаревшая документация. Для полноценной работы компонента на сервере должен быть установлен Zend Framework, большинство современных хостингов устанавливают его по умолчанию. Если подыскиваете себе удобный хостинг с минимумом проблем с настройкой, рекомендую использовать Timeweb.
Настройка поиска с использованием AdvSearch:
- Установить дополнение AdvSearch;
- Создать новый ресурс, страницу на которой будет отображаться результат поиска:
Запомните ID созданного ресурса — он нам еще понадобится.
- Имя: Результаты поиска;
- Псевдоним: search;
- Галки: «не показывать в меню» и «Оубликован»;
- Убрать галки: «Доступен для поиска», «Кешируемый»;
- В поле содержимого вставляем:
[[!AdvSearch]] - В шаблон, на место где должен находиться поиск вставляем следующий код:
-
[[!AdvSearchForm? &landing=`1` &tpl=`tpl.search`]] - &tpl: шаблон формы поиска.
- &landing: ID созданной страницы поиска;
-
-
Создаем чанк 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, |
Разделенный запятыми список полей доступных в результатах поиска. |
| hideContainers | 0 |
Поиск по ресурсам контейнерам: 0 — ищет во всех ресурсах. 1 — не ищет в ресурсах помеченных как контейнер. |
| hideMenu | 2 |
Нужно ли показывать Ресурсы, на которых установлен флаг hidemenu: 0 — показывает только видимые ресурсы. 1 — показывает только скрытые ресурсы. 2 — показывает все. |
| ids | Разделенный запятыми список ID которыми ограничивается область поиска. Используйте GetIds аддон для указания сложносоставных списков ID. | |
| parents | Разделенный запятыми список ID родительских контейнеров, по потомкам которых должен происходить поиск. | |
| includeTVs | Разделенный запятыми список дополнительных полей (TV), значения которых должны отображаться в результатах поиска. | |
| queryHook | Имя сниппета изменяющего стандартный запрос. | |
| withFields |
pagetitle, |
Разделенный запятыми список полей участвующих в поиске. |
| 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 библиотека |