[msProductDiscounts] Новая версия 1.4.1 - больше удобства использования.

Приветствую, по итогам дополнительных тестов и обратной связи от пользователей добавил ряд улучшений, убрал некоторые недостатки. Подробности под катом

С версии 1.4.1 сниппет вывода информации о скидках на конкретный товар удалён. Вместо него добавлен процессор.
Таким образом показ цены со скидкой происходит автоматически, если в чанк товара добавлены соответствующие атрибуты.
Так вся информация о товаре должна быть внутри блока с атрибутом data-mspd-product="{$id}" где $id — идентификатор товара в админке.
Блок вывода цены должен содержать атрибут data-mspd-price в качестве значения нужно указать цену товара, для старой цены data-mspd-old-price — значение старая цена.
Свойства и опции влияющие на цену нужно обозначать соответственно data-mspd-data (свойство, например артикул или цвет или вес)
и data-mspd-option (любая кастомная опция). При этом если html элемент, которому вы добавляете эти атрибуты НЕ содержит атрибута name, необходимо в качестве значения указать ключ опции или свойства,
например так: data-mspd-data=«color» или data-mspd-option=«length».
Такие свойства как
  • Производитель,
  • Страна изготовитель,
  • Новый,
  • Особый,
  • Популярный
можно не обозначать и не передавать в корзину, они проверяются по умолчанию.
Чтобы нулевая старая цена скрывалась необходимо обернуть весь блок вывода старой цены в элемент с атрибутом data-mspd-old-price-wrap и убедиться, что в стилях описан класс d-none, либо, если за визуальное скрытие элементов у вас отвечает другой класс, указать свой класс в системных настройках компонента.

Там же, в системных настройках, можно изменить время принудительной перезагрузки страницы с корзиной. Принудительная перезагрузка происходит 1 раз в сутки. Это нужно на случай если пользователь оставил вкладку браузера на длительное время, а срок действия акции закончился. Тогда принудительная перезагрузка обновит стоимость корзины. Если оставить системную настройку mspd_reload_interval пустой принудительной перезагрузки не случится.

Стандартный скрипт показывает цену со скидкой и старую цену. Однако может возникнуть необходимость показывать ещё какую-то информацию о скидках на данный товар.
Для этого есть событие в JavaScript (с версии 1.4.1) mspd-get-discounts
document.addEventListener('mspd-get-discounts', e => {
    console.log(e.detail);
    // e.detail.response - ответ сервера с реальной ценой, ценой со скидкой/скидками и списком всех применённых скидок
    // e.detail.wrapper - блок-обёртка товара обозначенная атрибутом data-mspd-product
    // e.detail.price - цена от которой рассчитывалась скидка
    // e.detail.target - элемент вызвавший событие
    // e.detail.object - объект JS класса mspdGetDiscounts можно использовать его метод форматирования цены
    //e.detail.object.formatPrice(e.detail.response.discount_price, e.detail.object.config.price_format, e.detail.object.config.price_format_no_zeros)
    });
Артур Шевченко
23 декабря 2022, 15:51
modx.pro
826
+9
Поблагодарить автора Отправить деньги

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

Николай Савин
23 декабря 2022, 18:10
0
Как 1.4.1? Вот только в прошлой статье 1.0.0 было вроде.
С версии 1.4.1 сниппет вывода информации о скидках на конкретный товар удалён. Вместо него добавлен процессор.
Честный semver подразумевает смену мажорной версии в таких случаях. Хотя ты конечно хозяин
    Артур Шевченко
    23 декабря 2022, 23:42
    0
    Я читал про то как менять версии. Может, я, конечно, что-то неправильно понял, но в целом изначальный функционал сильно доработан, поэтому 1.4.1
    Денис Усачев
    28 февраля 2023, 15:41
    0
    Есть пример как должен выглядеть шаблон товара со скидкой для вывода в категориях с mFilter2?
      Артур Шевченко
      28 февраля 2023, 18:20
      0
      Приветствую, к сожалению пока нет, документация в процессе написания.
      Владимир Ребров
      13 апреля 2023, 13:17
      0
      Будет ли работать в связке с msPromoCode2 из коробки?
      Денис Усачев
      30 июня 2023, 14:19
      0
      Как ограничить/ отключить скидку для применения в N-количестве до товара.
      Скажем скидка действует только два раза для товара в количестве макс 2 шт. либо два заказа по 1 шт
      Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
      8