Шаблон для подразделов

#
Шаблон для подразделов
Делаю меню, вот xsl код:


<?xml version="1.0" encoding="windows-1251"?>
<!DOCTYPE xsl:stylesheet>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output xmlns="http://www.w3.org/TR/xhtml1/strict" doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN" encoding="Windows-1251" indent="yes" method="html" omit-xml-declaration="no" version="1.0" media-type="text/xml"/>
<xsl:template match="/">
<xsl:apply-templates select="/document"/>
</xsl:template>
<xsl:template match="/document">
<xsl:variable name="parent_group_id" select="blocks/parent_group_id"/>
<xsl:apply-templates select=".//group[@parent_id=$parent_group_id]"/>
</xsl:template>

<xsl:template match="group">
<xsl:variable name="current_group_id" select="/document/ТекущаяГруппа"/>
<div class="lm">
<div class="lc">
<xsl:choose>
<xsl:when test="$current_group_id = @id or count(.//group[@id=$current_group_id])=1">
<a href="{/document/blocks/url}{fullpath}"><xsl:value-of disable-output-escaping="yes" select="name"/></a>
<xsl:if test="count_all_groups > 0">
<ul>
<xsl:apply-templates select="group"/>
</ul>
</xsl:if>
</xsl:when>
<xsl:otherwise>
<a href="{/document/blocks/url}{fullpath}"><xsl:value-of disable-output-escaping="yes" select="name"/></a>
</xsl:otherwise>
</xsl:choose>
</div>
<div class="l1"></div><div class="l2"></div><div class="l3"></div><div class="l4"></div>
</div>
</xsl:template>

<!--Шаблон для подразделов-->
<xsl:template match="sub_group">
<li><a href="{/document/blocks/url}{fullpath}"><xsl:value-of disable-output-escaping="yes" select="name"/></a></li>
</xsl:template>

</xsl:stylesheet>


Так вот там я вывожу подразделы через
<xsl:apply-templates select="group"/>


нужно к нему применить шаблон sub_group, насколько понимаю надо прописать так
<xsl:apply-templates select="group" mode="sub_group"/>
но не работает и к тому же выводится просто инфа из xml, короче ника кне понимаю заставить работать.

Вывожу через код:

<?php
$InformationSystem = & singleton('InformationSystem');
$external_propertys=array();
$property = array();
$property['xml_show_group_type'] = 'all';
$external_propertys['ОтображатьСсылкуНаАрхив']=0;
$external_propertys['ОтображатьСсылкиНаСледующиеСтраницы']=0;
$item_count = 3;
$InformationSystemId = 15;
$rez = array();
$rez = $InformationSystem->GetInformationFromPath($InformationSystemId);
$external_propertys['ТекущаяГруппа'] = $rez['group'];
$InformationGroupId = false;  // false - из всех групп, 0 - из корневой группы
$InformationSystem->ShowInformationSystem($InformationSystemId, $InformationGroupId,'ЛевоеМеню',$item_count,0,$external_propertys, $property);
?>



Подскажите пожалуйста
Делаю сайты на HostCMS! Подробнее по почте anton.yurzanov@gmail.com
Модератор
#
Re: Шаблон для подразделов
Varkolak писал(а):
нужно к нему применить шаблон sub_group, насколько понимаю надо прописать так

Все правильно, только вот темплейта для подгрупп в XSL я не вижу.

Должно быть что-то наподобие:
<!--Шаблон для подразделов-->
<xsl:template match="sub_group">
<xsl:template match="group" mode="sub_group">
<li><a href="{/document/blocks/url}{fullpath}"><xsl:value-of disable-output-escaping="yes" select="name"/></a></li>
</xsl:template>
#
Re: Шаблон для подразделов
Блин, спасибо большое, час сидел не мог понять.
Вот, вдруг кому будет полезно
<?xml version="1.0" encoding="windows-1251"?>
<!DOCTYPE xsl:stylesheet>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output xmlns="http://www.w3.org/TR/xhtml1/strict" doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN" encoding="Windows-1251" indent="yes" method="html" omit-xml-declaration="no" version="1.0" media-type="text/xml"/>
<xsl:template match="/">
<xsl:apply-templates select="/document"/>
</xsl:template>
<xsl:template match="/document">
<xsl:variable name="parent_group_id" select="blocks/parent_group_id"/>
<xsl:apply-templates select=".//group[@parent_id=$parent_group_id]"/>
</xsl:template>

<xsl:template match="group">
<xsl:variable name="current_group_id" select="/document/ТекущаяГруппа"/>
<div class="lm">
<xsl:choose>
<xsl:when test="$current_group_id = @id or count(.//group[@id=$current_group_id])=1">
<a href="{/document/blocks/url}{fullpath}"><xsl:value-of disable-output-escaping="yes" select="name"/></a>
<xsl:if test="count_all_groups > 0">
<ul>
<xsl:apply-templates select="group" mode="sub_group"/>
</ul>
</xsl:if>
</xsl:when>
<xsl:otherwise>
<a href="{/document/blocks/url}{fullpath}"><xsl:value-of disable-output-escaping="yes" select="name"/></a>
</xsl:otherwise>
</xsl:choose>
</div>
</xsl:template>

<!-- Шаблон для подразделов -->
<xsl:template match="group" mode="sub_group">
<li><a href="{/document/blocks/url}{fullpath}"><xsl:value-of disable-output-escaping="yes" select="name"/></a></li>
</xsl:template>

</xsl:stylesheet>
Делаю сайты на HostCMS! Подробнее по почте anton.yurzanov@gmail.com
Модератор
#
Re: Шаблон для подразделов
Пожалуйста
#
Re: Шаблон для подразделов
У меня еще вопрос по данному меню, сейчас сайт весит на http://ggbd.ru/catalog/
Так вот, тот код что сейчас выше выложен, он выводит только 2 подраздела, т.е.

Каталог
_____Подраздел - с этого пунтка начинается отображение меню слева (это группа инф системы)
________ПодПодРаздел

А дальше не хочет, как исправить, подскажите пожалуйста.
Делаю сайты на HostCMS! Подробнее по почте anton.yurzanov@gmail.com
Модератор
#
Re: Шаблон для подразделов
Varkolak,
Посмотрите поиск: http://www.hostcms.ru/search/?text=tree&x=0&y=0
#
Re: Шаблон для подразделов
хм, а зачем tree? я прописал all, в xml все есть, не получается вывести через xsl, код использую тот что выше, что в нем не так, что выводится только раздел каталога и подраздел, а дальше выводиться не хочет
Делаю сайты на HostCMS! Подробнее по почте anton.yurzanov@gmail.com
Модератор
#
Re: Шаблон для подразделов
Varkolak,
Тогда покажите XML, явную ошибку не вижу.
#
Re: Шаблон для подразделов
http://varkolak.ru/xml.txt - вот тут xml

В xml Toyota есть, а в меню нет http://ggbd.ru/catalog/originals/18/
Делаю сайты на HostCMS! Подробнее по почте anton.yurzanov@gmail.com
#
Re: Шаблон для подразделов
Разобрался... достаточно было отдохнуть )
Делаю сайты на HostCMS! Подробнее по почте anton.yurzanov@gmail.com
Авторизация