Aufbau einer multi-level-Menü für umbraco
Ich versuche zu bauen, ein multi-level-dropdrown CSS-Menü für eine website, die ich mache, auf der umbraco content-management-system.
Ich brauche um es zu bauen, haben die folgende Struktur:
<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>
So, ich bin jetzt versuchen, herauszufinden, wie Sie die Schachteln mit Hilfe von XSLT. Dies ist, was ich habe, so weit:
<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>
Was ich kann nicht scheinen, um herauszufinden, ist zu prüfen, wie wenn die erste Ebene (hier Seite #1 und Seite #2) hat keine Kinder, und wenn Sie tun fügen Sie die zusätzlichen <ul>
enthalten die <li>
Kinder.
Jemand da draußen zu zeigen mich in die richtige Richtung?
InformationsquelleAutor | 2008-11-21
Du musst angemeldet sein, um einen Kommentar abzugeben.
First off, keine Notwendigkeit pass, der eine
parent
parameter um. Der Kontext wird der transport dieser Informationen.Hier ist das XSL-stylesheet, das sollte dein problem lösen:
Dies ist die XML-getestet habe ich es auf (ich weiß nicht viel über Umbraco, aber nach einem Blick auf einige Beispiele ich hoffe, ich habe in der Nähe eine Umbraco-Dokument):
Dies ist die Ausgabe:
Das ist eine einfache eine. Wenn man sich sehr hart auf der Linie 33 finden Sie vor Ort ein syntax-Fehler. (Ich habe auch meine Feste Antwort. Aber Sie könnten es gesehen haben selbst.)
Hallo Tomalak, ich bin ganz neu Umbraco so noch nicht, die Stelle der syntax-Fehler 😐
Nie Verstand. 🙂 Funktioniert es jetzt?
InformationsquelleAutor Tomalak
Es ist nichts sehr spezielles zu diesem problem. Die folgenden tests, die die Knoten-Liste für
nicht leer ist, bevor Sie die Vorlagen:
Ich habe die folgende XML-Quelldokument:
Außerdem habe ich auskommentiert beliebigen code verweisen auf Umbraco-Erweiterungsfunktionen, wie ich don ' T haben Zugang zu Ihnen.
Wenn die oben beschriebene transformation wird angewendet auf das XML-Quelldokument, das richtige, das erwartete Ergebnis produziert:
Hoffe, dass dies geholfen.
Cheers,
Dimitre Novatchev
InformationsquelleAutor Dimitre Novatchev