Skip to content
ms3Discounts
Правила скидок для MiniShop3. Без промокодов
  • MODX 3
  • PHP 8.2
  • miniShop3
  • Vue 3
  1. Компоненты
  2. ms3Discounts
  3. FAQ

FAQ ​

Почему в каталоге нет бейджа, а на карточке есть? ​

Выведите бейдж вызовом ms3discountsGetDiscount в чанке строки с параметром id товара. Цены в строках msProducts пересчитывает плагин ms3discounts.

Почему бейдж на витрине не учитывает условия корзины? ​

Сниппет рассчитывает цену одного товара вне контекста корзины (hasCart = false). Условия на общую сумму, количество штук или вес корзины (провайдер cart) получают статус undetermined и на цену карточки не влияют. Покупатель видит только безусловную скидку на единицу товара.

Почему в строке msProducts нет бейджа при prepareSnippet? ​

  1. У правила должен быть включён флаг «В каталоге». В режиме prepare-row сниппет отбирает правила по этому флагу; вызов с id без pagetitle — по «В товаре».
  2. В строке каталога должны присутствовать id и pagetitle. По ним сниппет определяет режим prepare-row. Если полей нет, вызов трактуется как обычный запрос списка.

Сниппет распаковывает вложенный ключ row и добавляет в строку name, description, percent, price, base_price, discount, sale_discount, remains, date_end и sale_id.

Другой путь: вызвать сниппет в чанке строки. См. Скидки в каталоге.

В каком формате выводится таймер обратного отсчёта? ​

Скрипт default.js находит на странице элементы .ms3d_remains[data-remain] и преобразует секунды в читаемый формат: Nд ЧЧ:ММ:СС. Если до завершения осталось меньше суток, дни скрываются и остаётся формат ЧЧ:ММ:СС.

Как работает правило «N-й товар»? ​

Скидка применяется к каждому N-й товару в корзине при значении параметра n ≥ 2. Все подходящие под правило единицы товара сортируются от дешёвых к дорогим. Скидка применяется к более дешёвым штукам. Если общее количество подходящих товаров меньше n, скидка не применяется.

Как добавляются и удаляются подарки? ​

Подарок создаётся в заказе отдельной строкой с ценой 0 и отметкой ms3discounts_gift = true. Если покупатель удаляет основной товар из корзины или уменьшает количество ниже порога, плагин удаляет подарочную строку при следующем пересчёте.

Почему BuyNow ничего не вывел? ​

  1. У акции включён флаг show_in_catalog.
  2. При значении force_date=1 (по умолчанию) у акции заполнена дата окончания date_end.
  3. В правиле выбрана хотя бы одна include-цель: товар, категория или производитель.

Акция без конкретных include-целей действует на весь каталог в корзине. Сниппет ms3discountsBuyNow не включает её в выборку, чтобы не разворачивать весь каталог магазина.

Если ID товаров найдены, но список пуст, проверьте параметр parents. Сниппет ms3discountsBuyNow подставляет parents=0, если параметр не был передан.

Остаётся сырое число секунд вместо таймера ​

Подключите JS-файл витрины. В чанке нужен элемент с классом .ms3d_remains и атрибутом data-remain:

fenom
<span class="ms3d_remains" data-remain="{$remains}"></span>

Сниппеты ms3discountsBuyNow и ms3discounts подключают скрипт по умолчанию из системной настройки ms3discounts_frontend_js.

Нужно ли вызывать сниппет в корзине? ​

Нет. Корзину пересчитывает плагин ms3discounts. Сниппеты витрины выводят бейджи, карточки и каталоги.

Почему в корзине цена без скидки? ​

  1. Проверьте, что настройка ms3discounts_enabled включена.
  2. Проверьте, что правило активно и текущее время попадает в заданный период, дни недели и контекст.
  3. Флаги витрины (show_in_catalog, show_in_product) влияют только на сниппеты и не отключают скидку в корзине.
  4. После сохранения правила очистите кэш MODX и измените состав корзины.
  5. Правила с включённым флагом «Только после активации» применяются только после вызова сервиса ms3discounts_activator.

Есть ли промокоды? ​

Пакет не включает промокоды. Скидки с активацией подключает внешний модуль через сервис ms3discounts_activator. Вызов: Интеграция.