Как организовать характеристики товаров во всём каталоге
Единый справочник полей, типы и единицы, модель и вариант, импорт поставщика и контроль качества. Пример перехода от исходных строк к фильтрам.

Характеристики всего каталога нужно организовать как единый справочник: какое поле означает свойство, где оно хранится, в каких единицах измеряется и откуда приходит значение. Иначе «объём», «вместимость» и «V» могут стать тремя несогласованными полями, а фильтры перестанут собирать одинаковые товары.
Это задача данных каталога, а не только оформления одной карточки. Начните с одной категории и небольшого пилота, затем переносите подтверждённые правила на остальные товары.
Категория, свойство и вариант решают разные задачи
Категория объединяет товары по понятной группе. Характеристика описывает свойство: материал, объём или длину. Вариант — покупаемая версия модели, например конкретный цвет и размер, которой может соответствовать собственный складской артикул, SKU.
Общие свойства модели можно наследовать, но отличающиеся у вариантов значения должны храниться на нужном уровне. Если размер влияет на цену и остаток, нельзя оставить один общий размер для модели и надеяться, что карточка сама выберет правильный.
Не смешивайте размеры товара и упаковки, номинальные и внешние габариты, состав материала и название коллекции. Похожая строка поставщика ещё не означает одинаковый смысл. Оформление для покупателя отдельно раскрывает статья о характеристиках карточки.
Как составить реестр полей
Для каждого поля запишите стабильный ключ, понятное название, тип данных, единицу, допустимые значения, уровень хранения и источник. Добавьте обязательность для категории, ответственного и использование: карточка, фильтр, поиск, выгрузка.
| Поле учебного реестра | Тип и правило | Применение |
|---|---|---|
| volume_ml, «Объём» | Число в миллилитрах, без единицы внутри числа | Карточка и числовой отбор |
| material, «Материал» | Значение из согласованного списка | Сравнение и фильтр |
| color_family, «Группа цвета» | Единый словарь | Общий цветовой фильтр |
| supplier_color_name, «Цвет изготовителя» | Исходная строка | Уточнение варианта для покупателя |
Разделение двух цветовых полей сохраняет точное название изготовителя и позволяет отбирать похожие оттенки. Не объединяйте разные материалы и цвета только потому, что так короче словарь.
Неизвестное значение не равно нулю, отсутствию свойства или ответу «нет». Для него нужен отдельный статус и правило исправления. Если размер необходим для проверки совместимости, товар с неизвестным размером не должен автоматически считаться подходящим.
Учебный переход от строк поставщика к данным
Предположим, вымышленный магазин получает контейнеры от двух поставщиков. Значение «1.2» у второго подтверждено документацией как литры; без этого подтверждения автоматическое умножение было бы догадкой.
| Исходная строка | Нормализованное значение | Основание |
|---|---|---|
| «Объём: 1,2 л» | volume_ml = 1200 | 1,2 × 1 000 мл |
| «V: 1200 ml» | volume_ml = 1200 | Уже задано в миллилитрах |
| «Вместимость: 1.2» | volume_ml = 1200 | Единица подтверждена у источника |
| Пустое поле | Значение неизвестно | Не подставлять 0 |
Сначала сохраняют исходный текст и идентификатор товара поставщика, затем применяют правило соответствия. После преобразования проверяют число, единицу и допустимость для категории. Упаковочный объём не должен попадать в вместимость контейнера даже при одинаковой единице.
Если поставщики расходятся по одному артикулу, задайте приоритет источников и процесс разбора конфликта. Новая строка импорта не должна молча перезаписывать подтверждённый замер. Храните происхождение значения и дату получения там, где это нужно для обновления.
Как передать свойства в карточку и фильтр
Фильтр должен использовать нормализованное поле, а карточка — показывать его с понятной единицей. Исходные «1,2 л» и «1200 ml» тогда попадают в один отбор. Одинаковый интерфейс не поможет, если внутри сохранены несовместимые типы данных.
Для вариантов проверьте связку артикула, выбранных свойств, цены и наличия. При переключении цвета карточка и корзина должны показывать одну покупаемую версию. Подробности — в вариантах размеров и цветов.
Не превращайте каждое поле в фильтр. Дайте отбор по свойствам, которые помогают выбирать и достаточно заполнены; редкие или свободные комментарии могут оставаться в карточке. Правила пользовательского отбора раскрывает настройка фильтров.
Почему справочник не равен микроразметке
Внутренний реестр — источник данных. Машинная разметка страницы и товарный фид — отдельные потребители с собственными требованиями. Например, нормализованный цвет может использоваться в карточке, фильтре и поддерживаемом поле Product, но произвольное внутреннее имя не становится стандартным свойством Schema.org.
Составьте соответствие «внутреннее поле — видимое значение — поле выгрузки — поддерживаемое свойство разметки». Для цены и наличия используйте актуальные данные конкретного предложения, а не неизменяемую характеристику модели. Не копируйте один Product со случайной ценой на весь список категорий.
Внедрение Product и проверка страницы раскрыты в микроразметке товара. Валидатор не заменяет проверку, что видимые свойства и выбранный вариант совпадают с переданными данными.
Как принять пилот и повторный импорт
Возьмите категорию, разные варианты, пустые значения и конфликт источников. Проверьте преобразования, обязательные поля и единицы, затем откройте товар, фильтр и выгрузку. В учебном примере три известные строки должны дать 1200 мл, а пустая остаться неизвестной.
Повторите импорт тех же данных: он не должен создавать новое поле «Объем» рядом с «Объём» или новый вариант того же артикула. Затем измените один исходный размер в тестовой копии и проследите обновление всех нужных мест.
Назначьте владельца словаря и порядок добавления нового свойства. Без этого после следующего поставщика справочник снова разойдётся. Массовый перенос начинайте после пилота, сохранив возможность восстановить исходные значения и проверить конфликтные строки.