Как узнать ID родительской группы?

#
Как узнать ID родительской группы?
Задача простая - есть магазин с двухуровневой структурой:
- Раздел1
   - Подгруппа11
   - Подгруппа12
   - Подгруппа13
- Раздел2
   - Подгруппа21
   - Подгруппа22
и т.д.

На любом уровне каталога требуется определить текущее местоположение и в зависимости от того, в каком "Разделе" мы находимся, вывести нужную картинку.
Пытаюсь делать так:
            <xsl:if test="$parent_group_id = 599">
               <img src="/images/fishes.jpg"/>
            </xsl:if>

Где 599 - ID группы "Группа1". Но надо, чтобы картинка отображалась не только в группе "Раздел1", но и во всех дочерних - "Подгруппа11", "Подгруппа12" и т.д..
Как, находясь в "Подгруппа11" и других на этом же уровне, получить ID родительской группы?

Т.е. надо как-то проверить, соответствует ли ID родителя заданному значению:
            <xsl:if test="$parent_group_id = 599 or ID_группы_родителя = 599">
               <img src="/images/fishes.jpg"/>
            </xsl:if>

Что надо подставить вместо "ID_группы_родителя"? Использую стандартный XSL-шаблон "МагазинКаталогТоваров".
Спасибо.
#
Re: Как узнать ID родительской группы?
#
Re: Как узнать ID родительской группы?
VAshot, спасибо. Сам не смог найти.
Но все равно не получается. Пытаюсь делать вот так:


            <!-- Получаем ID родительской группы и записываем в переменную $parent_group_id -->
            <xsl:variable name="parent_group_id" select="@current_group_id"/>
            <xsl:variable name="item_group_id" select="@group"/>
            
            <!-- Получаем ID корневой группы товара и записываем в переменную $top_group_id -->
            <xsl:variable name="top_group_id" select="//group[@id = $current_group_id]/ancestor::group/@id" />
            
<!-- Если товар находится где-то в "Разделе1" или "Подгруппа11", "Подгруппа12" и т.д., то выводим картинку -->
            <xsl:if test="$parent_group_id = 597 or $top_group_id = 597">
               <img src="/images/dogs.jpg"/>
            </xsl:if>


Выводит ошибку:


ПРЕДУПРЕЖЕДЕНИЕ: XSLTProcessor::transformToDoc() [xsltprocessor.transformtodoc]: runtime error: file /home/bfriends/public_html/ line 42 element variable в файле /home/bfriends/public_html/modules/Xsl/Xsl.class.php (строка 270)
ПРЕДУПРЕЖЕДЕНИЕ: XSLTProcessor::transformToDoc() [xsltprocessor.transformtodoc]: Variable 'current_group_id' has not been declared. в файле /home/bfriends/public_html/modules/Xsl/Xsl.class.php (строка 270)
ПРЕДУПРЕЖЕДЕНИЕ: XSLTProcessor::transformToDoc() [xsltprocessor.transformtodoc]: xmlXPathCompiledEval: 2 objects left on the stack. в файле /home/bfriends/public_html/modules/Xsl/Xsl.class.php (строка 270)
ПРЕДУПРЕЖЕДЕНИЕ: XSLTProcessor::transformToDoc() [xsltprocessor.transformtodoc]: runtime error: file /home/bfriends/public_html/ line 42 element variable в файле /home/bfriends/public_html/modules/Xsl/Xsl.class.php (строка 270)
ПРЕДУПРЕЖЕДЕНИЕ: XSLTProcessor::transformToDoc() [xsltprocessor.transformtodoc]: Failed to evaluate the expression of variable 'top_group_id'. в файле /home/bfriends/public_html/modules/Xsl/Xsl.class.php (строка 270)


Что я не так делаю?
#
Re: Как узнать ID родительской группы?
попробуйте так:
<xsl:variable name="parent_group_id" select="/shop/@current_group_id"/>
#
Re: Как узнать ID родительской группы?
VAshot,
Переменная $parent_group_id отлично определяется на любом уровне вложенности, она равна ID текущей группы магазина.
Проблема где-то в строке

            <xsl:variable name="top_group_id" select="//group[@id = $current_group_id]/ancestor::group/@id" />


Может, переменную $top_ground_id надо объявить в коде типовой динамической страницы?
Сам никак не могу сообразить. Спасибо.
#
Re: Как узнать ID родительской группы?
а $current_group_id как определяется?

видимо в этой строке $current_group_id нужно поменять на $parent_group_id
#
Re: Как узнать ID родительской группы?

<xsl:variable name="top_group_id" select="//group[@id =/shop/@current_group_id]/ancestor::group/@id" />
<xsl:choose>
   <xsl:when test="$top_group_id = 594 or /shop/@current_group_id = 594">
      <xsl:call-template name="item-video"/>
   </xsl:when>
   <xsl:otherwise>
   </xsl:otherwise>
</xsl:choose>

У меня работает. Зачем Вам $current_group_id ?
#
Re: Как узнать ID родительской группы?
h4mpy, за основу брал пример из предыдущего топика, в том числе и $current_group_id.

VAshot, спасибо большое! Так работает как надо. Спасибо!

Предлагаю перенести топик в полезные решения.
Авторизация