Как настроить сортировку по популярности с помощью mSearch2?

Доброго времени суток!
Необходимо на страницу товара выводить количество покупок данного товара, а в каталоге добавить сортировку по популярности.
Как это можно сделать с помощью mSearch2. На сайте установлен miniShop2.
Денис
05 августа 2019, 22:54
modx.pro
90
0

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

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