Прошу совета по архитектуре модуля, бизнес-логике.
Идея написать модуль возникла по желанию автоматизировать создание и внесение изменений в группы товаров со схожими характеристиками (иногда их называют вариациями товаров). А также облегчить процесс поиска и выбора подходящего товара покупателем.
Например, есть один тип товара, характеристики которого можно разбить на группы и подгруппы по 5-7 критериям в каждом 2-10 значений. Не все вариации возможны: некоторые сочетания не производятся, что-то нет в наличие, что-то под заказ. Ряд вариаций отличается лишь отдельными цифровыми характеристиками, а другие различаются внешним видом и требуют разных изображений. Уже эта комбинация порождает несколько тысяч вариаций.
Изучал, как уже решается подобная задача. Основных решения два:
1) через сочетания опций.
Плюс: готовая удобная выборка для покупателя, управляем вариациями в одном товаре, описаний мало, легко поддерживать.
Минус: по сути имеем один или несколько товаров. Отсюда проблема с настройками акций, скидками, артикулами, фильтрами (актуальные сочетания), SEO ссылками на вариации. Вопросы эти решают через костыли, пытаясь в итоге создать товары из опций.
2) созданием отдельных товаров.
Плюс: вариации представляют из себя "настоящие" товары, отсюда в плюс, что в предыдущем варианте было в минусах.
Минус: имеем много вариаций товаров - возможный зоопарк в моем случае из ~4000 товаров (но актуально около трети, что тоже немало). Имеем сложности с созданием и поддержкой этого добра, много одинаковых описаний, много ошибок при вводе, проблемы с поисковиками из-за одинаковых описаний. Для покупателя тут минусов нет при наличии нормального фильтра.
Выбрал второй путь и решить проблему с минусами путем использования товаров-шаблонов для генерации вариаций товаров, а также внесения в них изменений. При этом из одного шаблона можно генерировать другие шаблоны, создавая подгруппы, вносить в них изменения и генерировать дальше. Одни характеристики при этом копируются, другие модифицируются по логике различия вариаций, требований к идентификации и SEO. Можно потом разнообразить описание товаров, чтобы избежать санкций от поисковиков. Но как вариант, конечные вариации просто не светить поисковикам, но разрешить шаблоны. Таким образом мы имеем контролируемую древовидную структуру. А создать,настроить, поддерживать группу из нескольких тысяч товаров можно очень быстро. Для обновления нужно вносить изменения в шаблоны и обновлять вариации.
Модуль в тестовом варианте уже написал, работает и приносит некое моральное удовлетворение
Для задания множества вариаций использовал атрибуты. В товаре-шаблоне нужно указать их через запятую, в дальнейшем из выбранных таких атрибутов автоматом генерирую возможные вариации, удаляю неактуальные и затем лишь создаю вариации товаров. Вот думаю, насколько атрибуты подходят для этого. Есть мысль использовать вместо атрибутов для определения множества вариаций настройки стандартного фильтра OC, там можно создать группы фильтров с метками, и подвязать нужные группы в шаблон-товара, и использовать их для генерации вариаций. Что предпочтительнее?
Для карточки товара пишу "умный" фильтр выборки из актуальных вариаций, который предполагаю привязать к товару-шаблону. Потому для покупателю достаточно работать с товаром-шаблоном (как с опциями), а в корзину будет помещаться уже товар-вариация.
Попробовал описать как мог. Модуль пока не том виде, чтобы выложить на обозрение. Буду признателен за критику и советы