mSearch - обновление до версии 1.3.0.

В 1.3.0 подсказки поиска теперь могут показывать товары с фото, артикулом и ценой — а не только заголовок, как раньше. Обычные страницы остаются простой строкой, товары получают карточный вид. Никаких настроек переписывать не надо: достаточно включить автокомплит в форме поиска, и для товаров miniShop3 это заработает само.



Фото и цена в подсказках



До 1.3.0 автокомплит mSearch отдавал только pagetitle с подсветкой совпавших слов. На каталоге товаров такого мало: пользователь начинает писать «трен», видит список заголовков, но без фото и цены непонятно что выбирать. Теперь подсказка для товара выглядит как мини-карточка — обложка слева, название и артикул, текущая цена и зачёркнутая старая, если есть скидка.

Включается одним параметром формы:

[[!mSearchForm? &autocomplete=`1`]]
Если на сайте установлен miniShop3, mSearch сам опознаёт товары и нарисует им карточный вид. Обычные ресурсы (статьи, новости, страницы) остаются простой строкой с заголовком и сниппетом текста.

Скидки и красивые цены через msProducts



По умолчанию цена в подсказке берётся из базы как есть — без обработки плагинами скидок и без форматирования. Если хочется чтобы в подсказке отображалась финальная цена со скидками и в привычном виде «1 500 ₽», добавьте к форме параметры:

[[!mSearchForm?
    &autocomplete=`1`
    &element=`msProducts`
    &elementProperties=`{"parents":0,"formatPrices":1,"withCurrency":1}`
]]
В этом режиме mSearch ищет ровно так же, как раньше — со всей морфологией и весами полей. А цены и описания загружаются через сниппет msProducts, который вы и так используете в каталоге. Все ваши плагины скидок, события и форматирование валюты применяются автоматически.

Подсветка и веса не теряются



В старом mSearch2 у параметра &element= был неприятный побочный эффект: как только вы переключали загрузку на сторонний сниппет, теряли всё ценное от mSearch. Подсветка совпавших слов пропадала, веса полей не учитывались, ранжирование шло по правилам сниппета — то есть фактически по дате или ID. Параметр был, но пользоваться им на каталоге было больно.

В 1.3.0 эти роли разделены. Поиском по-прежнему занимается mSearch — со словарём, словоформами, бонусами за точные совпадения и порядком по релевантности. А сниппет из &element= только подгружает данные для уже найденных результатов. То есть в подсказке вы получаете и подсвеченный заголовок, и красивую цену со скидкой, и правильный порядок результатов — одновременно.

Достигается это так: mSearchForm обогащает результат своими плейсхолдерами поверх данных от element-сниппета. Какой бы сниппет ни занимался загрузкой (msProducts, getResources, ваш собственный) — в чанк подсказки всегда приходит набор системных плейсхолдеров, которые рисует именно mSearchForm:

  • {$id} — id ресурса
  • {$url} — полный URL страницы
  • {$type} — тип результата (resource, product или ваш собственный)
  • {$idx} — порядковый номер в списке подсказок
  • {$query} — текущий поисковый запрос
  • {$pagetitle} — заголовок с подсветкой совпавших слов
  • {$pagetitle_raw} — заголовок без подсветки (для атрибутов alt, title)
  • {$intro} — фрагмент текста с подсветкой
Для товаров mSearchForm дополнительно подмешивает удобные поля: {$article}, {$price_display} и {$old_price_display} (готовые строки с разделителями и символом валюты, можно выводить прямо в чанк без фильтров), {$has_discount} (булев флаг для условного блока со старой ценой), {$thumb}, {$image}.

Все эти плейсхолдеры мSearchForm докидывает сверху того, что отдал element-сниппет. То есть в чанке вам доступны и сырые поля из ответа msProducts ({$price}, {$old_price}, {$discount} и так далее), и удобные display-версии от mSearchForm. Без потери подсветки и порядка по релевантности.

Своё имя параметра поиска



Появился параметр &queryVar= у сниппетов mSearch и mSearchForm. По умолчанию запрос ожидается в mse_query, но теперь можно поменять на что угодно:

[[!mSearchForm? &queryVar=`q`]]
Поле формы получит name=«q», ссылка результатов будет ?q=.... Полезно если переезжаете с другой платформы и не хотите терять старые ссылки на страницу поиска из поисковиков и рекламных кампаний.

Мелкие улучшения



  • Минимальная длина запроса автокомплита теперь настраивается через системную настройку mse_suggest_min_query_length (по умолчанию 2 символа)
  • Для индексации товаров появилась отдельная настройка mse_index_fields_product — в стандартный набор полей добавлен артикул из msProductData
  • Подсказки больше не «мигают» устаревшими результатами при быстром вводе — старые ответы отбрасываются на лету
  • Полная переиндексация ускорилась: убрана двойная обработка товаров, добавлен кэш счётчиков
  • Закрыта потенциальная уязвимость в API подсказок — служебные параметры теперь хранятся на сервере и недоступны для подмены через запрос

Если используется кастомный шаблон формы



Один момент по обновлению. Параметр &tpl= у mSearchForm сменил смысл: раньше это был шаблон самой формы, теперь — шаблон одной подсказки. Шаблон формы переехал на &tplForm=. Если у вас в вызове было &tpl=`mySearch.form` — переименуйте параметр в &tplForm=`mySearch.form`, и всё продолжит работать как раньше.

Все остальные вызовы и настройки совместимы — обновление накатывается поверх существующей установки без манипуляций с базой.

Ссылки



Николай Савин
8 часов назад
modx.pro
67
+1
Поблагодарить автора Отправить деньги

Комментарии: 0

Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
0