ID корневой группы товаров в шаблоне товара

#
ID корневой группы товаров в шаблоне товара
Добрый день.
Как узнать ID корневой группы товара при его отображении, если он находится в подгруппах?
Нужно для немного различного отображения различных типов товара.
Например: для Космолета писать: "технические характеристики" (вместо атрибута товара), а для Краски: "свойства".

Мысль только про рекурсию до parent=0 и проверки id этого элемента на нужный. Но как-то сложновато.

Или есть другой способ? Например, для разных групп (первого уровня и всех последующих подгрупп) товаров использовать разные шаблоны "МагазинТовар".
#
Re: ID корневой группы товаров в шаблоне товара
Как всё-таки реализовать разное отображение товаров для разных групп?
Товар может находиться глубоко в подгруппах, критерием для форматирования будет корневая группа.
#
Re: ID корневой группы товаров в шаблоне товара
VAshot писал(а):
Как узнать ID корневой группы товара при его отображении, если он находится в подгруппах?
в xsl-шаблоне можно "прогулятся" по оси ancestor от текущей подгруппы, ограничив "прогулку" самым верхним узлом group и взяв его атрибут id. Вот так:
<xsl:variable name="top_group_id" select="//group[@id = $current_group_id]/ancestor::group/@id" />

В переменную top_group_id запишется значение атрибута id группы самого верхнего уровня после корневой.
Заказов не беру. Консультирую редко.
#
Re: ID корневой группы товаров в шаблоне товара
И кстати да, в некотором смысле это и есть рекурсия, только реализованная за счет внутренних механизмов xsl-транслятора, а потому не затрачиващая столь больших ресурсов чем как если бы вы написали свою рекурсию вручную.
Заказов не беру. Консультирую редко.
#
Re: ID корневой группы товаров в шаблоне товара
Благодарю.

Вот тут определяется xml-шаблон ($xsl_item), согласно которому будет происходить вывод товара, на сколько я понимаю.

      /* Вывод конкретного элемент */
      //$param['show_catalog_item_type'] = array('active', 'inactive');

      /* Вывод конкретного элемент */
      $shop->ShowItem($GLOBALS['shop_item_path']['item'], $xsl_item, $param, $external_propertys);


А в этом месте можно как-то определить id корневой группы, для выбора нужного шаблона?
#
Re: ID корневой группы товаров в шаблоне товара
VAshot, так вам в XSL надо определять, или в PHP?

Просто из описания вашей задачи следует, что идеологически (в соответствии с MVC) более правильно использовать один шаблон на все, и производить определение в xsl-шаблоне, а потом, например, вызывать в нем в зависимости от полученного значения теплейты item с различными mode, или внутри одного единственного template match="item" предусмотреть логику отображения в зависимости от определившейся корневой группы.
При чем вся нужная информация у вас уже есть в xml.

Ну а если вам все же зачем-то надо в php, то тут вам api в помощь - есть метод получения информации об элементе - GetItem(), откуда можно определить его группу, и метод получения дерева групп от корня до текущей - GetPathGroup(), откуда можно получить id корневой группы.
Заказов не беру. Консультирую редко.
#
Re: ID корневой группы товаров в шаблоне товара
Спасибо за разъяснения.
Почему возникло желание иметь разные шаблоны? Просто если есть штук пять типов товара, то один шаблон слишком разрастется в размерах и логике и будет неудобно с ним работать.
#
Re: ID корневой группы товаров в шаблоне товара
VAshot, ну это на вкус и цвет, что называется )
Мне вот удобнее работать с одним большим шаблоном, нежели с группой маленьких )
Хотя соглашусь что работать с длинными шаблонами через админку не очень удобно.

Ну а размер шаблона зависит еще и от логики его построения. Можно сделать так чтобы был очень длинным, можно сделать чтобы был покороче, при одинаковом функционале.
Заказов не беру. Консультирую редко.
#
Re: ID корневой группы товаров в шаблоне товара
>>вызывать в нем в зависимости от полученного значения теплейты item с различными mode, или внутри одного единственного template match=«item» предусмотреть логику отображения в зависимости от определившейся корневой группы.

Во, а можно код template записать в доп.свойство корневой группы и при выводе товара подставлять его? Т. о., создавая новую группу товаров, править общий шаблон не нужно, а нужно записать в свойство этой группы код отображения элементов ей принадлежащих товаров. Подставить из свойства текст как исполняемый код возможно?
#
Re: ID корневой группы товаров в шаблоне товара
Насколько мне известно - нет.
Заказов не беру. Консультирую редко.
Авторизация