Посчитать кол-во дочерних категорий

#
Посчитать кол-во дочерних категорий
Здравствуйте.

Хочу посчитать кол-во дочерних подкатегорий первой категории.


<xsl:variable name="group" select="group"/>
<!-- Получаю id первой дочерней подкатегории -->
<xsl:variable name="first_child_id" select=".//shop_group[parent_id=$group and position() = 1]/@id" disable-output-escaping="yes" />
<!-- а как посчитать её потомков не знаю -->


Пробовал такие варианты (уже перебирать начал):

<xsl:value-of select="count(.//shop_group[parent_id=$first_child_id])" />
<xsl:value-of select="count(//shop_group[parent_id=$first_child_id])" />
<xsl:value-of select="count(/shop_group[parent_id=$first_child_id])" />


И даже такие монструозные конструкции как:

<xsl:value-of select="count(.//shop_group[parent_id=$group and position() = 1]//shop_group[parent_id=$first_child_id])" />


Что ещё попробовать - не знаю.
#
Re: Посчитать кол-во дочерних категорий
Ещё актуально
Структура такая:

Категория 1
    Категория 1.1
        Категория 1.1.1
        Категория 1.1.2
        Категория 1.1.3
    Категория 1.2
        Категория 1.2.1
        ...
    Категория 1.3
        Категория 1.3.1
        ...
Категория 2
    ...

Не могу узнать, находясь в любой из категорий, есть ли у её первой дочерней подкатегории (если она есть) другие дочерние подподкатегории.

Возвращает ли данная конструкция
.//shop_group[parent_id=$group and position() = 1]

узел первой дочерней категории? Если да, то почему не выходит получить её потомков через
/shop_group[parent_id=$first_child_id]

?
Модератор
#
Re: Посчитать кол-во дочерних категорий
interstellar писал(а):

Хочу посчитать кол-во дочерних подкатегорий первой категории.

Зачем, если в XML и так есть уже посчитанное количество групп в текущей и во всех подгруппах. Посмотрите XML!

interstellar писал(а):
Не могу узнать, находясь в любой из категорий, есть ли у её первой дочерней подкатегории (если она есть) другие дочерние подподкатегории.

Находясь в группе, работать с ее потомками нужно уже без //
Количество подкатегорий у первой дочерней группы:
count(shop_group[1]/shop_group)
#
Re: Посчитать кол-во дочерних категорий
HostCMS писал(а):
Посмотрите XML

Посмотрел XML, дочерних дочерней нет, только родительские.

<shop id="1">
   <url>/katalog/</url>
   <subgroups_count>4</subgroups_count>
   <group>1338</group>
   <shop_group id="1336">
      <parent_id>0</parent_id>
      <dir>/upload/shop_1/1/3/3/group_1336/</dir>
      <shop_group id="1338">
         <parent_id>1336</parent_id>
         <dir>/upload/shop_1/1/3/3/group_1338/</dir>
         <shop_group id="1342">
            <parent_id>1338</parent_id>
            <dir>/upload/shop_1/1/3/4/group_1342/</dir>
         </shop_group>
         <shop_group id="1668">
            <parent_id>1338</parent_id>
            <dir>/upload/shop_1/1/6/6/group_1668/</dir>
         </shop_group>
         <shop_group id="1674">
            <parent_id>1338</parent_id>
            <dir>/upload/shop_1/1/6/7/group_1674/</dir>
         </shop_group>
         <shop_group id="1680">
            <parent_id>1338</parent_id>
            <dir>/upload/shop_1/1/6/8/group_1680/</dir>
         </shop_group>
      </shop_group>
   </shop_group>
</shop>


HostCMS писал(а):
count(shop_group[1]/shop_group)

В категориях верхнего уровня (Категория 1, 2) выводится "0".
В категориях 1.1 и в 1.1.1 выводится "1".
#
Re: Посчитать кол-во дочерних категорий
Если в XML нет, то контроллер надо переписывать?
Модератор
#
Re: Посчитать кол-во дочерних категорий
interstellar,
как нет? Эти данные стандартно есть у любой модели группы хоть магазина, хоть ИС.
#
Re: Посчитать кол-во дочерних категорий
HostCMS,
Я выше XML скидывал, там для дочерних подкатегорий дочерние подподкатегори не выводятся, т.е. их нет. Или я вас неправильно понял?
#
Re: Посчитать кол-во дочерних категорий
В общем, в /modules/shop/controller/show.php сменил 'groupsMode' на 'all' для отображения полного дерева. Из-за этого XML код выходит огромный, что мне не нравится, наверняка таким образом я жутко сбыдлокодил, поэтому буду рад более правильным решениям (:
В XSL
<xsl:value-of select="count(.//shop_group[parent_id=$first_child_id])" />

Спасибо за помощь.
#
Re: Посчитать кол-во дочерних категорий
interstellar,
groupsMode менять нужно в контроллере который вызывается в макете или в ТДС (Типовая дин. страница)
а кол-во подгрупп можно посмотреть в XML http://f5.s.qip.ru/3YtCRGeW.png
www.morozovpimnev.ru - создание, поддержка и продвижение сайтов | Наш канал https://asmp.su/channel
#
Re: Посчитать кол-во дочерних категорий
alexpimnev,
alexpimnev писал(а):
groupsMode менять нужно в контроллере который вызывается в макете или в ТДС (Типовая дин. страница)

О, так лучше, спасибо.

alexpimnev писал(а):
кол-во подгрупп можно посмотреть в XML

Глупый вопрос - а как это в XSL получать?
select="shop_group[@id=group_id]/subgroups_count"

?
Авторизация