Необходима помощь в кастомизации mSearch2
Доброго вечера!
Столкнулся с необходимостью скорректировать поиск таким образом, чтобы он выдавал не только товары, но и категории. Например, по запросу «машины» отдавать не только товары, но и саму категорию «Машины».
Задача касается как mSearchForm, так и mSearch2.
Например, вызов:
Насколько я понимаю принцип работы поиска — результат (в т.ч. и id ресурса раздела «Машины») отдаётся, в данном случае, сниппету msProducts, который его не обрабатывает, т.к. это не товар.
Пока думаю, что решить задачу можно предварительно отдав массив ID'шников некоему prepareSnippet. Он определит наличие в массиве ID ресурса с классом msCategory и обработает самостоятельно; остальные отдаст msProducts. Либо вносить правки в assets/components/msearch2/action.php и msearch2.class.php, чего не хотелось бы.
Хочу спросить совета: может быть кто-то сталкивался с подобной задачей или знает, как правильнее её реализовать?
Заранее благодарен!
Столкнулся с необходимостью скорректировать поиск таким образом, чтобы он выдавал не только товары, но и категории. Например, по запросу «машины» отдавать не только товары, но и саму категорию «Машины».
Задача касается как mSearchForm, так и mSearch2.
Например, вызов:
$modx->runSnippet('mSearchForm',
array(
'pageId' => 5,
'element' => 'msProducts',
'limit' => 50,
'tpl' => 'tpl.mSearch2.ac'
)
);Насколько я понимаю принцип работы поиска — результат (в т.ч. и id ресурса раздела «Машины») отдаётся, в данном случае, сниппету msProducts, который его не обрабатывает, т.к. это не товар.
Пока думаю, что решить задачу можно предварительно отдав массив ID'шников некоему prepareSnippet. Он определит наличие в массиве ID ресурса с классом msCategory и обработает самостоятельно; остальные отдаст msProducts. Либо вносить правки в assets/components/msearch2/action.php и msearch2.class.php, чего не хотелось бы.
Хочу спросить совета: может быть кто-то сталкивался с подобной задачей или знает, как правильнее её реализовать?
Заранее благодарен!
Комментарии: 9
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
2 вариант. Используйте pdoResources, но у него есть параметры управления шаблоном в зависимости от неких условий, попробуйте настроить вывод для товаров одним способом, для категорий — другим
2 вариант: тоже без шаманства не прокатит, т.к. нужно подтягивать данные товара (картинка/цена). У меня в UI autocomplete они выводятся.
Готов оплатить данную работу.
Рецепт выложим сюда — думаю пригодится сообществу.
Алексей, не возьмёшься?
IDшники отдавать лучше не в msProducts, а в pdoResources, причём вызывать его с классом modResource и пытаться присоединять к нему поля товаров. Если есть присоединение — это товар, вот такой ему чанк, если нет — категория, другой чанк.
Понятное дело, что можно и один общий чанк с разруливанием внутри через Fenom.
Вообще, я думаю, этот функционал нужен любому магазину.
Т.к. искать нужно не только по товарам, но и по категориям. Конечно, если в выводе на фронт нужны данные товаров…
1. Запуск (Fenom)
2. Результат работы mSearchForm в tpl.mSearch2.ac отдаётся сниппету prepareSearchResult:
3. Пример куска чанка для продукта (с использованием Fenom):
,
затем
.
Получаем работающие фильтры по найденным товарам + отдельно оформленный результат поиска по остальным ресурсам.