J'essaie de créer un menu CSS à plusieurs niveaux de dropdown pour un site Web que je fais sur le système de gestion de contenu umbraco.Construire un menu à plusieurs niveaux pour umbraco
J'ai besoin de construire pour avoir la structure suivante:
<ul id="nav">
<li><a href="..">Page #1</a></li>
<li>
<a href="..">Page #2</a>
<ul>
<li><a href="..">Subpage #1</a></li>
<li><a href="..">Subpage #2</a></li>
</ul>
</li>
</ul>
Alors maintenant, je suis en train de comprendre comment faire l'imbrication en utilisant XSLT. Voilà ce que j'ai jusqu'à présent:
<xsl:output method="xml" omit-xml-declaration="yes"/>
<xsl:param name="currentPage"/>
<!-- update this variable on how deep your menu should be -->
<xsl:variable name="maxLevelForMenu" select="4"/>
<xsl:template match="/">
<ul id="nav">
<xsl:call-template name="drawNodes">
<xsl:with-param
name="parent"
select="$currentPage/ancestor-or-self::node [@level=1]"
/>
</xsl:call-template>
</ul>
</xsl:template>
<xsl:template name="drawNodes">
<xsl:param name="parent"/>
<xsl:if test="umbraco.library:IsProtected($parent/@id, $parent/@path) = 0 or (umbraco.library:IsProtected($parent/@id, $parent/@path) = 1 and umbraco.library:IsLoggedOn() = 1)">
<xsl:for-each select="$parent/node [string(./data [@alias='umbracoNaviHide']) != '1' and @level <= $maxLevelForMenu]">
<li>
<a href="{umbraco.library:NiceUrl(@id)}">
<xsl:value-of select="@nodeName"/>
</a>
<xsl:if test="count(./node [string(./data [@alias='umbracoNaviHide']) != '1' and @level <= $maxLevelForMenu]) > 0">
<xsl:call-template name="drawNodes">
<xsl:with-param name="parent" select="."/>
</xsl:call-template>
</xsl:if>
</li>
</xsl:for-each>
</xsl:if>
</xsl:template>
Ce que je ne peux pas sembler comprendre comment vérifier si le premier niveau (ici Page # 1 et Page # 2) a des enfants, et si elles ajoutez le <ul>
supplémentaire pour contenir les enfants <li>
.
Quelqu'un est là pour me diriger dans la bonne direction?
me a renvoyé l'erreur lors de l'enregistrement dans Umbraco 4.7.8 Une erreur est survenue Erreur dans XSLT à la ligne 33, char 11 31: 32: 33: >>> 34: 35: –
@Alexa C'est facile . Si vous regardez très fort à la ligne 33, vous verrez une erreur de syntaxe.(J'ai aussi corrigé ma réponse, mais vous auriez pu le voir vous-même.) – Tomalak
Salut Tomalak, je suis très nouveau avec Umbraco, donc je n'ai pas repéré l'erreur de syntaxe: | –