Основательно задался вопросом построения рабочей в перспективе схемы для “крупного” универсального магазина на ЕЕ. К сожалению, на просторах официального форума Эллисов и разработчиков модулей магазинов (Store, CartThrob, BrilliantRetail), не нашел достойных примеров крупных магазинов которые, были бы построены на ЕЕ.
Что же я подразумеваю под словом крупный магазин? Великое множество товарных групп (от столовых приборов до бытовой техники и от отдельных комплектующих до компьютеров), огромное количество различных свойств товаров (заказные поля) и более 15000 самих товаров (записей). Возможность умной фильтрации по свойствам, сравнение родственных товаров, массовый экспорт/импорт товаров. Также важно, чтобы менеджера смогли распределенно управлять только отдельными группами товаров.
На данный момент возникла такая масштабируемая идея (в примере только одна товарная группа, но можно создавать сколько угодно):
1. Товарная группа (например, Компьютерная техника)
-> Группа категорий “Компьютерная и офисная техника”.
-> Категории и подкатегории: Компьютеры, Мониторы, Все для игр, Портативная техника (Ноутбуки, Планшеты, Электронные книги и т.д), Комплектующие (Процессоры, Видеокарты, Жесткие диски и т.п.), Периферия, Офисное оборудование.
2. Родственные товары или логические товарные единицы
-> Каналы (например, “Процессоры”, “Видеокарты”, “Жесткие диски” и подобное). По моим скромным подсчетам только для группы “Компьютерная техника” нужно 35 каналов.
3. Уникальные свойства товаров, по которым затем будем умно фильтровать.
-> Группы заказных полей для каждого канала (35 каналов = 35 групп). Почему разные группы, если можно сделать одну группу, а затем в шаблонах делать невидимыми некоторые поля? Потому что могут возникнуть коллизии, когда скрыты некоторые обязательные поля - вы не видите ошибку, а запись не сохраняется. Конечно как вариант, можно использовать большой список полей в одной группе без требования обязательного заполнения. Но все равно, неудобно большой список полей может получиться (если полей будет больше 1000 например).
4. Общие свойства товаров (описание, ключевые слова и т.д.). К сожалению, официально не поддерживается прикрепление к каналу более одной группы полей. Здесь можно осторожно использовать сторонние разработки (подробнее http://ellislab.com/forums/viewthread/223624/). Надеюсь в будущем этот вопрос как-то Эллисы доделают.
Такие общие свойства, как SKU, стоимость, количество имеются при подключении поля магазина (тот же Store).
5. Товары
-> Записи каналов.
6. Умная фильтрация и сравнение товаров между собой, вполне логично, выполняется в пределах одного канала.
7. Управление товарами, делается распределенным на уровне доступа групп мемберов.
8. Экспорт/Импорт - есть модуля Importer и DataGrab - даже не знаю что лучше, т.к. еще ни с одним не приходилось работать.
В итоге, если магазин большой, получиться несколько сотен каналов и столько же групп полей. Ну вот как-то так. Только остается вопрос, как затем можно управлять таким количеством каналов и групп полей? Есть ли какие предположения или я вообще выбрал неверное решение данного вопроса?
Интересно знать любое мнение и предложения различных концепций в пределах ЕЕ.
ПС. На данный момент, понимаю что довольно сырая идея - мысли вслух, которые не обязательно станут действующим решением.