[msProductDiscounts] Очень гибкая система скидок на товары miniShop2

msProductDiscounts предназначен для управления скидками на товары интернет-магазина на базе miniShop2. Интерфейс написан на чистом JS, а отрисовывается с помощью шаблонизатора Fenom, так что можно легко менять под себя. Но не это главное, самое важное под катом.
Основные возможности:
  1. Скидки на каждый N-ый товар;
  2. Скидки на каждую N-ую позицию в корзине
  3. Скидки по дням недели
  4. Скидки по группам пользователей
  5. Скидки по определённым датам, на определенный период или бессрочно
  6. Скидки по категориям, с возможностью исключить дочерние
  7. Скидки на определённый товар, с возможностью задать исключения по отдельным модификациям (требуется дополнение msOprionPrice2) или по опциями и основным свойствам
  8. Скидки на товары с определенными опциями и свойствами
  9. Скидки на отдельные модификации
  10. Возможность ограничить применение скидок общей суммой товаров в корзине
  11. Автоматическая актуализация корзины
  12. Возможность определить приоритетность скидок
  13. Вывод информации о скидках на странице товара
  14. Возможность привязать ресурс с подробным описанием скидки
  15. Возможность вывести информацию о скидке на странице товара
  16. Возможность задать размер скидки как в относительных единицах измерения (%) так и в абсолютных
ВИДЕО ПРЕЗЕНТАЦИЯ

Для начала работы требуется просто установить компонент и задать параметры скидки. Если в параметрах скидки есть зависимость от опций, свойств или модификаций, эта информация должна передаваться на сервер стандартными средствами miniShop2, т.е. через массив options.

Для того, чтобы работала актуализация корзины, нужно в системных настройках указать ID страницы с корзиной (mspd_cart_page).
В чанке корзины должны присутствовать следующие элементы
<span data-ms-price>{$product.price}</span>
<span data-ms-old-price>{$product.old_price}</span>
<span data-ms-cost>{$product.cost}</span>
Ключевой момент здесь это data-атрибуты любого из них может не быть, но в этом случае, информация обновляться не будет, пока не перезагрузят страницу.

Пример вызова сниппет для показа скидок на текущий товар (данный вызов следует размещать на странице товара). Вызов написан для Fenom
{set $discounts = '!getProductDiscounts' | snippet:[
            'id' => $_modx->resource.id,
            'tpl' => '',
            'tplEmpty' => '@INLINE Скидки для данного товара не найдены.',
            'price' => $_modx->resource.price,
            'weight' => $_modx->resource.weight,
            'options' => ['color'=>'','size'=>'','test_5'=>'','test_6' => '', 'modification' => 1],
            'data' => ['article' => ''],
            'total_cost' => 999999
 ]}
 {$discounts | print}
Компонент платный, потому что нужны деньги на развитие miniShop2 и модернизацию данного портала, добровольных пожертвований недостаточно. Честно, хотел поставить цену 600 рублей, но политика modstore не позволяет мне быть таким щедрым, так что если компонент пройдёт модерацию будет стоить дороже. Если не пройдёт — буду бесплатно раздавать.
Артур Шевченко
29 ноября 2022, 22:17
modx.pro
812
+15
Поблагодарить автора Отправить деньги

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

deleted
30 ноября 2022, 08:43
0
@Артур Шевченко mimiShop2) мимимишный)
Николай Савин
30 ноября 2022, 15:39
0
Не вижу в описании скидки на бренд. Такое есть? У меня часто спрашивают
    Артур Шевченко
    30 ноября 2022, 16:57
    0
    Есть скидка по основным полям товара, в том числе и по производителю, только указывать надо id, а не название.
      Николай Савин
      30 ноября 2022, 17:00
      0
      С точки зрения пользовательского опыта это очень неудобно. Было бы прикольно получить autocomplete по поиску имени вендора. Ну и по другим полям, категория например
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
7