Варианты товара в скрипте магазина — размер, цвет, комплектация с отдельным остатком и часто своей ценой. Это не декоративные кнопки на карточке. Если остаток общий «100 штук на все размеры», вы продадите десятый XL при нуле на складе и уйдёте в ручные извинения.
Каталог — каталог товаров, заказ — магазин.
Как обычно устроено в админке
- Атрибуты: «Размер», «Цвет»…
- Значения: S/M/L, чёрный/белый…
- Комбинации → SKU (артикул варианта).
- На каждый SKU: остаток, цена, иногда своё фото.
- Признак «доступен к покупке».
Не плодите атрибут на каждое слово маркетолога. Два-три измерения на старте. Остальное — в описание.
Карточка на витрине
- Покупатель выбирает размер и цвет.
- Цена и наличие обновляются под SKU.
- Кнопка «в корзину» неактивна, пока вариант не выбран (если варианты обязательны).
- В корзину уходит id варианта, не только id товара.
Если фото зависят от цвета — меняйте главное превью. Иначе люди заказывают чёрное, глядя на белое. Подходы к картинкам пересекаются с загрузкой фото, но без модерации чужих авторов.
Остатки: правила, которые спасают
- Покупка списывает остаток SKU.
- При отмене неоплаченного — возврат резерва по вашей политике.
- Нулевой SKU нельзя положить в корзину; соседний размер может быть в наличии.
- В админке заказ показывает «Футболка / M / чёрный», не только название родителя.
- Импорт остатков — по артикулу варианта.
Онлайн-оплата и двойное списание — боль вебхуков: ЮKassa. Идемпотентность обязательна.
Цены на вариантах
Иногда XL дороже, иногда комплект «с ремнём» дороже базы. Храните цену на SKU. Промокоды процентом считают от цены выбранного варианта — промокоды. Зачёркнутая «старая цена» тоже должна быть вариантной, если акция только на один цвет.
Типичные поломки
- В корзине товар без размера — сборщику гадать.
- Два одинаковых SKU с разными id после импорта — остатки разъезжаются.
- Фильтр «цвет=чёрный» в каталоге не находит товар, потому что цвет только на варианте, а индекс построен по родителю.
- Смена состава атрибутов после продаж без миграции — старые заказы отображаются криво.
- Мобильный UI: второй выпадающий список уезжает за экран.
Приёмка: завести 2×2 матрицу (два размера × два цвета), остатки разные, купить один SKU, проверить админку и остатки соседей.
Когда варианты не нужны
Уникальные товары, услуги, цифровые позиции без модификаций — хватит одной карточки. Не включайте модуль SKU «потому что в чеклисте есть». Сложность должна окупаться ассортиментом.
Checkout обязан тащить вариант до конца — checkout. Доставка от варианта обычно не зависит, но вес/габариты иногда да — заложите поля, если курьерка считает по ним: доставка.
Варианты — отдельные остатки и честная корзина. Заведите SKU, проверьте матрицу остатков, зафиксируйте вариант в заказе. Тогда размер M закончится сам по себе, а не вместе со всем складом «на глаз».
Именование и артикулы
Схема артикулов лучше договориться до импорта: BASE-COLOR-SIZE или внутренние коды поставщика один-в-один. Смена схемы после тысячи заказов — боль. В названии строки заказа для человека: «Кроссовки Runner / 42 / чёрный», в учёте — SKU. Штрихкод, если нужен, вешайте на вариант, не на родителя.
- Запрет двух SKU с одним артикулом на уровне БД.
- Выключение варианта без удаления — история заказов цела.
- Массовое «поставить остаток 0 всем XL» — отдельное действие с подтверждением.
Витрина и фильтры по атрибутам
Фильтр «цвет=синий» должен находить родителя, если синий есть хотя бы в одном доступном SKU. Карточка в листинге показывает «от {min_price}», если цены вариантов разные. Бейдж «нет в наличии» — только когда все SKU нулевые; если M закончился, а S есть — карточка живая. Это мелочи, из которых складывается ощущение, что магазином кто-то рулит.
Для маркетплейс-выгрузок наружу тоже нужны стабильные SKU. Пока выгрузок нет — всё равно не плодите хаос: через полгода придёт идея «выгрузить в Яндекс», и кривые id всплывут. Checkout уже должен писать variant_id в заказ — проверьте на оформлении до рекламы размерной сетки.
Обучение менеджера: пять минут у экрана «как завести матрицу 2×2» важнее длинной инструкции в PDF. Пока человек не создал варианты руками, он будет снова и снова править «общий остаток» и ломать учёт.
Возвраты и обмен по размеру
Когда покупатель меняет M на L, в админке это два движения остатка или отдельный статус обмена — как договоритесь. Главное не делать вид, что «просто поменяли текст в заказе»: склад разъедется. Варианты товара размер и цвет существуют именно затем, чтобы такие операции были явными. В скрипте магазина PHP фиксируйте variant_id в истории; иначе через месяц не соберёте статистику «какой размер улетает».
Перед сезоном заводите матрицы заранее, не в день съёмки для рекламы. Проверьте, что карточка на мобиле не даёт положить в корзину без размера. Это мелкая проверка на две минуты, которая экономит пачку возвратов. SKU, остатки, корзина, заказ — один язык. Когда он общий у витрины и склада, варианты перестают быть источником хаоса и становятся нормальным инструментом ассортимента.
Отчёт по SKU
Раз в неделю смотрите, какие варианты нулевые, какие висят без продаж, где цена варианта выбивается из ряда из-за опечатки. Варианты товара размер и цвет без отчёта превращаются в свалку. Скрипт магазина PHP обычно умеет фильтр по наличию — пользуйтесь. Перед поставкой сверяйте матрицу с накладной поставщика по артикулам, не по названиям цветов «как показалось».
На витрине для матрицы 5×5 не показывайте все комбинации огромной таблицей: выберите размер, затем доступные цвета. Меньше ошибок пользователя. В корзине дублируйте выбранный вариант текстом. На сборке заказа это экономит минуты и возвраты «приехало не то». SKU — язык склада; научите ему и сайт, и людей.
Частые вопросы
Варианты товара размер цвет скрипт?
Варианты — отдельные остатки на размер/цвет, а не одна кнопка «купить».
Сколько времени занимает «Варианты товара: размер и цвет»?
Ориентир по тексту мануала — около 5 мин. На практике зависит от хостинга и подготовки базы.
Нужен ли отдельный сервер?
Для большинства скриптов достаточно хостинга или VDS с PHP и MySQL. Подбор сервера — в разделе VDS и требованиях к PHP/MySQL.
Готовый магазин без wordpress?
Разбор рядом в мануале по этому запросу. готовый магазин без wordpress
Как настроить корзину и оплату в скрипте магазина?
Разбор рядом в мануале по этому запросу. как настроить корзину и оплату в скрипте магазина