Skip to content
ms3Remains
Остатки товаров MiniShop3 по комбинациям опций
  • MODX 3
  • PHP 8.2
  • miniShop3
  • Vue 3
  1. Компоненты
  2. ms3Remains
  3. Витрина
  4. Сниппет ms3Remains

Сниппет ms3Remains

Возвращает остаток числом, текстом наличия, JSON-объектом или картой значений опций.

Параметры

ПараметрПо умолчаниюОписание
idid текущего ресурсаid товара
variant0id варианта ms3Variants (0 — не используется)
returndatadata — число или текст наличия, json — объект с количеством, options — остатки по значениям опций
любые другиеопции товара, например &color=красный``

Как считается результат:

  • без опций в вызове — сумма остатков по всем строкам товара
  • переданы все опции из ms3remains_option_keys — остаток одной комбинации
  • переданы не все опции — сумма по подходящим комбинациям
  • &variant=27`` — остаток варианта ms3Variants с этим id

Если передан чужой вариант или опции не сходятся со строками остатка, сниппет вернёт 0, текст «Нет в наличии» или JSON с quantity: 0. Страница при этом не падает.

Формат вывода задают также системные настройки ms3remains_hide_quantity и ms3remains_moreless_count. См. Системные настройки.

Базовый вызов

fenom
Остаток: {'!ms3Remains' | snippet}
modx
Остаток: [[!ms3Remains]]

Остаток на карточке товара

Другой товар

fenom
{'!ms3Remains' | snippet : ['id' => 22]}
modx
[[!ms3Remains? &id=`22`]]

Комбинация опций

fenom
{'!ms3Remains' | snippet : [
    'id' => $_modx->resource.id,
    'color' => 'красный',
    'size' => 'M',
]}
modx
[[!ms3Remains?
    &id=`[[*id]]`
    &color=`красный`
    &size=`M`
]]

Частичный набор суммирует совпавшие комбинации. Пример: при ключах color,size вызов только с &color=красный`` вернёт сумму остатков по всем размерам красного.

Вариант ms3Variants

fenom
{'!ms3Remains' | snippet : [
    'id' => $_modx->resource.id,
    'variant' => 27,
]}
modx
[[!ms3Remains? &id=`[[*id]]` &variant=`27`]]

Формат json

fenom
{'!ms3Remains' | snippet : ['id' => 22, 'return' => 'json']}
modx
[[!ms3Remains? &id=`22` &return=`json`]]

Пример ответа:

json
{"product_id": 22, "variant_id": null, "quantity": 5, "available": true}

Формат options

Нужен, чтобы на карточке товара скрыть значения опций с нулевым остатком (например не показывать «синий», если его нет). Один вызов возвращает JSON: по каждой опции из ms3remains_option_keys — значения и сколько штук на остатке.

fenom
{'!ms3Remains' | snippet : ['id' => $id, 'return' => 'options']}
modx
[[!ms3Remains? &id=`[[+id]]` &return=`options`]]

Пример ответа:

json
{"color":{"красный":4,"синий":0},"size":{"M":4,"L":0}}

В шаблоне или JS не показывайте значения с количеством 0. Если ms3remains_option_keys пуст, в ответ попадут все опции, которые уже есть в строках остатка этого товара.

«В наличии / нет в наличии» и порог «Много»

Включите ms3remains_hide_quantity. Сниппет вернёт текст из лексиконов ms3remains_remains_in_stock / ms3remains_remains_out_of_stock.

Задайте ms3remains_moreless_count, например 10. Остаток строго больше порога выводится словом «Много» (лексикон ms3remains_remains_many), остальное — числом. При hide_quantity порог игнорируется.

В каталоге

В списках товаров обычно хватает поля [[+stock]] / {$stock} из карточки товара (его заполняет проекция). Некэшируемый сниппет на каждой строке каталога тяжелее. Рецепты: Остатки.