Сниппет ms3Remains
Возвращает остаток числом, текстом наличия, JSON-объектом или картой значений опций.
Параметры
| Параметр | По умолчанию | Описание |
|---|---|---|
id | id текущего ресурса | id товара |
variant | 0 | id варианта ms3Variants (0 — не используется) |
return | data | data — число или текст наличия, json — объект с количеством, options — остатки по значениям опций |
| любые другие | — | опции товара, например &color=красный`` |
Как считается результат:
- без опций в вызове — сумма остатков по всем строкам товара
- переданы все опции из
ms3remains_option_keys— остаток одной комбинации - переданы не все опции — сумма по подходящим комбинациям
&variant=27`` — остаток варианта ms3Variants с этим id
Если передан чужой вариант или опции не сходятся со строками остатка, сниппет вернёт 0, текст «Нет в наличии» или JSON с quantity: 0. Страница при этом не падает.
Формат вывода задают также системные настройки ms3remains_hide_quantity и ms3remains_moreless_count. См. Системные настройки.
Базовый вызов
Остаток: {'!ms3Remains' | snippet}Остаток: [[!ms3Remains]]
Другой товар
{'!ms3Remains' | snippet : ['id' => 22]}[[!ms3Remains? &id=`22`]]Комбинация опций
{'!ms3Remains' | snippet : [
'id' => $_modx->resource.id,
'color' => 'красный',
'size' => 'M',
]}[[!ms3Remains?
&id=`[[*id]]`
&color=`красный`
&size=`M`
]]Частичный набор суммирует совпавшие комбинации. Пример: при ключах color,size вызов только с &color=красный`` вернёт сумму остатков по всем размерам красного.
Вариант ms3Variants
{'!ms3Remains' | snippet : [
'id' => $_modx->resource.id,
'variant' => 27,
]}[[!ms3Remains? &id=`[[*id]]` &variant=`27`]]Формат json
{'!ms3Remains' | snippet : ['id' => 22, 'return' => 'json']}[[!ms3Remains? &id=`22` &return=`json`]]Пример ответа:
{"product_id": 22, "variant_id": null, "quantity": 5, "available": true}Формат options
Нужен, чтобы на карточке товара скрыть значения опций с нулевым остатком (например не показывать «синий», если его нет). Один вызов возвращает JSON: по каждой опции из ms3remains_option_keys — значения и сколько штук на остатке.
{'!ms3Remains' | snippet : ['id' => $id, 'return' => 'options']}[[!ms3Remains? &id=`[[+id]]` &return=`options`]]Пример ответа:
{"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} из карточки товара (его заполняет проекция). Некэшируемый сниппет на каждой строке каталога тяжелее. Рецепты: Остатки.
