Как настроить сортировку по популярности с помощью mSearch2?
Доброго времени суток!
Необходимо на страницу товара выводить количество покупок данного товара, а в каталоге добавить сортировку по популярности.
Как это можно сделать с помощью mSearch2. На сайте установлен miniShop2.
Необходимо на страницу товара выводить количество покупок данного товара, а в каталоге добавить сортировку по популярности.
Как это можно сделать с помощью mSearch2. На сайте установлен miniShop2.
Комментарии: 5
Начать стоит с того, что в рамках товара нет переменной, считающей количество покупок. Для того, чтобы её добавить, необходимо:
— расширить стандартную таблицу товаров, через плагин или дополнение msFieldsManager
— создать плагин на событие msOnCreateOrder, где вы будете перебирать корзину и приплюсовывать кол-во товаров в новое поле
— в mSearch2 работать с новым полем, как с обычным ms
— расширить стандартную таблицу товаров, через плагин или дополнение msFieldsManager
— создать плагин на событие msOnCreateOrder, где вы будете перебирать корзину и приплюсовывать кол-во товаров в новое поле
— в mSearch2 работать с новым полем, как с обычным ms
Первый и третий пункты я именно так и решил сделать. А насчёт второго пришла такая идея. В базе есть таблица modx_ms2_order с полями product_id и count. Соответственно, написать запрос к базе и суммировать все значения поля count и вывести их в расширенное поле из пункта 1. Сортировку производить по этому полю с помощью msSearch2.
Ваш вариант будет отрабатывать все дольше и дольше с ростом кол-ва заказов и товаров, поэтому вариант с готовым счетчиком предпочтительнее.
UPD: Впрочем, в то же время он избавляет от необходимости отслеживать побочные ситуации с товарами, такие как отмена заказа и пр. %)
UPD: Впрочем, в то же время он избавляет от необходимости отслеживать побочные ситуации с товарами, такие как отмена заказа и пр. %)
Согласен. Также, я выбрал мой вариант, так как мне нужно выводить на страницу товара сколько раз данный товар заказали за весь период. В базе есть необходимая информация. В вашем варианте отсчёт начнется с нуля. Я же прав?)
Конечно.
Можно через внешний скрипт сделать запрос к бд и, пробежавшись по modx_ms2_order, обновить данные до актуальных, но это уже частности.
Можно через внешний скрипт сделать запрос к бд и, пробежавшись по modx_ms2_order, обновить данные до актуальных, но это уже частности.
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.