Порядок в каталоге интернет-магазина редко нарушается за один день. Обычно проблема накапливается постепенно: товары импортируются от разных поставщиков, меняются названия категорий, сотрудники создают новые характеристики, а одна и та же информация начинает существовать сразу в нескольких вариантах.
Через некоторое время в PrestaShop можно обнаружить «Цвет», «цвет», «Цвет товара» и «Основной цвет», несколько почти одинаковых категорий или повторяющиеся значения атрибутов.
Для небольшого магазина это выглядит как косметическая проблема. Для каталога на несколько тысяч товаров последствия уже заметнее: усложняется фильтрация, импорт становится менее предсказуемым, администратору сложнее понимать структуру данных, а дальнейшая автоматизация начинает зависеть от накопившихся дублей.
Разберёмся, откуда они появляются и как привести каталог PrestaShop в порядок без ручного редактирования каждого товара.
Почему в PrestaShop появляются дубли
Один из самых частых источников — импорт товаров.
Представим, что первый поставщик использует характеристику:
Материал
Второй передаёт:
Материал изделия
А третий:
материал
Для человека смысл очевиден. Но при автоматической обработке это три разных значения.
Похожая ситуация возникает с атрибутами:
Цвет
Цвет товара
Основной цвет
И с категориями:
Смартфоны
Мобильные телефоны
Смартфоны и телефоны
Причём проблема не обязательно связана с ошибкой импорта. Иногда поставщики действительно используют разные структуры данных, и магазин должен сам определить, какие элементы являются одинаковыми с точки зрения его каталога.
При регулярной синхронизации эта проблема постепенно усиливается. В отдельном материале про XML/YML-импорт мы уже разбирали, почему структуру фида поставщика лучше отделять от внутренней структуры магазина.
Почему просто удалить дубль недостаточно
В базе PrestaShop категория, характеристика или атрибут — это не просто строка с названием.
С ней могут быть связаны товары, комбинации, магазины Multistore, языковые значения, фильтры и другие данные.
Поэтому вариант «оставить правильную запись, а остальные удалить» может привести к потере связей.
Например, есть две характеристики:
Материал — используется у 800 товаров.
Материал товара — используется ещё у 350 товаров.
Если вторую просто удалить, задача не решается. Сначала необходимо перенести её значения и связи на ту характеристику, которая должна остаться.
С категориями ситуация ещё сложнее. Помимо товаров нужно учитывать подкатегории и основную категорию товара.
Поэтому правильная очистка каталога — это не удаление дублей, а объединение сущностей с переносом связанных данных.
Сначала нужно найти потенциальные дубли
В большом каталоге невозможно вручную просмотреть тысячи категорий, характеристик и значений.
Проблемные записи удобнее искать по степени похожести.
Например:
Красный
красный
Красный цвет
или:
Диаметр
Диаметр изделия
Такие совпадения ещё не означают, что записи обязательно нужно объединять. Автоматический поиск должен помогать обнаружить кандидатов, а окончательное решение лучше оставлять администратору.
Это особенно важно для похожих по написанию характеристик с разным смыслом.
Например, «Длина» и «Длина кабеля» могут выглядеть похожими, но объединять их нельзя.
Как правильно объединять категории
Категории требуют отдельного подхода.
Допустим, в каталоге появились:
Компьютеры
Компьютерная техника
ПК и компьютеры
Если принято решение оставить одну категорию, товары из остальных нужно перенести в неё.
Но этого недостаточно.
Нужно также проверить основные категории товаров, дочерние разделы и структуру дерева.
В результате должна остаться одна нормальная ветка каталога вместо нескольких параллельных разделов с одинаковым ассортиментом.
Это важно не только для администратора. Структура категорий напрямую связана с навигацией магазина и SEO: категории используются как самостоятельные посадочные страницы и участвуют в формировании структуры сайта.
Поэтому массовое объединение категорий лучше выполнять контролируемо, а не прямыми SQL-запросами к базе.
Характеристики и значения характеристик
С характеристиками приходится работать на двух уровнях.
Первый — сама характеристика:
Материал
Материал корпуса
Второй — её значения:
Хлопок
хлопок
100% хлопок
Иногда нужно объединить только значения. Иногда — целые характеристики.
При этом должны сохраниться связи с товарами.
После очистки вместо нескольких почти одинаковых вариантов остаётся одна структура, которую проще использовать в карточке товара, фильтрации и при следующем импорте.
Атрибуты требуют проверки комбинаций
В PrestaShop атрибуты используются для формирования комбинаций товара, поэтому их нельзя обрабатывать так же, как обычные характеристики.
Например, товар может иметь:
Размер: M
Цвет: Чёрный
Если после объединения двух значений атрибутов возникнут две одинаковые комбинации, простой перенос идентификаторов создаст конфликт.
Поэтому перед объединением атрибутов необходимо проверить будущие комбинации товаров.
Это одна из причин, почему массовая очистка атрибутов непосредственно через базу данных особенно рискованна.
Очистить каталог один раз недостаточно
Допустим, каталог приведён в порядок.
Но через неделю запускается очередной импорт, и поставщик снова передаёт:
Цвет товара
вместо используемого магазином:
Цвет
Если импортёр не знает об этом соответствии, дубль появится снова.
Поэтому следующий уровень работы с каталогом — нормализация данных.
Администратор один раз подтверждает соответствие:
Цвет товара → Цвет
После этого правило можно использовать во время следующих импортов.
То же самое работает с характеристиками и значениями атрибутов.
Так задача меняется: вместо постоянной борьбы с последствиями магазин постепенно формирует собственный словарь соответствий входящих данных.
Особенно важно при нескольких поставщиках
Чем больше источников товаров подключено к магазину, тем выше вероятность получить несколько обозначений одной сущности.
Один поставщик может передавать:
Длина
второй:
Длина, см
третий:
Length
четвёртый:
Длина изделия
Копировать структуру каждого поставщика непосредственно в PrestaShop — плохая стратегия для долгосрочной работы.
Внутри магазина должна существовать собственная единая структура каталога, а входящие данные должны сопоставляться с ней.
Такой подход особенно полезен для магазинов, которые регулярно обновляют XML/YML-каталоги нескольких поставщиков.
Что делать с уже накопившимися дублями
Для небольшого каталога часть работы действительно можно выполнить вручную.
Но когда речь идёт о тысячах товаров и сотнях характеристик, нужен отдельный инструмент, который понимает связи между сущностями PrestaShop.
Для этой задачи в Ewonta разработан модуль «Менеджер характеристик, атрибутов и категорий».
Он предназначен именно для очистки уже существующего каталога: помогает находить потенциальные дубли, объединять категории, характеристики и атрибуты, контролировать конфликты комбинаций и сохранять правила нормализации.
Менеджер характеристик, атрибутов и категорий для PrestaShop →
При больших операциях важна и возможность восстановления. Поэтому изменения выполняются контролируемо, а информация об операциях, конфликтах и снимках состояния позволяет безопаснее работать с рабочим каталогом.
Как не возвращаться к очистке каждые несколько месяцев
Лучший результат получается, когда очистка и импорт работают вместе.
Сначала существующий каталог приводится к нормальной структуре: объединяются реальные дубли и определяется, какие категории, характеристики и атрибуты являются основными.
После этого подтверждённые соответствия используются во время последующих импортов.
Получается последовательная схема:
нашли дубль → проверили → объединили → запомнили соответствие → не создаём его снова.
Так каталог со временем становится не сложнее, а стабильнее.
Порядок в каталоге — это часть архитектуры магазина
Дубли категорий и характеристик редко мешают сразу после появления.
Проблемы становятся заметны позже, когда каталог растёт, подключается второй поставщик, появляются новые языки, фильтры, интеграции и автоматические импорты.
Поэтому нормализация каталога — это не просто косметическая уборка в Back Office.
Хорошо организованные категории, характеристики и атрибуты создают предсказуемую основу для импорта, поиска, фильтрации и дальнейшего развития интернет-магазина.
И чем раньше магазин определит собственную структуру данных, тем меньше ручной работы потребуется при следующем расширении ассортимента.