- Главная
- Документация
- AjaxSearch
- 51833
- Июль 2014
Сниппет AjaxSearch служит для организации поиска по сайту. Существует два режима работы сниппета: с применением Ajax (без перезагрузки страницы) и без применения Ajax (с перезагрузкой страницы). Вывод результатов поиска можно сделать как на той же странице, где расположена форма поиска, так и на целевой странице, предназначенной для отображения результатов. Можно расположить несколько форм поиска на одной странице. Сниппет позволяет оставлять комментарии о полученных результатах поиска, сортировать найденные документы по категориям и рангу и т.д. Сниппет поставляется в комплекте с MODx Evolution.
Основные параметры
Значение по умолчанию: default
Примечание: Конфигурационные файлы должны вызываться в виде: <config_name>.config.php. Устанавливаются в папку configs или другую папку через @FILE
Пример:
&config=`example`
Значение по умолчанию: 0
Примечание:
0 : Режим не активирован.
Файл отчета (ajaxSearch/debug/ajaxSearch_log.txt):
1 : Parameters, search context and sql query logged.
2 : Parameters, search context, sql query AND templates logged
3 : Parameters, search context, sql query, templates AND Results logged
Пример:
&debug=`1`
Значение по умолчанию: язык, установленный для MODx
Примечание: Вы можете самостоятельно добавлять языковые файлы в папку /ajaxSearch/lang/
Пример:
&language=`english`
Значение по умолчанию: 1
Примечание: 1 - использовать | 0 - не использовать
Пример:
&ajaxSearch=`0`
Значение по умолчанию: oneword
Примечание:
exactphrase: предоставляет документы, которые содержат точную фразу
allwords: предоставляет документы, которые содержат все слова
nowords: предоставляет документы, которые не содержат указанных слов
oneword: предоставляет документы, которые содержат хотя бы одно слово
Пример:
&advSearch=`exactphrase`
Значение по умолчанию: нет
Примечание: Необходим при многократном (более одного) вызове AjaxSearch на одной странице. Может состоять из: латинских букв (с учетом регистра), цифр, знака подчеркивания.
ВАЖНО! При многократном вызове сниппета на странице в режиме &ajaxSearch=`1` у первого сниппета &asId не используется.
Пример:
&asId=`abc123`
Значение по умолчанию: 60
Примечание: при значении 0 - в течении неограниченного времени.
Пример:
&timeLimit=`30`
Значение по умолчанию: content|tv
Примечание: Вы можете использовать ключевые слова:
"content" для site_content, "tv" для site_tmplvar_contentvalues, "jot" для jot_content, "maxigallery" для maxigallery.
Формат: keywords:table fields
По умолчанию: content|tv что означает: content:pagetitle,longtitle,description,alias,in trotext,menutitle,content | tv:tv_value
Примеры:
content:null|maxigallery - для поиска только в maxigallery.
content:pagetitle,introtext,content|tv:tv_value|maxigallery:gal_title - поиск по всем основным полям
Пример:
&whereSearch=`content:null|maxigallery`
Значение по умолчанию: все TV-параметры
Примечание:
+: - использовать только эти TV-параметры
-: - исключить эти TV-параметры из поиска
&withTvs=`tv1,tv2,tv3` // поиск по указанным параметрам
&withTvs=`+:tv1,tv2,tv3` // поиск по указанным параметрам
&withTvs=`+` // поиск по всем параметрам
&withTvs=`-:tv1,tv2,tv3` // поиск по всем параметрам кроме этих
Пример:
&withTvs=`tv1,tv2,tv3`
Значение по умолчанию: все параметры
Примечание:
+: - использовать только эти параметры
-: - исключить эти параметры из поиска
&withTvs=`tv1,tv2,tv3` // поиск по указанным параметрам
&tvPhx=`+:tv1,tv2,tv3` // поиск по указанным параметрам
&tvPhx=`+` // поиск по всем параметрам
&tvPhx=`-:tv1,tv2,tv3` // поиск по всем параметрам кроме этих
В коде сниппета другое описание:
&tvPhx - display and set placeHolders for TV (template variables)
0 : disallow the feature
1 : allow the display of all Modx TVs of the document found (default)
'tb_alias:display_function_name[,[tb_alias:display_function_name]*]' : set up placeholders for custom joined tables
Default: 1 - tvPhx allowed for TV only
Пример:
&tvPhx=`tv1,tv2,tv3`
Значение по умолчанию: нет
Примечание: Необходимо создать TV параметр с названиями категорий и указать его при вызове сниппета в качестве значения &category.
Пример:
&category=`tv1`
Значение по умолчанию: unmixed
Примечание: mixed -смешивать, unmixed - не смешивать
Пример:
&display=`mixed`
Значение по умолчанию: publishedon, pagetitle (сортировка по дате опубликования, затем по заголовоку документа)
Примечание:
Пример:
&order=`pagetitle DESC, publishedon`
Значение по умолчанию: pagetitle:100,extract
Примечание: Результаты с одинаковым рангом будут отсортированы согласно значению параметра &order
Пример:
&rank=`pagetitle:100,alias:10,extract`
Значение по умолчанию: 5
Примечание:
Пример:
&maxWords=`7`
Значение по умолчанию: 3
Примечание: Не применяется при &advSearch = 'allwords', 'oneword' или 'nowords'
Возможно при &advSearch = 'exactphrase' с учетом пробелов
В AjaxSearch 1.9.3 число от 1 до 100.
Пример:
&minChars=`5`
Значение по умолчанию: 1
Примечание: В версии 1.8.4 применяется параметр &AS_showForm
Пример:
&showInputForm=`0`
Значение по умолчанию: 1
Примечание: фраза "Пожалуйста, введите поисковый запрос, чтобы начать поиск" под окном поиска (отображается по умолчанию)
Пример:
&showIntro=`0`
Значение по умолчанию: 1:content,description,introtext,tv_content
Примечание:
n: максимальное количество выдержек
1:content,description,introtext,tv_value - одна выдержка
Пример:
&extract=`99:content`
Значение по умолчанию: 200
Примечание:
Пример:
&extractLength=`300`
Значение по умолчанию: ... (многоточие)
Примечание:
Пример:
&extractEllips=`***`
Значение по умолчанию: <br />
Примечание:
Пример:
&extractSeparator=`<hr />`
Значение по умолчанию: 'd/m/y : H:i:s' - результат: 21/01/08 : 23:09:22
Примечание:
Пример:
&formatDate=`%d.%m.%Y`
&highlightResult - Создайте ссылки так, чтобы поисковые термины выделялись, при переходе на страницу
Значение по умолчанию: 1
Примечание: Необходимо использовать плагин highligth
Пример:
&highlightResult=`0`
Значение по умолчанию: 1
Примечание:
0: Без постраничного разбиения
1: Previous - X-Y /Z - Next
2: X-Y/Z - больше 10 результатов
Пример:
&pagingType=`0`
Значение по умолчанию: | (вертикальная черта)
Примечание:
Пример:
&pageLinkSeparator=`-`
Значение по умолчанию: 1
Примечание: В версии 1.8.4: &AS_showResults
Пример:
&showResults=`0`
Значение по умолчанию: по всем опубликованным документам
Примечание:
&parents=`in:2,3` поиск только в дочерних ресурсах указанных папок.
&parents=`not in:2,3` поиск по всем документам кроме дочерних ресурсов папок с идентификаторами 2 и 3.
Глубина задается параметром &depth
Пример:
&parents=`in:2,3`
Значение по умолчанию: 10
Примечание: должен использоваться с &parents
Пример:
&depth=`5`
Значение по умолчанию: по всем опубликованным документам
Примечание:
&documents = `in:28,29,30,31` поиск в документах 28,29,30,31
&documents = `not in:28,29,30,31` поиск во всех документах кроме 28,29,30,31
Пример:
&documents=`in:28,29,30,31`
Значение по умолчанию: 2
Примечание:
0: поиск только в документах, видимых в меню
1: поиск только в документах, не видимых в меню
2: поиск в видимых и невидимых в меню документах
Пример:
&hideMenu=`0`
Значение по умолчанию: 1
Примечание:
0: искать в документе с типом ресурса Веб-страница и Веб-ссылка
1: искать в документе с типом ресурса Веб-страница
Пример:
&hideLink=`0`
Значение по умолчанию:
Примечание:
Аналогично параметру filter для Ditto 2.1.
'#' Метасимвол заменяется строкой поиска, предоставляемого веб-пользователем при использовании параметра фильтра. AdvSearch параметр также принимается во внимание. Если advSearch = 'oneword', 'nowords','allwords' тогда # может применяться вместо множественного фильтра.
Возможен фильтр по TV-параметрам.
&filter=`pagetitle,#,8` при поисковом запросе `school child` при advSearch='oneword' эквивалентно &filter=`pagetitle,school,8|pagetitle,child,8`
&filter=`articleTags,вулкан,7` покажет документы с `вулкан`. Документы отфильтруются по TV-параметру 'articleTags'
Пример:
&filter=`pagetitle,#,8`
Значение по умолчанию: 0
Примечание: 0 - стандартный вывод, результаты отображаются под формой поиска
1 - пользовательский вывод с использованием плейсхолдеров [+as.inputForm+] и [+as.results+]
Пример:
&output=`1`
Значение по умолчанию: defaultStripInput
Примечание:
Пример:
&stripInput=``
Значение по умолчанию: defaultStripOutput
Примечание: Before to extract the relevant piece of text around the search term, the document is parsed. By definig a stripOutput function the user could change the output
Пример:
&stripOutput=``
Значение по умолчанию:
Примечание: Breadcrumbs is the default function provided for the "content" table. The function name could be followed by some parameter initialization
Пример:
&breadcrumbs=`Breadcrumbs,showHomeCrumb: 0,showCrumbsAtHome:1`
Значение по умолчанию: 0
Примечание:
добавить класс "cleardefault" в форму ввода текста и установить этот параметр.
0: не активирован
1: активирован
Пример:
&clearDefault=`1`
Значение по умолчанию: js/clearDefault/clearDefault.js
Примечание:
Пример:
&jsClearDefault=``
Значение по умолчанию: 1
Примечание:
Пример:
&mbstring=`0`
Значение по умолчанию: 0:0:200
Примечание:
level:
0: запретить использование ajaxSearch журнала (по умолчанию)
1: регистрировать неудавшиеся запросы поиска
2: все ajaxSearch запросы заносятся в журнал
comment:
0: комментарии пользователей не допускаются (по умолчанию)
1: комментарии пользователей разрешенены
Purge: число регистраций, до автоматической очистки таблицы
0: неограниченное число регистраций
по умолчанию: 200
&asLog = `x` эквивалентен &asLog = `x:0:200`
&asLog = `x:y` эквивалентен &asLog = `x:y:200`
&asLog = `1:1:500` означает, что возможно 500 неудачных запросов поиска, разрешены комментарии.
Неудавшиеся запросы храниться в таблице ajaxSearch_log
Пример:
&asLog=`1:1:500`
Ajax параметры
Значение по умолчанию: 0
Примечание:
Есть два режима работы формы ajaxSearch:
0 - форма и кнопка отображаются и поиск не начинается до нажатия кнопки пользователем.
1 - поиск запускается автоматически, как только пользователь вводит поисковый запрос
Пример:
&liveSearch=`1`
&ajaxMax - (Ajax параметр) - количество отображаемых результатов без перезагрузки страницы для поиска с Ajax (&ajaxSearch=`1`).
Значение по умолчанию: 6
Примечание:
Пример:
&ajaxMax=`10`
Значение по умолчанию: 0
Примечание:
Пример:
&showMoreResults=`1`
&moreResultsPage - (Ajax параметр) - ID страницы на которой будет вывод всех результатов поиска в режиме с Ajax
Значение по умолчанию: 0
Примечание: эта страница должна содержать другой вызов сниппета для того, чтобы показать результаты
Пример:
&moreResultsPage=`12`
Значение по умолчанию: 1
Примечание:
Пример:
&opacity=`0.9`
Значение по умолчанию: mootools
Примечание:
Пример:
&jscript=`mootools2`
Значение по умолчанию: 1
Примечание:
Пример:
&addJscript=`0`
Значение по умолчанию: manager/media/script/mootools/mootools.js
Примечание:
Пример:
&jsMooTools=``
Значение по умолчанию: js/mootools2/mootools1.2.js
Примечание: mootools2 - альтернатива mootools библиотеке. Mootools1.2.4 уже установлена
Пример:
&jsMooTools2=``
Значение по умолчанию: js/jQuery/jquery.js
Примечание: совместимость с Jquery 1.4.2 библиотекой
Пример:
&jsJquery=``
Не Ajax параметры
&landingPage - ID страницы, на которой будет реализован вывод результатов поиска в режиме без Ajax (&ajaxSearch=`0`)
Значение по умолчанию: нет
Примечание: В версии 1.8.4: &AS_landing
Пример:
&landingPage=`12`
Значение по умолчанию: 0
Примечание: 0 - неограниченное количество результатов
Пример:
&grabMax=`20`
Значение по умолчанию: 0
Примечание:
Пример:
&showPagingAlways=`1`
Шаблоны
Значение по умолчанию: @FILE:assets/snippets/ajaxSearch/templates/ input.tpl.html
Примечание:
Примеры шаблонов находятся в папке: templates/inputTemplates/
Input 1: простой поиск с простым вводом
Input 2: расширенный поиск. Переключатели для выбора варианта поиска
Input 3: поиск по параметрам из выпадающего списка (multi-select)
Параметр расширенного поиска может быть смешан с шаблонами (2 & 3).
При liveSearch кнопка поиска не отображается.
Пример:
&tplInput=`@FILE:assets/snippets/ajaxSearch/templates/inputTemplates/input2.tpl.html`
Значение по умолчанию: @FILE:assets/snippets/ajaxSearch/templates/ grpResult.tpl.html
Примечание:
Пример:
&tplGrpResult=``
Значение по умолчанию: @FILE:assets/snippets/ajaxSearch/templates/ results.tpl.html
Примечание:
Пример:
&tplResults=``
Значение по умолчанию: @FILE:assets/snippets/ajaxSearch/templates/ result.tpl.html
Примечание:
Пример:
&tplResult=``
Значение по умолчанию: @FILE:assets/snippets/ajaxSearch/templates/ comment.tpl.html
Примечание:
Пример:
&tplComment=``
Значение по умолчанию: @FILE:assets/snippets/ajaxSearch/templates/ Paging0.tpl.html
Примечание:
Пример:
&tplPaging0=``
Значение по умолчанию: @FILE:assets/snippets/ajaxSearch/templates/ Paging1.tpl.html
Примечание:
Пример:
&tplPaging1=``
Значение по умолчанию: templates/ ajaxGrpResult.tpl.html
Примечание:
Пример:
&tplAjaxGrpResult=`assets/snippets/ajaxSearch/templates /myAjaxGrpResult.tpl.html`
Значение по умолчанию: templates/ ajaxResults.tpl.html
Примечание:
Пример:
&tplAjaxResults=`@FILE:assets/snippets/ajaxSearch/templates /myAjaxResults.tpl.html`
Значение по умолчанию: templates/ ajaxResult.tpl.html
Примечание:
Пример:
&tplAjaxResult=`@FILE:assets/snippets/ajaxSearch/templates /myAjaxResult.tpl.html`
Значение по умолчанию: @FILE:assets/snippets/ajaxSearch/templates/ Paging2.tpl.html
Примечание:
Пример:
&tplPaging2=``
Плэйсхолдеры используются в шаблонах. Форма поиска тоже доступна как плэйсхолдер [+as.searchString +]. Вставьте этот плэйсхолдер в шаблоне в том месте, где хотите видеть форму поиска.
Любой TV-параметр может превратиться в плэйсхолдер с помощью параметров &withTvs и &tvPhx. Эти плэйсхолдеры можно использовать, например, в шаблонах tplResult и tplAjaxResult :
[+as.****+]
вместо **** укажите имя TV-параметра.
Для того, чтобы проверить, содержит или не содержит TV-параметр какое-нибудь значение, применяется такой плэйсхолдер:
[+as.****Show+]
который принимает значения [0 | 1], и равен 0 когда **** = '', иначе принимает значение 1.
[+as.descriptionShow:is=`1`:then=`
<span class="[+as.descriptionClass+]">[+as.description+]</span>
`+]
Т.е. если поле description не заполнено, то оно не выведется.
Для того, чтобы задать класс элементу, используется плэйсхолдер:
[+as.****Class+]
название класса будет следующим:
1. ajaxSearch_result**** для результатов в не Ajax режиме (&tplResult)
2. AS_ajax_result**** для Ajax режима (&tplAjaxResult)
Например, при &whereSearch="content,tv" можно получить следующие плэйсхолдеры:
[+as.id+]
[+as.publishedon+]
Плэйсхолдеры документа
[+as.pagetitle+], [+as.pagetitleShow+], [+as.pagetitleClass+]
[+as.longtitle+], [+as.longtitleShow+], [+as.longtitleClass+]
[+as.description+], [+as.descriptionShow+], [+as.descriptionClass+]
[+as.alias+], [+as.aliasShow+], [+as.aliasClass+]
[+as.introtext+], [+as.introtextShow+], [+as.introtextClass+]
[+as.menutitle+], [+as.menutitleShow+], [+as.menutitleClass+]
[+as.content+], [+as.contentShow+], [+as.contentClass+]
[+as.breadcrumbs+],[+as.breadcrumbsShow+],[+as.breadcrumbsClass+]
Переменные шаблона
[+as.tv_value+], [+as.tv_valueShow+], [+as.tv_valueClass+]
Breadcrumbs
[+as.breadcrumbs+], [+as.breadcrumbsShow+], [+as.breadcrumbsClass+]
Параметр &extract
[+as.extract+], [+as.extractShow+], [+as.extractClass+]
Имена классов:
AS_ajax_resultExtract (Ajax режим)
ajaxSearch_resultExtract (не Ajax режим)
&whereSearch=`content,tv,maxigallery,jot`
[+as.jot_content], [+as.jot_contentShow], [+as.jot_contentClass]
[+as.gal_title], [+as.gal_titleShow], [+as.gal_titleClass]
[+as.gal_descr], [+as.gal_descrShow], [+as.gal_descrClass]
Файл конфигурации default.config.php
используется по умолчанию, и содержит значения всех параметров. Можно подключить другой кофигурационный файл. В конфигурационном файле значения параметров должны быть добавлены с помощью синтаксиса:
$param = 'значение'
- чтобы назначить значение параметру, например $hideLink = '0';
$ __ param = 'значение'
- для глобального параметра, например $__hideLink = '0';
Служат для подключения изображений в результаты поиска. Применяются в шаблонах. Возможны следующие модификаторы:
imgwidth : ширина изображения
<img src="[+as.imgTag+]" width="[+as.imgTag:imgwidth+]" />
imgheigth : высота изображения
<img src="[+as.imgTag+]" width="[+as.imgTag: imgheigth+]" />
Imgattr : атрибуты изображения
задает изображению атрибуты, такие как height="xxx" и width="yyy"
<img src="[+as.imgTag +]" [+as.imgTag:imgattr+] />
Imgmaxwidth : максимальная ширина изображения
Ограничивает изображение по ширине. Не может быть больше истинной ширины.
<img src="[+as.imgTag +]" width="[+as.imgTag:imgmaxwidth=`60`+]" />
Imgmaxheight : максимальная высота изображения
Ограничивает изображение по высоте. Не может быть больше истинной высоты.
<img src="[+as.imgTag +]" width="[+as.imgTag:imgmaxheight=`90`+]" />
Плагины предназначены для выделения в результатах поиска слов из поискового запроса.
Плагин searchHighlight
Выделение между тегами <body></body>
Плагин advSearchHighlight
Выделение между тегами <!--start highlight--> и <!--end highlight-->
. Возможно многократное использование на странице.
Варианты формы поискового запроса:
Форма ввода в сниппете AjaxSearch может быть трех видов:
Если пользователь кликает на окно поиска, то текст, установленный по умолчанию, стирается, чтобы пользователь мог ввести поисковый запрос. Если он кликнет вне окна, не введя поискового запроса, то текст по умолчанию, появится вновь. Для управления этим параметром, используйте параметр &clearDefault.
В режиме Ajax (MooTools или Jquery), вы можете использовать режим livesearch. Когда режим liveSearch установлен, поиск происходит после ввода каждого символа и кнопка отправки поискового запроса не отображается.
Эти формы элементов и особенностей (liveSearch, clearDefault) используются в AjaxSearch по умолчанию. Но с дополнительными настройками, вы могли бы получить гораздо больше от AjaxSearch.
Возможности по умолчанию, в зависимости от вариантов вызова сниппета
Без использования Ajax режим (&ajaxSearch = `0`)
- простой поиск: простой поиск с простым полем ввода.
- расширенный поиск: расширенный поиск. Поле ввода с выбором параметров поиска
- множественного выбора поиска
- простой поиск с clearDefault.
В режиме Ajax (&ajaxSearch=`1`) - Mootools 1.11/Mootools 1.2.4/JQuery 1.4.2
- простой поиск: простой поиск с простым полем ввода.
- расширенный поиск: расширенный поиск. Поле ввода с выбором параметров поиска
- множественного выбора поиска
- простой поиск с liveSearch.
Примеры
Примеры в этом разделе для вызова сниппета без режима Ajax &ajaxSearch=`0`
.
В этом режиме, после нажатия кнопки "Найти!", страница перегружается. При этом, результаты могут отображаться на той же странице, или на другой странице.
Этот режим не требует каких-либо скриптов.
Простой поиск
Поиск с простым полем для ввода поискового запроса. По умолчанию используется шаблон assets/snippets/ajaxSearch/templates/inputTemplates/input1.tpl.html
Попробуйте возможности этой формы, задав поисковый запрос MODХ Evolution
. Для удобства демонстрации работы формы, вместо стандартной надписи "Запрос для поиска..." подставлен тестовый запрос. Вам достаточно просто нажать кнопку "Найти!".
[!AjaxSearch? &ajaxSearch=`0`!]
Для того, чтобы убрать рамку вокруг формы, надо либо удалить из шаблона формы тег <fieldset>
, либо прописать в стилях:
fieldset {border:none;}
Надпись Введите ваш запрос для начала поиска.
убирается параметром &showIntro=`0`
либо правкой шаблона.
Расширенный поиск
Расширенный поиск с выбором параметров поиска. Для демонстрации используется шаблон assets/snippets/ajaxSearch/templates/inputTemplates/input2.tpl.html
.
Попробуйте возможности этой формы, задав поисковый запрос MODX Evolution
. Для удобства демонстрации работы формы, вместо стандартной надписи "Запрос для поиска..." подставлен тестовый запрос. Вам достаточно просто нажать кнопку "Найти!".
[!AjaxSearch? &ajaxSearch=`0` &tplInput=`@FILE:assets/snippets/ajaxSearch/templates/inputTemplates/input2.tpl.html`!]
Множественный выбор
Расширенный поиск с множественным выбором параметров поиска. Для демонстрации используется шаблон assets/snippets/ajaxSearch/templates/inputTemplates/input3.tpl.html
.
Чтобы выбрать несколько параметров, нажмите клавишу Ctrl
.
[!AjaxSearch? &ajaxSearch=`0` &tplInput=`@FILE:assets/snippets/ajaxSearch/templates/inputTemplates/input3.tpl.html`!]
Стиль кнопки поиска
За основу возьмем поиск с простым полем ввода. По умолчанию, у нас установлена кнопка с текстом «Найти!». Чтобы заменить кнопку на изображение, необходимо добавить в файл со стилями примерно такую запись:
#ajaxSearch_submit {
margin:0;
height: 24px;
width: 24px;
background:#FFF url(assets/images/search.png) no-repeat;
border: 0;
cursor:pointer;
font-size:0;
}
Попробуйте возможности этой формы, задав поисковый запрос MODX Evolution
. Для удобства демонстрации работы формы, вместо стандартной надписи "Запрос для поиска..." подставлен тестовый запрос. Вам достаточно просто нажать кнопку "Найти!".
[!AjaxSearch? &ajaxSearch=`0`!]
Без целевой страницы
Вывод результатов поиска на этой же странице.
Поиск с простым полем для ввода поискового запроса. Это самый простой вызов сниппета, он использует по умолчанию режим Ajax
с MooTools 1,11.
Попробуйте возможности этой формы, задав поисковый запрос, например, MODX Evolution. Для удобства демонстрации работы формы, вместо стандартной надписи "Запрос для поиска..." подставлен тестовый запрос. Вам достаточно просто нажать кнопку "Найти!".
[!AjaxSearch? &ajaxSearch=`0`!]
Пагинация
Постраничная нумерация результатов поиска.
Поиск с простым полем для ввода поискового запроса. Это самый простой вызов сниппета, он использует по умолчанию режим Ajax
с MooTools 1,11.
По умолчанию тип пагинации для режима без Ajax &pagingType=`1`
, который использовался во всех предыдущих примерах. Ниже пример для &pagingType=`0`
, т.е. без кнопок "next" и "previous".
Попробуйте возможности этой формы, задав поисковый запрос, например, MODX Evolution. Для удобства демонстрации работы формы, вместо стандартной надписи "Запрос для поиска..." подставлен тестовый запрос. Вам достаточно просто нажать кнопку "Найти!".
[!AjaxSearch? &ajaxSearch=`0` &pagingType=`0`!]
С целевой страницей
Переход на страницу для результатов.
Данный вид поиска состоит из двух вызовов сниппета и требует создания отдельной страницы для вывода результатов поиска.
Первый вызов сниппета размещается на странице, где должен производиться поисковый запрос и служит только для вывода формы поиска и передачи запроса на целевую страницу. &landingPage=`28`
- ID страницы, на которой будут отображены результаты поиска.
[!AjaxSearch? &ajaxSearch=`0` &landingPage=`28`!]
Второй вызов сниппета размещается на целевой странице и служит для вывода результатов поискового запроса. Дополнительные параметры поиска такие как пагинация, фильтрация, сортировка и т.д. указываются именно на целевой странице.
[!AjaxSearch? &ajaxSearch=`0` &showInputForm=`0`!]
Комментирование
Комментирование результатов поиска.
Не стесняйтесь комментировать ваши результаты поиска!
Получить комментарии результатов поиска от пользователя можно с помощью параметра asLog
.
Синтаксис: &asLog - ajaxSearch log [ level [: comment [: purge]]]
level:
0: запретить использование ajaxSearch журнала (по умолчанию)
1: регистрировать неудавшиеся запросы поиска
2: все ajaxSearch запросы заносятся в журнал
comment:
0: комментарии пользователей не допускаются (по умолчанию)
1: комментарии пользователей разрешено
Purge: число регистраций, до автоматической очистки
0: неограниченное число регистраций
по умолчанию: 200
Шаблон для комментариев по умолчанию assets/snippets/ajaxSearch/templates/comment.tpl.html
. Чтобы использовать свой шаблон, создайте чанк с шаблоном и укажите его в качестве значения параметра &tplComment
.
[!AjaxSearch? &ajaxSearch=`0` &asLog=`2:1`!]
Для того, чтобы скрыть поле hiddenField
, необходимо добавить в ваш CSS-файл следующие стили:
.ajaxSearch_hiddenField { position:absolute; text-decoration:underline; background-color:#CC0000; left:0px; top:-500px; width:1px; height:1px; overflow:hidden; }
Несколько форм
Можно размещать несколько форм поиска на странице. При этом первый сниппет вызывается как обычно, а второй сниппет должен вызываться с параметром &asId=`as2`
, где as2 - уникальный идентификатор.
Попробуйте возможности этих форм, задав поисковый запрос MODХ Evolution
. Для удобства демонстрации работы форм, вместо стандартной надписи "Запрос для поиска..." подставлен тестовый запрос. Вам достаточно просто нажать кнопку "Найти!".
Первая форма
[!AjaxSearch? &ajaxSearch=`0`!]Вторая форма
[!AjaxSearch? &asId=`as2`&ajaxSearch=`0`!]
Пользовательский вывод
Под пользовательским выводом подразумевается возможность располагать форму поиска и результаты поиска на странице в заданных местах.
Осуществляется это с помощью параметра &output=`1`
, который выводит форму поиска и результаты поиска в плейсхолдеры [+as.inputForm+]
и [+as.results+]
соответственно.
Попробуйте возможности этой формы, задав поисковый запрос MODХ Evolution
. Для удобства демонстрации работы формы, вместо стандартной надписи "Запрос для поиска..." подставлен тестовый запрос. Вам достаточно просто нажать кнопку "Найти!".
[!AjaxSearch? &ajaxSearch=`0` &output=`1`!]Форму поиска разместим здесь:
[+as.inputForm+]Вывод результатов будет здесь:
[+as.results+]
Вывод категорий
Результаты поиска можно разбивать по категориям.
Необходимо создать TV параметр, например, articleCategory
с возможными значениями: Категория1||Категория2||Карегория3
и т.д. Назначьте категории всем документам, которые участвуют в поиске. Укажите имя TV в качестве значения парметра &category=`articleCategory`
.
Попробуйте возможности этой формы, задав поисковый запрос MODХ Evolution
. Для удобства демонстрации работы формы, вместо стандартной надписи "Запрос для поиска..." подставлен тестовый запрос. Вам достаточно просто нажать кнопку "Найти!".
[!AjaxSearch? &ajaxSearch=`0` &category=`articleCategory`!]
В режиме Ajax &ajaxSearch=`1`
после нажатия кнопки "Найти!" страница не перегружается.
Для работы в режиме Ajax подключается одна из трех библиотек на выбор:
- Mootools 1.11
- Mootools 1.2.4
- JQuery 1.4.2
По умолчанию используется Mootools 1.11. Переключение между библиотеками происходит с помощью параметра &jscript=``
.
Простой поиск
Поиск с простым полем для ввода поискового запроса. Это самый простой вызов сниппета, он использует по умолчанию режим Ajax
с MooTools 1,11. Для формы по умолчанию используется шаблон assets/snippets/ajaxSearch/templates/inputTemplates/input1.tpl.html
Попробуйте возможности этой формы, задав поисковый запрос MODX Evolution
.
[!AjaxSearch!]
Автоматический поиск
Для поиска с LiveSearch кнопка отправки не нужна. Поиск происходит после каждого напечатанного символа. Минимальное количество 3 символа. Сниппет использует по умолчанию режим Ajax с MooTools 1,11
Попробуйте возможности этой формы, задав поисковый запрос MODX Evolution
.
[!AjaxSearch? &liveSearch=`1`!]
Расширенный поиск
Расширенный поиск с выбором параметров поиска. Для демонстрации используется шаблон assets/snippets/ajaxSearch/templates/inputTemplates/input2.tpl.html
.
Попробуйте возможности этой формы, задав поисковый запрос MODX Evolution
.
[!AjaxSearch? &tplInput=`@FILE:assets/snippets/ajaxSearch/templates/inputTemplates/input2.tpl.html`!]
Множественный выбор
Расширенный поиск с выбором параметров поиска. Для демонстрации используется шаблон assets/snippets/ajaxSearch/templates/inputTemplates/input3.tpl.html
.
Чтобы выбрать несколько параметров, нажмите клавишу Ctrl
.
[!AjaxSearch? &tplInput=`@FILE:assets/snippets/ajaxSearch/templates/inputTemplates/input3.tpl.html`!]
Пагинация тип 0
Пагинация тип 0 &pagingType=`0`
, постраничное разбиение отключено и выведится только то количество документов, которое указано в параметре &ajaxMax
. Но внизу будет ссылка на страницу без режима Ajax, на которой можно посмотреть все результаты поиска.
&landingPage=`28`
- ID целевой страницы, на которой будет вывод всех результатов поиска.
&ajaxMax=`3`
- количество отображаемых результатов.
Попробуйте возможности этой формы, задав поисковый запрос, например, MODX Evolution
.
[!AjaxSearch? &pagingType=`0` &ajaxMax=`3` &moreResultsPage=`28`!]
На целевой странице режим Ajax отключен. Из-за параметра grabMax, группы результатов с более чем 5 результатами являются пронумерованными. Здесь мы тоже используем &pagingType=`0`
.
[!AjaxSearch? &ajaxSearch=`0` &showInputForm=`0` &grabMax=`5` &pagingType=`0`!]
Пагинация тип 1
Пагинация тип 1 &pagingType=`1`
, выведится только то количество документов, которое указано в параметре &ajaxMax
. Есть возможность пролистывать результаты поиска. Внизу будет ссылка на страницу без режима Ajax, на которой можно посмотреть все результаты поиска.
&landingPage=`28`
- ID целевой страницы, на которой будет вывод всех результатов поиска.
Попробуйте возможности этой формы, задав поисковый запрос, например, MODX Evolution
.
[!AjaxSearch? &pagingType=`1` &ajaxMax=`3` &moreResultsPage=`28`!]
На целевой странице режим Ajax отключен. Из-за параметра grabMax, группы результатов с более чем 5 результатами являются пронумерованными. Здесь мы тоже используем &pagingType=`1`
.
[!AjaxSearch? &ajaxSearch=`0` &showInputForm=`0` &grabMax=`5` &pagingType=`1`!]
Пагинация тип 2
Пагинация тип 2 &pagingType=`2`
, выведится только то количество документов, которое указано в параметре &ajaxMax
. Вместо пролистывания результатов, появилась ссылка "Показать оставшиеся 10", при нажатии на нее, в списке результатов появится еще 10 найденных документов. Внизу будет ссылка на страницу без режима Ajax, на которой можно посмотреть все результаты поиска.
&landingPage=`28`
- ID целевой страницы, на которой будет вывод всех результатов поиска.
Попробуйте возможности этой формы, задав поисковый запрос, например, MODX Evolution
.
[!AjaxSearch? &pagingType=`2` &ajaxMax=`3` &moreResultsPage=`28`!]
На целевой странице режим Ajax отключен. Из-за параметра grabMax, группы результатов с более чем 5 результатами являются пронумерованными. Здесь мы используем &pagingType=`1`
.
[!AjaxSearch? &ajaxSearch=`0` &showInputForm=`0` &grabMax=`5` &pagingType=`1`!]
Пользовательский вывод
Под пользовательским выводом подразумевается возможность располагать форму поиска и результаты поиска на странице в заданных местах.
Осуществляется это с помощью параметра &output=`1`
, который выводит форму поиска и результаты поиска в плейсхолдеры [+as.inputForm+]
и [+as.results+]
соответственно.
Попробуйте возможности этой формы, задав поисковый запрос MODХ Evolution
.
[!AjaxSearch? &output=`1`!]Форму поиска разместим здесь:
[+as.inputForm+]Вывод результатов будет здесь:
[+as.results+]
Вывод категорий
Результаты поиска можно разбивать по категориям.
Необходимо создать TV параметр, например, articleCategory
с возможными значениями: Категория1||Категория2||Карегория3
и т.д. Назначьте категории всем документам, которые участвуют в поиске. Укажите имя TV в качестве значения парметра &category=`articleCategory`
.
Результаты группируются по категориям. Каждая категория может иметь собственный шаблон. Документы, не связанные с категорией отображаются первыми.
Для того, чтобы задать шаблон каждой категори, необходимо создать конфигурационный файл custom.config.php с примерно таким кодом:
<?php
/*
* categConfig : To define the display of categories (output)
* Add a category as a switch item. 'uncategorized' item describe the results outside of any category
* Add a switch for a new site. The default site is named 'defsite'.
* Allowed config parameters : grpLabel, tplResult, tplAjaxResult, display, extract, rank ...
*/
if(!function_exists('categConfig')) {
function categConfig($site='defsite',$category){
$config = array();
$site = strtolower($site);
$category = strtolower($category);
switch($site) {
case 'defsite':
switch($category){
case 'arts':
$config['grpLabel'] = 'Arts';
$config['tplAjaxResult'] = '@FILE:assets/snippets/ajaxSearch/templates/customs/imgAjaxResult.tpl.html'; // allow the display of an image
break;
case 'music':
$config['grpLabel'] = 'Music';
$config['tplAjaxResult'] = '@FILE:assets/snippets/ajaxSearch/templates/customs/imgAjaxResult.tpl.html'; // allow the display of an image
break;
case 'geography':
$config['grpLabel'] = 'Geography';
$config['tplAjaxResult'] = '@FILE:assets/snippets/ajaxSearch/templates/customs/imgAjaxResult.tpl.html'; // allow the display of an image
break;
case '':
$config['grpLabel'] = 'Site wide';
break;
}
}
return $config;
}
}
?>
и поместите его в папку assets/snippets/ajaxSearch/configs/
либо в другую папку, не забыв поменять путь в параметре &config=`custom`
. Рекомендуется все конфигурационные файлы и шаблоны хранить в отдельной папке, чтобы при обновлении сниппета не пришлось все восстанавливать. Измените кофигурационный файл в соответствии с вашими категориями.
Создайте шаблон для вывода категорий imgAjaxResult.tpl.html
, с примерно таким кодом:
<div class="[+as.resultClass+]">
<a class="[+as.resultLinkClass+]" href="[+as.resultLink+]" title="[+as.longtitle+]">[+as.pagetitle+]</a>
[+as.descriptionShow:is=`1`:then=`
<span class="[+as.descriptionClass+]">[+as.description+]</span>
`+]
[+as.articleImageShow:is=`1`:then=`
<div><a class="[+as.resultLinkClass+]" href="[+as.resultLink+]" title="[+as.longtitle+]"><img align="center" src="[+as.articleImage+]"></a></div>
`+]
[+as.extractShow:is=`1`:then=`
<div class="[+as.extractClass+]"><p>[+as.extract+]</p></div>
`+]
[+as.breadcrumbsShow:is=`1`:then=`
<span class="[+as.breadcrumbsClass+]">[+as.breadcrumbs+]</span>
`+]
</div>
Попробуйте возможности этой формы, задав поисковый запрос MODХ Evolution
.
[!AjaxSearch? &category=`articleCategory` &config=`custom` &tvPhx=`articleImage`!]
Несколько форм
Можно размещать несколько форм поиска на странице. При этом первый сниппет вызывается как обычно, а второй сниппет должен вызываться с параметром &asId=`as2`
, где as2 - уникальный идентификатор.
Попробуйте возможности этих форм, задав поисковый запрос MODХ Evolution
. Для удобства демонстрации работы форм, вместо стандартной надписи "Запрос для поиска..." подставлен тестовый запрос. Вам достаточно просто нажать кнопку "Найти!".
Первая форма
[!AjaxSearch? &pagingType=`2`!]Вторая форма
[!AjaxSearch? &asId=`as2` &pagingType=`2`!]
Javascript отключен
Как использовать Ajax и не-Ajax режимы? Что произойдет, если JavaScript отключен?
Этот пример показывает правильное использование некоторых параметров, когда использовать режим Ajax не представляется возможным.
Ajax режим включен
По умолчанию используется режим Ajax, так что никаких параметров не требуется. Тем не менее здесь мы добавляем два параметра, параметр ajaxMax
, чтобы определить, сколько результатов будет отображаться в окне результатов поиска и moreResultsPage
параметр позволяет указать целевую страницу.
Ajax режим выключен
Если Javascript отключен, режим Ajax не будет использоваться , так что нам необходимо определить целевую страницу с помощью landingPage
параметра. В этом примере мы используем ту же целевую страницу, что и в параметре moreResults
.
В конце концов мы получаем следующий вызов сниппета. Для просмотра этого примера, необходимо запустить поиск при включенном JavaScript, а затем отключить JavaScript и повторить поиск.
Попробуйте возможности этой формы, задав поисковый запрос, например, MODX Evolution:
[!AjaxSearch? &ajaxMax=`3` &moreResultsPage=`28` &landingPage=`28`!]
Пример вызова на целевой странице
[!AjaxSearch? &ajaxSearch=`0` &showInputForm=`0` &grabMax=`3`!]
Комментирование
Комментирование результатов поиска.
Не стесняйтесь комментировать ваши результаты поиска!
Получить комментарии результатов поиска от пользователя можно с помощью параметра asLog
.
Синтаксис: &asLog - ajaxSearch log [ level [: comment [: purge]]]
level:
0: запретить использование ajaxSearch журнала (по умолчанию)
1: регистрировать неудавшиеся запросы поиска
2: все ajaxSearch запросы заносятся в журнал
comment:
0: комментарии пользователей не допускаются (по умолчанию)
1: комментарии пользователей разрешено
Purge: число регистраций, до автоматической очистки
0: неограниченное число регистраций
по умолчанию: 200
Шаблон для комментариев по умолчанию assets/snippets/ajaxSearch/templates/comment.tpl.html
. Чтобы использовать свой шаблон, создайте чанк с шаблоном и укажите его в качестве значения параметра &tplComment
.
[!AjaxSearch? &asLog=`2:1`!]
Для того, чтобы скрыть поле hiddenField
, необходимо добавить в ваш CSS-файл следующие стили:
.ajaxSearch_hiddenField { position:absolute; text-decoration:underline; background-color:#CC0000; left:0px; top:-500px; width:1px; height:1px; overflow:hidden; }
Здесь собраны примеры для демонстрации общих черт для не-Ajax и Ajax режимов. Все примеры используют не-Ajax режим с результатами на той же странице.
Фильтрация до поиска
Фильтрация до поиска ограничивает перечень документов, где применяется поиск.
Правильно настроенная фильтрация документов перед началом поиска позволяет сократить время поиска и нагрузку на сервер. Не пренебрегайте этими настройками. Исключайте из поиска ненужные документы, поля документов и TV-параметры.
Параметры, которые способствуют фильтрации до поиска следующие:
Параметр | Пример | Фильтр |
---|---|---|
parents(in) | &parents=`in:24,25` | поиск в дочерних документах папок 24 и 25 |
parents(not in) | &parents=`not in:24,10` | поиск по всем документам кроме дочерних документов папок 24 и 10 |
documents(in) | &documents=`in:28,29,30,31` | поиск в документах 28,29,30,31 |
documents(not in) | &documents=`not in:28,29,30` | поиск во всех документах кроме 28,29,30 |
hideLink | &hideLink=`0` | поиск по всем документам с типом ресурса Веб-страница и Веб-ссылка |
hideMenu | &hideMenu=`2` | поиск в скрытых и видимых в меню документах |
withTvs (+) | &withTvs=`+:author,title` | поиск по TV-параметрам author и title |
withTvs (-) | &withTvs=`-:login,check` | поиск по всем TV-параметрам, кроме login и check |
Параметр withTvs
определяет, какой TV-параметр будет добавлен в поиск и по каким полям документа поиск будет происходить. TV-параметры должны иметь тип ввода Text.
Будьте осторожны, при использовании &withTvs=`-:tvName`
, вы можете создать очень большой SQL запрос, что может привести к ошибке. Прежде, чем использовать такой вариант, проведите тестирование. Но если у вас есть множество документов и TV-параметров, лучше избежать этого варианта.
Ниже пример поиска в дочерних документах первого уровня папки с id=4, у которых стоит галочка "Показывать в меню". Поиск осуществляется по полям документа pagetitle и content.
Попробуйте возможности этой формы, задав поисковый запрос MODХ Evolution
. Для удобства демонстрации работы формы, вместо стандартной надписи "Запрос для поиска..." подставлен тестовый запрос. Вам достаточно просто нажать кнопку "Найти!".
[!AjaxSearch? &ajaxSearch=`0` &whereSearch=`content:pagetitle,content` &hideMenu=`0` &parents=`in:4` &depth=`1`!]
Фильтрация результатов поиска
Параметры фильтра позволяют выбрать необходимые документы или исключить нежелательные документы. Например, если мы хотим отобразить только документы, у которых в TV-параметре "articleTags" есть значение "сниппет", нам необходимо применить такой параметр: &filter=`articleTags,сниппет,7`
.
Режим | Исключить документ, если его значение в указанном поле |
---|---|
1 | не соответствует критерию (!=) |
2 | соответствует криетрию (==) |
3 | меньше критерия (<) |
4 | больше критерия (>) |
5 | меньше или равен критерию (<=) |
6 | больше или равен критерию (>=) |
7 | не содержит текст критерия |
8 | содержит текст критерия |
В этом примере, мы убираем из поиска все документы, в которых в поле content не содержится текст "Ditto".
Попробуйте возможности этой формы, задав поисковый запрос MODХ Evolution
. Для удобства демонстрации работы формы, вместо стандартной надписи "Запрос для поиска..." подставлен тестовый запрос. Вам достаточно просто нажать кнопку "Найти!".
[!AjaxSearch? &filter=`content,Ditto,7` &whereSearch=`content:pagetitle,content` &ajaxSearch=`0`!]
Сортировка и ранжирование
Сортировка и ранжирование результатов поиска
В этом примере мы определим, каким образом результаты должны быть упорядочены. Параметр сортировки определяет, какие поля следует использовать для упорядочения результатов (до применения ранжирования). Параметр ранжирования определяет, какие поля должны использоваться для вычисления ранга каждого найденного результата.
Для вывода результатов поиска, мы будем использовать шаблон rankResult
со следующим кодом:
<div class="[+as.resultClass+]">
<a class="[+as.resultLinkClass+]" href="[+as.resultLink+]" title="[+as.longtitle+]">[+as.pagetitle+]</a>
[+as.descriptionShow:is=`1`:then=`
<span class="[+as.descriptionClass+]">[+as.description+]</span>
`+]
[+as.extractShow:is=`1`:then=`
<div class="[+as.extractClass+]"><p>[+as.extract+]</p></div>
`+]
[+as.rankShow:is=`1`:then=`
<span class="[+as.rankClass+]"><strong>Ранг:</strong> [+as.rank+]</span><br>
`+]
[+as.publishedonShow:is=`1`:then=`
<span class="[+as.publishedonClass+]"><strong>Дата публикации:</strong> [+as.publishedon+]</span><br><br>
`+]
[+as.breadcrumbsShow:is=`1`:then=`
<span class="[+as.breadcrumbsClass+]">[+as.breadcrumbs+]</span>
`+]
</div>
Создайте чанк rankResult
и поместите туда этот код.
Попробуйте возможности этой формы, задав поисковый запрос MODХ Evolution
. Для удобства демонстрации работы формы, вместо стандартной надписи "Запрос для поиска..." подставлен тестовый запрос. Вам достаточно просто нажать кнопку "Найти!".
[!AjaxSearch? &ajaxSearch=`0` &extract=`5` &rank=`pagetitle:100,content` &order=`publishedon DESC,pagetitle` &formatDate=`d.m.Y` &tplResult=`rankResult`!]
Ранжирование по TV-параметру
В этом примере мы определим, в каком порядке должны быть показаны результаты. Параметр rank определяет, какие поля будут использоваться для вычисления ранга каждого найденного результата. Мы можем использовать не только такие поля, как pagetitle или content, но и TV-параметры. Чтобы результаты ранжировались по TV-параметру articleCategory, создадим чанк rankResult
с таким кодом:
<div class="[+as.resultClass+]">
<a class="[+as.resultLinkClass+]" href="[+as.resultLink+]" title="[+as.longtitle+]">[+as.pagetitle+]</a>
[+as.descriptionShow:is=`1`:then=`
<span class="[+as.descriptionClass+]">[+as.description+]</span>
`+]
[+as.extractShow:is=`1`:then=`
<div class="[+as.extractClass+]"><p>[+as.extract+]</p></div>
`+]
[+as.rankShow:is=`1`:then=`
<span class="[+as.rankClass+]"><strong>Ранг:</strong> [+as.rank+]</span><br>
`+]
[+as.articleCategoryShow:is=`1`:then=`
<span class="[+as.articleCategoryClass+]"><strong>Категория: </strong> [+as.articleCategory+]</span><br><br>
`+]
</div>
Попробуйте возможности этой формы, задав поисковый запрос MODХ Evolution
. Для удобства демонстрации работы формы, вместо стандартной надписи "Запрос для поиска..." подставлен тестовый запрос. Вам достаточно просто нажать кнопку "Найти!".
[!AjaxSearch? &ajaxSearch=`0` &extract=`5` &withTvs=`articleCategory` &rank=`articleCategory:100,pagetitle:10,content` &tplResult=`rankResult`!]
Путь к найденным документам
В этом примере параметр breadcrumbs определяет какую функцию или сниппет (с параметрами вызова) использовать. Здесь мы будем использовать сниппет Breadcrumbs.
Попробуйте возможности этой формы, задав поисковый запрос MODХ Evolution
. Для удобства демонстрации работы формы, вместо стандартной надписи "Запрос для поиска..." подставлен тестовый запрос. Вам достаточно просто нажать кнопку "Найти!".
[!AjaxSearch? &ajaxSearch=`0` &breadcrumbs=`Breadcrumbs,showHomeCrumb:0,showCrumbsAtHome:1`!]
Настройка выдержек
Каждой выдержке из документа можно задать обрамление, длину и разделяющий html тег.
Попробуйте возможности этих форм, задав поисковый запрос MODХ Evolution
. Для удобства демонстрации работы форм, вместо стандартной надписи "Запрос для поиска..." подставлен тестовый запрос. Вам достаточно просто нажать кнопку "Найти!".
[!AjaxSearch? &ajaxSearch=`0` &extract=`3:content` &extractSeparator=`<br><br>` &extractEllips=`---` &extractLength=`100`!]