msReference

Автоматическое формирование списков рекомендованных товаров
Автор дополнения
Алексей Шумаев
Пакетов
12
Закачек
1 381
Обычно отвечает в течение 4 часов
Автор дополнения
Пакетов
12
Закачек
1 381
Обычно отвечает в течение 4 часов
Версия 1.1.0-beta
Дата выпуска 07.06.2019
Загрузки 21
Просмотры 3 754
Внимание, этот компонент требует версию PHP 5.6 или выше! Если ваш сайт использует PHP ниже требуемого, установка этого дополнения может его сломать.
Внимание, этот компонент требует версию MODX не ниже 2.6 !
Позволяет автоматически стоить списки товаров для «захвата» покупателя на основании реальных данных заказов на сайте. Может быть крайне полезен для привлечения и удержания покупателей. Позволяет выводить актуальные товары без постоянного редактирования товаров (например, меток «популярный»).

Формирование списков «Популярные товары», «Рекомендуем также», «С этим товаров покупают»
Компонент анализирует заказы на заданную глубину и строит на основании собранных данных списки рекомендованных товаров как общий, так и для каждого пользователя индивидуально.
Списки могут формироваться как руками из панели управления, так и автоматически посредством crontab. Полученные списки можно редактировать вручную.

Формы в панели управления
Для анонимных и авторизованных пользователей настройки идентичны и разделены на 2 вкладки для того, чтобы можно было формировать списки с разными настройками:


Общий список товаров:

Здесь можно вкл/откл товары, добавить руками нужный товар в список.

Быстрый старт

// «Рекомендованные товары» общий на основе всех заказов
[[!msReferenceGet? &parents=`0`&sortby=``]]

// «Вы часто покупаете» для пользователя на основе его заказов + часть общего списка
[[!msReferenceGet? &expand=`1`&user_id=`[[+modx.user.id]]`&parents=`0`&sortby=``]]

// «Вы часто покупаете» для пользователя на основе его заказов
[[!msReferenceGet? &expand=`2`&user_id=`[[+modx.user.id]]`&parents=`0`&sortby=``]]

// «Рекомендуем также» для пользователя (популярные товары, которые пользователь не покупает)
[[!msReferenceGet? &expand=`3`&user_id=`[[+modx.user.id]]`&parents=`0`&sortby=``]]

// «С этим товаром покупают»
[[!msReferenceRelated? parents=`0`]]
Подробнее ниже.

Настройка:
Отправлять уведомления: «Да/Нет». Если «Да» — по готовности списков компонент отправит уведомление на указанный адрес. Полезно если списки обновляются по cron'у
Email для уведомлений: Куда отправлять уведомления о формировании новых списков
Ограничение по дате заказа: По эту дату включительно компонент анализирует заказы
Ограничение по дате заказа: По эту дату включительно компонент анализирует заказы
Режим обновления: «1» — обновлять список, кроме товаров, добавленных в список вручную; «2» — полное обновление.
Частота обновления: «0» — никогда (вручную из панели сайта); «1» — всегда (по вашим настройкам crontab для файла {core}/components/msreference/cron/run.php)
Сегмент: количество продаж в штуках: собираются товары, которые больше всех продаются в штуках
Сегмент: частота продаж: собираются товары, которые чаще всех продаются
Сегмент: сумма продаж: собираются товары, которые больше всех продаются в штуках в деньгах
Сегмент: стоимость в заказе: собираются товары, сумма стоимости которых в заказе максимальна
Сегмент: новинка: добавить товары с пометкой «новинка» (случайный выбор)
Сегмент: популярный: добавить товары с пометкой «популярный» (случайный выбор)
Сегмент: особый: добавить товары с пометкой «особый» (случайный выбор)
Для всех сегментов: Формат «X,Y». Где «X» — кол-во товаров данного сегмента в итоговом списке, «Y»- приоритет.
Чем выше приоритет, тем выше итоговый балл позиции (можно использовать при сортировке товаров списка).


Вывод списков
Рекомендованные товары выводятся сниппетом msReferenceGet, который является обёрткой для стандартного msProducts и принимает все его параметры + имеет собственные дополнительные параметры:
  • rf-sortby: Сортировка выборки. По умолчанию = «mark» — вес ресурса; segment — название сегмента (варианты: «frequency», «sum», «count», «cost», «popular», «favorite»
  • rf-sortdir: Направление сортировки
  • user_id: id пользователя, по умолчанию = 0
  • expand: Расширить выборку по пользователю за счёт общего списка. Подробное описание ниже.
  • snippet: Сниппет для вывода результатов, по умолчанию msProducts
  • rf-return: Режим вывода. «ids» — список id ресурсов через «,»; array — массив, по умолчанию «chunk» — указанный чанк msProducts
Для того, чтобы работала сортировка по весу/сегменту, нужно выставить стандартный парамер «sortby» пустым, иначе msProducts изменит сортировку на дефолтную.

Выводим разные варианты списка «Рекомендованные товары» для пользователя.
Есть 3 варианта вывода списка рекомендованных товаров пользователя, за это отвечает параметр «expand»:
  1. Список товаров пользователя + общий (expand =1): если у данного пользователя нет рекомендованных товаров (он пока ничего не заказывал), или их меньше limit, сниппет добавит недостающие товары из глобального списка.
  2. Список товаров пользователя (expand =2): по-сути, это список вида «Вы часто покупаете» — выведет товары, которые покупает данный пользователь.
  3. Список товаров БЕЗ товаров пользователя (expand =3): обратно предыдущему — список вида «Рекомендуем также» — выведет товары, которые НЕ покупает данный пользователь, но покупают другие.
Общий список «Рекомендованные товары» отличается только параметром «user_id» = 0 (по умолчанию), «expand» при этом, конечно, не учитывается.
//fenom
    {'!msReferenceGet' | snippet : ['expand' => 1,' user_id' => $_modx->user.id]}
   //PHx:
   [[!msReferenceGet? &user_id=`[[+modx.user.id]]`&parents=`0`&sortby=``]]


Выводим список «C этим товаров покупают».
Сниппет msReferenceRelated, который также является обёрткой для стандартного msProducts и принимает все его параметры + имеет собственные дополнительные параметры:
  • id: id товара, по умолчанию — текущий ресурс
  • snippet: Сниппет для вывода результатов, по умолчанию msProducts
//fenom
    {'!msReferenceRelated' | snippet : ['parents' => 0]}
    //pHx
    [[!msReferenceRelated? parents=`0`]]


Автоматическое формирование списков по cron
Настройте запуск скрипта по расписанию (crontab).
Например:
# запускать каждый день в 2 часа ночи формирование глобального списка
0 2 * * * php ~/core/components/msreference/run.php global 
# запускать в 00:00 первого числа каждого месяца формирование списков пользователей
@monthly php ~/core/components/msreference/run.php user


Пакет содержит 1 чанк (шаблон письма-уведомления).

1.0.10-beta

Deleted snippet msReferenceGetIds Added snippet msReferenceGet

1.0.9-beta

Added snippet msReferenceRelated

1.0.8-beta

Added selection of related products

1.0.7-beta

Add property «expand»

1.0.6-beta

Errors fixed

1.0.5-beta

First public release

1.0.3-beta

First release

Последние обсуждения в сообществе MODX.pro