Определенный макет для отдельной категории

#
Определенный макет для отдельной категории
Подскажите пожалуйста, как можно назначить определенный макет каждой категории в магазине?
#
Re: Определенный макет для отдельной категории
Уважаемые знатоки, подскажите пожалуйста, куда смотреть, очень нужно реализовать такую хрень возможность.
#
Re: Определенный макет для отдельной категории
GoodRoot, а зачем вам такая возможность хрень?
В 99% случаев, потребность в динамической смене макета говорит об ошибках интеграции и неправильном разделении кода на макеты и шаблоны.

Но если очень надо, то для смены текущего макета в _настройках_ ТДС ИМ нужно написать
Core_Page::instance()->template(Core_Entity::factory('Template', 123));
где 123 - идентификатор нужного макета.
Откуда брать идентификатор нужного макета - дело ваше, можно, вписать цифрами как у меня, а можно, например, хранить его в доп.свойстве группы, или еще что-нибудь придумать.
Заказов не беру. Консультирую редко.
#
Re: Определенный макет для отдельной категории
Kotoff, ну а как тогда нужно сделать правильно, если стоит задача каждую группу товаров выводить определенным образом. Специфика товаров такая, что нужно вывести группу под названием "Розы" одним способом, чтобы например только 2 розы выводились и сравнительная таблица их, а группе "Кактус" было 4 штуки и у них тоже шаблон другой был. Ничего умнее выборки отдельных шаблонов не придумал.
#
Re: Определенный макет для отдельной категории
GoodRoot, в таком случае, скорее всего, ошибка заложена даже не в интеграции а еще на уровне дизайна и техзадания
Нетехнологичные решения лучше всего отсеивать еще до принятия задачи в работу, либо приводить их к нескольким фиксированным разновидностям и перераспределять код между макетами и XSL, главное правильно произвести декомпозицию задачи.

Например, число товаров которые необходимо вывести можно хранить, опять же, как доп.свойство группы, получать его значение в ТДС и передавать в XML с помощью метода addEntity контроллера Shop_Controller_Show, а в XSL использовать его для настройки отображения.
Для сравнительной таблицы таким же способом предусмотреть флаг выводить / не выводить, и тоже смотреть на его значение в XSL-шаблоне.

Один гибко настраиваемый XSL на практике удобнее и полезнее пачки макетов с хардкодом, хотя он, конечно, будет сложнее в написании и отладке.
Заказов не беру. Консультирую редко.
#
Re: Определенный макет для отдельной категории
Kotoff, скорее тут проблема в опыте работы с CMS,а не в тз или дизайне. Просто hostcms нужно пилить напильником сильно, чтобы достичь именно нужной мне структуры. На самом деле просто специфика товаров такая, что их не так много и их действительно нужно выводить по-разному. Даже в группе мне нужно каждый товар отдельно кастомизировать. Я привел выше структуру с цветами упрощенную, на самом деле это техника известной фирмы, в которой не так много наименований. И хранить число их в доп свойствах не считаю нужным лишь потому, что их от природы не много.
Для аксессуаров,например, общий шаблон подойдет, но для продукции дорогой придется,видимо, изощряться.

А вообще я согласен с тем, что нужно стараться минимизировать количество частей системы, чтобы придать ей гибкость.
P.S. И если уж речь зашла о Shop_Controller_Show и addEntity, то можно ли каким-нибудь способом через Shop_Controller_Show вывести еще и Shop_Delivery_Controller_Show?
А вообще, очень-очень хотелось бы увидеть хоть какую-нибудь архитектуру cms-ки, потому как так сразу и не разберешься что тут к чему относится и от чего зависит и какие характеристики и свойства имеет. В идеале конечно UML или что-то типо того
#
Re: Определенный макет для отдельной категории
GoodRoot писал(а):
можно ли каким-нибудь способом через Shop_Controller_Show вывести еще и Shop_Delivery_Controller_Show?
Нет. Это две не связанные между собой сущности.
Заказов не беру. Консультирую редко.
#
Re: Определенный макет для отдельной категории
GoodRoot писал(а):
А вообще, очень-очень хотелось бы увидеть хоть какую-нибудь архитектуру cms-ки, потому как так сразу и не разберешься что тут к чему относится и от чего зависит и какие характеристики и свойства имеет. В идеале конечно UML или что-то типо того
Есть вот такая схема http://hostcms.ru/api6/graph_class.html но она мало чем помогает - на начальном этапе в ней с трудом можно разобраться, а потом она уже становится не очень-то нужна. По-хорошему ее бы надо укрупнить чтобы была видна общая структура а не все классы в отдельности.
Заказов не беру. Консультирую редко.
#
Re: Определенный макет для отдельной категории
Поработав некоторое время с движком, решил перенести еще один сайт на эту систему. Но вот же не задача. Опять нужно разные разделы товаров выводить-по разному. Т.е. нет ничего удивительного в том, что для отдельной категории требуется отдельный шаблон. Например, мне хочется на первом уровне вложенности вывести рядом с основным контентом еще кое-что. Не имея механизма присвоения определенным категориям отдельных макетов очень сложно это сделать.
Сейчас можно только создать один шаблон для вывода всех товаров, но это ОЧЕНЬ сильно ограничивает пользователя системы в расширяемости.
Kotoff,"GoodRoot, а зачем вам такая хрень?
В 99% случаев, потребность в динамической смене макета говорит об ошибках интеграции и неправильном разделении кода на макеты и шаблоны."
По-моему удобнее для отдельного раздела магазина выбирать макет, чем пытаться все обработать в одном макете. Ладно, если бы была какая-нибудь гибкая система с выбором макетов в "Структура сайта", но там только можно задать макет для корневого элемента магазина, а дочерние пункты будут по его образу и подобию формироваться.
У меня получилось реализовать такой функционал, но не понимаю, почему разработчики сами этого не сделают, ведь это очень важный момент расширяемости системы.
Модератор
#
Re: Определенный макет для отдельной категории
GoodRoot писал(а):
Сейчас можно только создать один шаблон для вывода всех товаров, но это ОЧЕНЬ сильно ограничивает пользователя системы в расширяемости.

Не следует говорить за всех пользователей. Если вам требуются индивидуальные решения, никто не мешает вам его сделать, не превращая систему в неповоротливого монстра. Группа ничего не знает о макете и не должна об этом знать, это ее не касается. Создаете доп. св-во у группу, храните там ID макета и в настройках ТДС подменяете макет. Очень просто.
Авторизация