Skip to content
msPriceTiers
msPriceTiers
Оптовые цены по количеству для MiniShop3 — пороги на товаре и категории, сумма корзины, шаблоны, массовые операции, ms3Variants
  1. Компоненты
  2. msPriceTiers
  3. Интеграция на сайте
  4. Подключение на сайте

Подключение на сайте

После msPriceTiers.initialize на странице доступны стили, скрипт и объект window.msPriceTiers.

Обязательная разметка

ЭлементКласс / атрибутНазначение
Форма товараmspricetiers-formКонтейнер для пересчёта цены
Поле количестваmspricetiers-quantityСлушатель input / change
Таблицаmspricetiers-table-wrapperОбёртка из чанка
Строка порогаmspricetiers-rowdata-count-from, data-price
Текущая ценаmspricetiers-costОбновляется из JS
Старая ценаmspricetiers-old-costЗачёркнутая цена из MS3

Пример формы — Быстрый старт.

Жизненный цикл на карточке

JavaScript API

fetchPrice(productId, quantity, variantId)

javascript
const result = await msPriceTiers.fetchPrice(123, 10, 5);
// result.price, result.old_price, result.has_tier, result.tier_id
ПараметрТипОписание
productIdnumberID товара
quantitynumberКоличество
variantIdnumber | nullID варианта ms3Variants

Запрос: POST на assets/components/mspricetiers/js/web/connector.php, action=price. Подробнее: AJAX API.

fetchSections(productId, quantity, options)

Возвращает HTML-секции для обновления без перезагрузки. Параметры options: cartItems, cartSubtotal.

javascript
const sections = await msPriceTiers.fetchSections(123, 10, {
  cartSubtotal: 15000,
});
// sections.table, sections.progress_cart, sections.progress_cart_sum, …

Live-секции (data-mspt-live)

Обёрните сниппет в контейнер с атрибутом:

ЗначениеСекция
progress-cartПрогресс по количеству в корзине
progress-cart-sumПрогресс до следующего порога по сумме корзины

После ms3:cart:updated (MiniShop3 после добавления, изменения или удаления позиции) mspricetiers.js вызывает action=sections и подменяет innerHTML найденных блоков.

На карточке товара при смене количества JS обновляет цену (.mspricetiers-cost) и подсказку у поля количества. Таблицу или бейдж без перезагрузки перерисуйте через fetchSections в своём коде или на QA-странице пакета.

События в браузере

СобытиеИсточникНазначение
ms3variants:selectedms3VariantsПересчёт цены при смене варианта
ms3:cart:updatedMiniShop3 CartUIОбновление блоков data-mspt-live
mspricetiers:cart:updatedmspricetiers.jsПосле обновления прогресса корзины (кастомные слушатели)

При mspricetiers_integrate_ms3variants = Да слушатель ms3variants:selected встроен в mspricetiers.js.

Ручной вызов после смены варианта:

javascript
document.addEventListener('ms3variants:selected', (event) => {
  const { productId, id } = event.detail;
  msPriceTiers.fetchPrice(productId, msPriceTiers.getQuantity(), id);
});

CSS-переменные

Компонент стилизуется через переменные --mspt-* на обёртке .mspricetiers-table-wrapper (или :root).

ГруппаПримеры
Цвета--mspt-primary-color, --mspt-success-color, --mspt-border-color
Типографика--mspt-font-size-price, --mspt-font-weight-bold
Таблица--mspt-table-row-active-bg, --mspt-table-row-active-border
Прогресс--mspt-progress-fill, --mspt-progress-height

Пример тёмной темы

css
[data-theme="dark"] .mspricetiers-table-wrapper {
  --mspt-primary-color: #64b5f6;
  --mspt-bg-header: #303030;
  --mspt-text-primary: #ffffff;
  --mspt-border-color: #424242;
}

Поддерживается prefers-color-scheme: dark в базовом CSS.

Конфигурация в браузере

window.msPriceTiersConfig (из сниппета initialize):

ПолеОписание
assetsUrlURL assets компонента
connectorUrl…/js/web/connector.php
enabledmspricetiers_enabled
applyOnProductPagemspricetiers_apply_on_product_page
quantityHintEnabledmspricetiers_progress_bar_enabled
numberLocaleru-RU / en-US из cultureKey
messages.*Шаблоны подсказок прогресс-бара (untilNext, savings, currency, …)

См. также