mFilter + ms3Remains
Своего типа фильтра в пакете нет. Каталог и mFilter читают сумму остатков из проекции msProductData.stock. Включите ms3remains_sync_product_stock (по умолчанию включена) и при необходимости нажмите Перестроить в настройках проекции.
Документация mFilter для MiniShop3: интеграция MiniShop3.
Фильтр «только в наличии»
В наборе фильтров добавьте числовой фильтр по полю Data.stock с нижней границей 1.
{
"stock": {
"type": "number",
"source": "resource",
"field": "Data.stock",
"label": "Наличие"
}
}В форме (или через JS) задайте минимум 1. Пустой максимум оставляет верхнюю границу открытой.
Булев фильтр
Тот же эффект без ползунка:
{
"instock": {
"type": "boolean",
"source": "custom",
"label": "В наличии",
"condition": "Data.stock > 0"
}
}Условие опирается на проекцию ms3Remains (stock), не на Data.count.
Кнопка «Только в наличии»
Вне формы — через внешние фильтры и JS API. Ключ должен совпадать с ключом в наборе.
Числовой фильтр stock:
<button type="button" data-in-stock>Только в наличии</button>document.querySelector('[data-in-stock]')?.addEventListener('click', () => {
mfilterGet().setFilter('stock', { min: 1, max: '' });
});Булев фильтр instock:
document.querySelector('[data-in-stock]')?.addEventListener('click', () => {
mfilterGet().setFilter('instock', 1);
});Неотслеживаемые товары
Товар без сохранённых строк в ms3remains_remains в проекцию не попадает. В выдаче «в наличии» его не будет, пока вы не сохраните остаток на вкладке (хотя бы 0 для «нет в наличии» или положительное число).
После массового импорта или смены опций пересоберите проекцию: Проекция остатков.
Карточки MiniShop3 после AJAX
После подмены списка mFilter снова вызовите frontend MiniShop3:
document.addEventListener('mfilter:contentLoaded', function () {
window.ms3?.refresh?.();
});Подробнее: Frontend JavaScript MiniShop3.
Что не делает компонент
Собственный тип фильтра mFilter с переписыванием счётчиков опций по комбинациям остатков не поставляется. Для точного остатка комбинации на карточке товара используйте сниппет ms3Remains с &return=options``.
