Выдано 134844 лицензии

Группы интернет-магазина

Группы интернет-магазина
#
Leevoth
109
Можно ли в XSL шаблоне как-нибудь вычислить уровень вложенности группы интернет-магазина? А еще лучше - выводить уровень вложенности групп в XML.

Буду очень признателен за подсказку.
Re: Группы интернет-магазина
#
hostcms
Модератор
16606
http://www.hostcms.ru/forums/22/111/
для подсчета текущего уровня вложенности в дереве (полезно, например, для получения уровня вложенности у structure) используйте
count(ancestor::имя узла)
Re: Группы интернет-магазина
#
Leevoth
109
Попробовал выводить уровень вложенности группы таким вот образом:

<xsl:template match="/">
      <xsl:apply-templates select="/shop"/>
   </xsl:template>

<xsl:template match="/shop">
<xsl:variable name="parent_group_id" select="@current_group_id"/>
<xsl:value-of select="count(ancestor::group)"/>
... и.т.д
</xsl:template>


На любом уровне каталога выводится 0. В чем моя ошибка?
Re: Группы интернет-магазина
#
hostcms
Модератор
16606
Leevoth,
О каком уровне вложенности идет речь, если Вы вызываете находясь в /shop?
Re: Группы интернет-магазина
#
Leevoth
109
Понял вас. Действительно, если вызывать внутри <xsl:template match="group"> </xsl:template> то все работает. Но это не совсем то, что я хотел. Наверное, я неправильно поставил вопрос.

Дело в том, что я рассчитывал в зависимости от уровня текущей группы вызывать разные шаблоны <xsl:template match="group">.
При помощи примерно вот такой конструкции:


<xsl:template match="/shop">
<xsl:variable name="parent_group_id" select="@current_group_id"/>
<xsl:choose>
   <xsl:when test="$page_level=1">
      <xsl:apply-templates select="//group[@parent=$parent_group_id]" mode="level1"/>
   </xsl:when>

   <xsl:when test="$page_level=2">
        <xsl:apply-templates select="//group[@parent=$parent_group_id]" mode="level2"/>
   </xsl:when>
</xsl:choose>
</xsl:template>


Где $page_level - это уровень текущей группы.

Таким образом я рассчитывал содержимое каталога для вот такой страницы http://19.skycrew2.z8.ru/Kondicionery/ выводить одним образом, а вот для этой http://19.skycrew2.z8.ru/Kondicionery/Split-sistemi/ - по-другому. И так далее, свой вариант вывода каталога товаров для каждого уровня вложенности группы товаров интернет-магазина.

Или я просто не в том направлении думаю, и надо как-то иначе эту задачу решать? Честно говоря, уже голову себе сломал. Если нормального решения не найду, то я просто создам доп. свойство для групп и буду прописывать уровень группы туда вручную =)
Re: Группы интернет-магазина
#
Leevoth
109
И все-таки: можно ли, находясь в структуре  /shop как-то получить уровень вложенности выводимой группы товаров интернет-магазина, как я описал выше?

Пока единственное, что приходит на ум - это создание дополнительного свойства и заполнение его вручную. Что и некрасиво, и неудобно.
Re: Группы интернет-магазина
#
h4mpy
830
видимо
<xsl:value-of select="count(//group[@id=$parent_group_id]/ancestor-or-self::group)"/>
Re: Группы интернет-магазина
#
Leevoth
109
Работает!

Спасибо большое.
Re: Группы интернет-магазина
#
almoff
5
Здравствуйте!

Подскажите, пожалуйста, как в интернет магазине не выводить подгруппы, которые содержат только товары с нулевым остатком?
То есть, у нас папки выводятся в структуре интернет магазина, а в некоторых из этих папок товары не выводятся, так как остаток у товаров 0.
Если в подгруппе есть хоть один товар с ненулевым остатком - выводим подгруппу. Если в подгруппе содержатся только товары с нулевым остатком - не показываем такую подгруппу.

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