mSearch - обновление до версии 1.3.0.
В 1.3.0 подсказки поиска теперь могут показывать товары с фото, артикулом и ценой — а не только заголовок, как раньше. Обычные страницы остаются простой строкой, товары получают карточный вид. Никаких настроек переписывать не надо: достаточно включить автокомплит в форме поиска, и для товаров miniShop3 это заработает само.
До 1.3.0 автокомплит mSearch отдавал только pagetitle с подсветкой совпавших слов. На каталоге товаров такого мало: пользователь начинает писать «трен», видит список заголовков, но без фото и цены непонятно что выбирать. Теперь подсказка для товара выглядит как мини-карточка — обложка слева, название и артикул, текущая цена и зачёркнутая старая, если есть скидка.
Включается одним параметром формы:
По умолчанию цена в подсказке берётся из базы как есть — без обработки плагинами скидок и без форматирования. Если хочется чтобы в подсказке отображалась финальная цена со скидками и в привычном виде «1 500 ₽», добавьте к форме параметры:
В старом mSearch2 у параметра &element= был неприятный побочный эффект: как только вы переключали загрузку на сторонний сниппет, теряли всё ценное от mSearch. Подсветка совпавших слов пропадала, веса полей не учитывались, ранжирование шло по правилам сниппета — то есть фактически по дате или ID. Параметр был, но пользоваться им на каталоге было больно.
В 1.3.0 эти роли разделены. Поиском по-прежнему занимается mSearch — со словарём, словоформами, бонусами за точные совпадения и порядком по релевантности. А сниппет из &element= только подгружает данные для уже найденных результатов. То есть в подсказке вы получаете и подсвеченный заголовок, и красивую цену со скидкой, и правильный порядок результатов — одновременно.
Достигается это так: mSearchForm обогащает результат своими плейсхолдерами поверх данных от element-сниппета. Какой бы сниппет ни занимался загрузкой (msProducts, getResources, ваш собственный) — в чанк подсказки всегда приходит набор системных плейсхолдеров, которые рисует именно mSearchForm:
Все эти плейсхолдеры мSearchForm докидывает сверху того, что отдал element-сниппет. То есть в чанке вам доступны и сырые поля из ответа msProducts ({$price}, {$old_price}, {$discount} и так далее), и удобные display-версии от mSearchForm. Без потери подсветки и порядка по релевантности.
Появился параметр &queryVar= у сниппетов mSearch и mSearchForm. По умолчанию запрос ожидается в mse_query, но теперь можно поменять на что угодно:
Один момент по обновлению. Параметр &tpl= у mSearchForm сменил смысл: раньше это был шаблон самой формы, теперь — шаблон одной подсказки. Шаблон формы переехал на &tplForm=. Если у вас в вызове было &tpl=`mySearch.form` — переименуйте параметр в &tplForm=`mySearch.form`, и всё продолжит работать как раньше.
Все остальные вызовы и настройки совместимы — обновление накатывается поверх существующей установки без манипуляций с базой.
Фото и цена в подсказках
До 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} — фрагмент текста с подсветкой
Все эти плейсхолдеры м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`, и всё продолжит работать как раньше.
Все остальные вызовы и настройки совместимы — обновление накатывается поверх существующей установки без манипуляций с базой.
Ссылки
Поблагодарить автора
Отправить деньги
0