есть шаблон меню...
<xsl:output indent="no" />
<!-- шаблон для всего меню -->
<xsl:template match="udata[@module = 'content'][@method = 'menu']" mode="menu">
<div class="main-menu">
<ul>
<xsl:apply-templates select="items/item" mode="menu"/>
</ul>
</div>
</xsl:template>
<!-- Пункт меню -->
<xsl:template match="item" mode="menu">
<xsl:variable name="item" select="document(concat('udata://content/menu/notemplate/1/', @id))/udata/items/item" />
<xsl:choose>
<xsl:when test="$item">
<!-- Ссылка -->
<xsl:apply-templates select="." mode="menu_link"/>
<xsl:apply-templates select="." mode="menu_sub"/>
</xsl:when>
<xsl:otherwise>
<!-- Ссылка -->
<xsl:apply-templates select="." mode="menu_link"/>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<!-- Пункт меню (активный) -->
<xsl:template match="item[@status = 'active']" mode="menu">
<xsl:variable name="item" select="document(concat('udata://content/menu/notemplate/1/', @id))/udata/items/item" />
<xsl:choose>
<xsl:when test="$item">
<!-- Ссылка -->
<li class="current expandable"><xsl:apply-templates select="." mode="menu_link"/><xsl:apply-templates select="." mode="menu_sub"/></li>
</xsl:when>
<xsl:otherwise>
<!-- Ссылка -->
<xsl:apply-templates select="." mode="menu_link"/>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<!-- Вложенные пункты -->
<xsl:template match="item" mode="menu_sub">
<xsl:variable name="item" select="document(concat('udata://content/menu/notemplate/1/', @id))/udata/items/item" />
<xsl:if test="$item">
<ul>
<xsl:apply-templates select="document(concat('udata://content/menu/notemplate/1/', @id))/udata" mode="menu_sub" />
</ul>
</xsl:if>
</xsl:template>
<!-- Подпункты -->
<xsl:template match="udata" mode="menu_sub">
<!-- Ссылка -->
<xsl:apply-templates select="items/item" mode="menu_link"/>
</xsl:template>
<!-- Ссылка -->
<xsl:template match="item" mode="menu_link">
<!-- Определение ссылки -->
<xsl:variable name="is_submenu_link" select="document(concat('upage://', @id, '.submenu_link'))//value" />
<xsl:variable name="outer_link" select="document(concat('upage://', @id, '.ssylka'))//value" />
<xsl:variable name="outer_link_blank" select="document(concat('upage://', @id, '.v_novom_okne'))//value" />
<xsl:choose>
<!-- Если введен url -->
<xsl:when test="$outer_link != ''">
<xsl:choose>
<!-- Если в новом окне -->
<xsl:when test="$outer_link_blank = 1" >
<a umi:element-id="{@id}" umi:field-name="h1" href="{$outer_link}" target="_blank" ><xsl:value-of select="@name"/></a>
</xsl:when>
<!-- В текущем окне -->
<xsl:otherwise>
<li id="b"><a umi:element-id="{@id}" umi:field-name="h1" href="{$outer_link}"><xsl:value-of select="@name"/></a></li>
</xsl:otherwise>
</xsl:choose>
</xsl:when>
<xsl:otherwise>
<xsl:choose>
<!-- Если ссылка на дочернюю страницу -->
<xsl:when test="$is_submenu_link = 1" >
<li id="c"> <a umi:element-id="{@id}" umi:field-name="h1" href="{document(concat('udata://content/menu/0/1/', @id))/udata/items/item[1]/@link}" ><xsl:value-of select="@name"/></a></li>
</xsl:when>
<!-- Обычная ссылка -->
<xsl:otherwise>
<li id="d"><a umi:element-id="{@id}" umi:field-name="h1" href="{@link}" ><xsl:value-of select="@name"/></a></li>
</xsl:otherwise>
</xsl:choose>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
он выводит так:
<div xmlns="" class="main-menu">
<ul>
<li id="d"/>
<ul/>
<li id="d"/>
<ul>
<li id="d"/>
<li id="d"/>
</ul>
<li id="d"/>
<ul/>
</ul>
</div>
а мне надо чтоб <ul> был в <li>
т.е. так:
<div class="main-menu">
<ul>
<li id="d">
<ul/>
</li>
<li id="d">
<ul>
<li id="d"/>
<li id="d"/>
</ul>
</li>
<li id="d">
</ul>
</li>
</div>
я сделала все как там написано... но он мне выводит только подпункты активного меню... хоть я и прописываю строку которую там говорят... вот:
<xsl:template match="items" mode="menu">
<ul>
<xsl:apply-templates select="item" mode="menu"/>
</ul>
</xsl:template>
<!-- шаблон для ВСЕХ активных пунктов меню -->
<xsl:template match="item[@status = 'active']" mode="menu">
<li>
<span>
<xsl:value-of select="@name"/>
</span>
<xsl:apply-templates select="items" mode="menu"/>
</li>
</xsl:template>
<!-- шаблон для ВСЕХ неактивных пунктов меню, а также для ВСЕХ пунктов, являющихся родительскими для текущей страницы -->
<xsl:template match="item|item[.//item[@status = 'active']]" mode="menu">
<li>
<a href="{@link}">
<xsl:value-of select="@name"/>
</a>
<xsl:apply-templates select="items" mode="menu"/><!--Эта строка я так понимаю для того, чтоб подпункты выводились... Но в неактивном меню они все равно не выводятся(((-->
</li>
</xsl:template>
и мне еще надо чтоб только второй уровень выводил... у меня получилось только чтоб все.. вот этот код работает нормально... выводит во всех и активных и неактивных.. но выводит абсолютно все уровни.. а мне тока второй надо..
<xsl:template match="udata[@module = 'content'][@method = 'menu']">
<ul>
<xsl:apply-templates select="items/item" mode="menu"/>
</ul>
</xsl:template>
<!-- шаблон для ВСЕХ неактивных пунктов меню -->
<xsl:template match="item" mode="menu">
<li>
<a href="{@link}">
<xsl:value-of select="@name"/>
</a>
<!-- удалите этот вызов, если нужно отображать подстраницы только для активных пунктов меню -->
<xsl:apply-templates select="document(concat('udata://content/menu/0/1/', @id))/udata[items/item]"/>
</li>
</xsl:template>
<!-- шаблон для ВСЕХ активных пунктов меню -->
<xsl:template match="item[@status = 'active']" mode="menu">
<li>
<a href="{@link}" class="active">
<xsl:value-of select="@name"/>
</a>
<xsl:apply-templates select="document(concat('udata://content/menu/0/1/', @id))/udata[items/item]"/>
</li>
</xsl:template>
у вас получилось все в кучу
вызов вот такой
<xsl:apply-templates select="document('udata://content/menu/0/3')/udata" />
шаблоны для меню вот такие
<!-- шаблон для всего меню -->
<xsl:template match="udata[@module = 'content'][@method = 'menu']">
<xsl:apply-templates select="items" mode="menu"/>
</xsl:template>
<!-- шаблон для начала всех списков -->
<xsl:template match="items" mode="menu">
<ul>
<xsl:apply-templates select="item" mode="menu"/>
</ul>
</xsl:template>
<!-- шаблон для ВСЕХ неактивных пунктов меню -->
<xsl:template match="item" mode="menu" />
<!-- шаблон для ВСЕХ активных пунктов меню -->
<xsl:template match="item[@status = 'active']" mode="menu">
<li>
<xsl:apply-templates select="items" mode="sub_menu"/>
</li>
</xsl:template>
<!-- шаблон для начала списков меню второго и последующих уровней-->
<xsl:template match="items" mode="sub_menu">
<ul class="sub_menu">
<xsl:apply-templates select="item" mode="sub_menu"/>
</ul>
</xsl:template>
<!-- шаблон для неактивных пунктов меню второго и последующих уровней-->
<xsl:template match="item" mode="sub_menu">
<li>
<a href="{@link}">
<xsl:value-of select="@name"/>
</a>
<xsl:apply-templates select="items" mode="sub_menu"/>
</li>
</xsl:template>
<!-- шаблон дляактивных пунктов меню второго и последующих уровней -->
<xsl:template match="item[@status = 'active']" mode="menu">
<li>
<a href="{@link}" class="active">
<xsl:value-of select="@name"/>
</a>
<xsl:apply-templates select="items" mode="sub_menu"/>
</li>
</xsl:template>
в итоге у вас выведультся только вторые и так далее уровни меню у активного пункта меню 1 уровня
короче мудрила мудрила я и вымудрила)))
добавила в админке поле-флаг Ссылка на подменю(submenu_link) и поставила условие.. получилось вот это:
<xsl:template match="udata[@module = 'content'][@method = 'menu']">
<ul>
<xsl:apply-templates select="items/item" mode="menu"/>
</ul>
</xsl:template>
<!-- активный пункт меню -->
<xsl:template match="item[@status = 'active']" mode="menu">
<xsl:variable name="is_submenu_link" select="document(concat('upage://', @id, '.submenu_link'))//value" />
<xsl:choose>
<xsl:when test="$is_submenu_link">
<li id="a">
<a href="{@link}" class="active">
<span><xsl:value-of select="@name" disable-output-escaping="yes"/></span>
</a>
<xsl:apply-templates select="document(concat('udata://content/menu/notemplate/1/', @id))/udata[items/item]"/>
</li>
</xsl:when>
<xsl:otherwise>
<li id="b">
<a href="{@link}" class="active">
<xsl:value-of select="@name" disable-output-escaping="yes"/>
</a>
</li>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<!-- неактивный пункт меню -->
<xsl:template match="item" mode="menu">
<xsl:variable name="is_submenu_link" select="document(concat('upage://', @id, '.submenu_link'))//value" />
<xsl:choose>
<xsl:when test="$is_submenu_link">
<li id="a">
<a href="{@link}">
<span><xsl:value-of select="@name" disable-output-escaping="yes"/></span>
</a>
<xsl:apply-templates select="document(concat('udata://content/menu/notemplate/1/', @id))/udata[items/item]"/>
</li>
</xsl:when>
<xsl:otherwise>
<li id="b">
<a href="{@link}">
<xsl:value-of select="@name" disable-output-escaping="yes"/>
</a>
</li>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
вот шаблон:
<xsl:template match="udata[@module = 'content'][@method = 'menu']">
<ul>
<xsl:apply-templates select="items/item" mode="menu"/>
</ul>
</xsl:template>
<!-- активный пункт меню -->
<xsl:template match="item[@status = 'active']" mode="menu">
<xsl:variable name="is_submenu_link" select="document(concat('upage://', @id, '.submenu_link'))//value" />
<xsl:choose>
<xsl:when test="$is_submenu_link">
<li id="a">
<a href="{@link}" class="active">
<span><xsl:value-of select="@name" disable-output-escaping="yes"/></span>
</a>
<xsl:apply-templates select="document(concat('udata://content/menu/notemplate/1/', @id))/udata[items/item]"/>
</li>
</xsl:when>
<xsl:otherwise>
<li id="b">
<a href="{@link}" class="active">
<xsl:value-of select="@name" disable-output-escaping="yes"/>
</a>
</li>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<!-- неактивный пункт меню -->
<xsl:template match="item" mode="menu">
<xsl:variable name="is_submenu_link" select="document(concat('upage://', @id, '.submenu_link'))//value" />
<xsl:choose>
<xsl:when test="$is_submenu_link">
<li id="a">
<a href="{@link}">
<span><xsl:value-of select="@name" disable-output-escaping="yes"/></span>
</a>
<xsl:apply-templates select="document(concat('udata://content/menu/notemplate/1/', @id))/udata[items/item]"/>
</li>
</xsl:when>
<xsl:otherwise>
<li id="b">
<a href="{@link}">
<xsl:value-of select="@name" disable-output-escaping="yes"/>
</a>
</li>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
это вызов:
<xsl:apply-templates select="document('udata://content/menu/0/2')/udata/items" mode="menu"/>