1мая,
2010
Проблема с AjaxSearch в связке с YAMS в Modx

Как оказалось, AjaxSearch нигде и ничего не ищет, когда системные поля Modx-а YAMS заменяет на TV-параметры.

На официальном форуме предлагается решение в подробностях, которое у меня так и не заработало. Всё это делалось на версии Modx Evolution 1.0.3.

А нашлось оно совершенно случайно (как обычно, впрочем). Надо было поставить чуть постарше версию AjaxSearch-a.

А именно версию 1.8.4. Она лежит в Previous Releases AjaxSearch-a.
Либо вот прямая ссылка на неё.

Как выглядит сам вызов:

На всех страницах сайта (ну, или на тех, где поле для поиска нужно) разместить вызов сниппета:

[!AjaxSearch? &parents=`0` &mbstring=`0` &AS_landing=`25` &addJscript=`0` &extract=`0` &AS_showResults=`0` &ajaxSearch=`0` &language=`(yams_mname)` &withTvs=`+:pagetitle_en,longtitle_en,introtext_en,description_en,content_en,pagetitle_ru,longtitle_ru,introtext_ru,description_ru,content_ru` &tplLayout=`search_tpl`!]

mbstring я отключаю сразу, оно у меня не работает. Поиск без перезагрузки я не проверял, он не нужен мне в 99%, а то и во всех 100% случаев, вроде как он всё равно корректно не работает. Ну, а дальше, собственно, куда будет выводиться результат поиска, на каком языке будет всё описание и, то, по каким полям AjaxSearch будет искать. Ну и сами TV-параметры, которые создаёт YAMS и не находит AJAxSearch.

Шаблон формы поиска стандартный:

[+as.showForm:is=`1`:then=`
<form [+as.formId+] action=[+as.formAction+]«„ method=“post»>
<fieldset>
<input type="hidden" name="advSearch" value=[+as.advSearch+]«„ />
<label for=“ajaxSearch_input»>
<input id="ajaxSearch_input" type="text" name="search" value=[+as.inputValue+]«[+as.inputOptions+]„ />
</label>
<label for=“ajaxSearch_submit»>
<input id="ajaxSearch_submit" type="image" src=[(site_url)]«images/search.gif» name="sub" value=[+as.submitText+]«« />
</label>
</fieldset>
</form>
`+]
[+as.showIntro:is=`1`:then=`
<p id="ajaxSearch_intro">[+as.introMessage+]</p>
`+]
[+as.showResults:is=`1`:then=`
[+as.results+]
`+]

Страница вывода результатов:

[!AjaxSearch? &mbstring=`0` &AS_showResults=`1` &ajaxSearch=`0`, &AS_landing=`25`, &AS_showForm=`0` &language=`(yams_mname)` &withTvs=`+:pagetitle_en,longtitle_en,introtext_en,description_en,content_en,pagetitle_ru,longtitle_ru,introtext_ru,description_ru,content_ru` &tplResult=`searchresult_`!]

Шаблон вывода результатов:

<a href=»(yams_doc:[+as.id+])» title=[[YAMS? &get=`content` &from=`pagetitle` &docid=`[+as.id+]«`]]»>[[YAMS? &get=`content` &from=`pagetitle` &docid=`[+as.id+]`]]</a>
[+as.descriptionShow:is=`1`:then=`
<span>[+as.description+]</span>
`+]
[+as.extractShow:is=`1`:then=`
<div><p>[+as.extract+]</p></div>
`+]
[+as.breadcrumbsShow:is=`1`:then=`
<span>[+as.breadcrumbs+]</span>
`+]

Тут стоит обратить внимание, что вызовы плейсхолдеров AjaxSearch-а заменяются на вызовы сниппета YAMS.

Чтобы ссылка работала верно, она обязательно должна быть заменена на (yams_doc:[+as.id+])

Ну, а показать title или заголовок, то надо вызывать сниппет YAMS:

[[YAMS? &get=`content` &from=`pagetitle` &docid=`[+as.id+]`]]

Такой поиск работает корректно, ищет и находит и правильно ссылается на страницы из результатов поиска.

6 комментариев на «“Проблема с AjaxSearch в связке с YAMS в Modx”»

  1. Руслан:

    Здравствуй. Спасибо за пост, очень помог. Я ещё покапался по форумам и сделал вот такой вызов AjaxSearch v.1.9.0:

    [!AjaxSearch? &showResults=`1` &ajaxSearch=`0`, &landing=`22`, &showForm=`0` &language=`(yams_mname)` &withTvs=`+:content_(yams_id)`&tplResult=`searchresult`&highlightResult=`1`&extractLength=`500`&whereSearch=`content:content`&extract=`1:content_(yams_id)`!]

    При твоём [+as.extract+] пропадал. Ну, пока, не разобрался как сделать, чтоб подсветка была, yams съедает все $_GET — ы из строки запроса.

  2. Mark.Sh:

    Ну, я делал на 1.8.4, может, в 1.9 автор уже всё поправил, я пока ещё не проверял, там уже и YAMS вроде новее версия есть. Там либо новые глюки, либо уже поправлено всё. :)

    А так вообще, на здоровье. Хорошо, что это не мне одному нужно. :)

  3. Спасибо, полезная инфа!

  4. Mark.Sh:

    На здороьве. :)

  5. Игорь:

    Спасибо, вроде помогло!

  6. Mark.Sh:

    Что с новой версией AjaxSearch-a? Пока не пробовал ставить. Та же проблема?

Добавить комментарий

This blog is kept spam free by WP-SpamFree.