Поиск по производителям товара
Задача:
Банальная в общем то задача. Есть список ссылок с названиями производителей товара такого вида:
При нажатии на ссылку должен выводиться список товаров соответствующего производителя в категории.
Я могу написать сниппет и решить задачу вручную, но существует mSearch который занимается всякими поисками и фильтрами товара. Я им не пользовался, и пробежавшись по описанию, не много запутался.
Судя по описанию и вопросам которые люди задают его обычно используют для текстового поиска или создания фильтров, а под для моей задачки, кажется, не используют.
Вопрос:
Каким путём лучше решать такую задачу, своим кодом или mSearch или ещё чем?
Я явно туплю, а здесь обычно быстро пинают в нужную сторону.
P.S.: не хочется строить велосипеды если mSearch не приспособленно для этого и в тоже время не хочется тратить время на сниппеты если он решает эту задачу на мах. Спасибо.
Комментарии: 7
Если речь про miniShop2 то эту задачу решает msProducts
Конечно, производители должны быть забиты в настройках и назначены товарам.
&where=`{"Vendor.name:LIKE":"%Sony%"}`
для вывода товаров производителя Sony&where=`{"Vendor.id":5}`
для вывода производителя с id = 5Конечно, производители должны быть забиты в настройках и назначены товарам.
Во! Спасибо. Я бы точно не додумался и нагородил огородов. :)
P.S.: конечно ms2, он уже как родной!
P.S.: конечно ms2, он уже как родной!
Не могу понять. Если у меня в ссылке указан id производителя то при переходе по ссылке этот id надо подставить в параметр «where» msProduct'а. Я так понимаю, что тут надо сделать некий финт ушами, чтобы всунуть id производителя в этот параметр. Но никак не допру как именно это сделать. Может подскажете чего?
В общем, сделал такую конструкцию:
Создал страницу ресурс Brand. с кодом:
&parents=`6` &returnIds=`1`
Создал страницу Test с формой:
Теперь при вводе в названий производителей товаров они правильно выводятся.
Осталось непонятным:
1) Как сделать так, чтобы поиск осуществлялся не через Ajax, а при переходе по ссылке?
2) Как передать номер текущего родителя в msProduct, чтобы искалось относительно текущей категории товара, а не по всем?
Создал страницу ресурс Brand. с кодом:
[[!getPage@GetPage?
&element=`msProducts`
&parents=`6`
&resources=`[[!mSearch@searchVendors]] `
]]
...
пагинация и JS скрипты
В mSearch параметры такие:&parents=`6` &returnIds=`1`
Создал страницу Test с формой:
<form class="sisea-search-form" action="[[~[[*id]]]]" method="get">
<fieldset>
<legend>AJAX поиск mSearch</legend>
<label>Строка поиска</label>
<input type="text" name="query" class="input-xlarge search-query" value="" placeholder="Введите запрос, например - modx">
<input type="submit" class="btn btn-success" value="Искать!" >
</fieldset>
</form>
<div id="site-search-results"></div>
Это всё по этому уроку.Теперь при вводе в названий производителей товаров они правильно выводятся.
Осталось непонятным:
1) Как сделать так, чтобы поиск осуществлялся не через Ajax, а при переходе по ссылке?
2) Как передать номер текущего родителя в msProduct, чтобы искалось относительно текущей категории товара, а не по всем?
1. Убери javascript, который реализует ajax запросы.
2. Если используешь mSearch, то нужно указать параметр
2. Если используешь mSearch, то нужно указать параметр
&parents=`[[*id]]`
Получилось, спасибо.
Осталась одна проблема которую не могу победить, хотя уже долго ковыряюсь:
Когда индексировал документы я добавил в параметрах поле vendor. Но протестировав поиск, я понял, что он не ищет по названиям производителей. Поиск осуществляется по стандартным полям и выводятся товары у которых в названии ([[*pagetitle]]) указано название производителя.
Ставил в параметрах includeMS: Да, не помогло. Ну это от отчаяния.
Видимо надо как то иначе индексировать либо это не возможно сделать. Прочесал все описания и комментарии по этому поводу, пока не нашёл ответа.
Использую mSearch.
Осталась одна проблема которую не могу победить, хотя уже долго ковыряюсь:
Когда индексировал документы я добавил в параметрах поле vendor. Но протестировав поиск, я понял, что он не ищет по названиям производителей. Поиск осуществляется по стандартным полям и выводятся товары у которых в названии ([[*pagetitle]]) указано название производителя.
Ставил в параметрах includeMS: Да, не помогло. Ну это от отчаяния.
Видимо надо как то иначе индексировать либо это не возможно сделать. Прочесал все описания и комментарии по этому поводу, пока не нашёл ответа.
Использую mSearch.
Всё, вопрос снимается. Всё решил написанием мини сниппета. Теперь уже ясно, что задача ерудовая. Хотя бился долго.
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.