Navigation mit geöffneten Hauptpunkten

08. Jan 2010

Anwendungsbeispiel: Zeigt eine Navigation mit geöffneten Hauptpunkten, damit die Navigationspunkte der 2. Ebene immer sichtbar sind.

Navigation mit geöffneten Hauptpunkten

Sofern die Navigation bei Aufruf der Präsenz immer das erste und zweite Level (Hauptpunkte und Unterpunkte zweiter Ebene) anzeigen soll, verwenden Sie den Navigationsmodus "treeAll" und setzen im Navigationstemplate innerhalb der Definition für NAVLEVEL1 die Abfrage "...when test="count(child::*) > 0"...".

Nachfolgend finden Sie ein Beispiel hierfür auf Grundlage des Beispielprojektes "SPIN ".
Die Navigation ist bei Aufruf der Startseite wie folgt strukturiert:

  • NAVLEVEL 1
    • NAVLEVEL 2
    • NAVLEVEL 2
  • NAVLEVEL 1
    • NAVLEVEL 2
  • NAVLEVEL 1

Die Hauptpunkte (erste Ebene) sind also immer geöffnet und zeigen die Unterpunkte (zweite Ebene) an. Die dritte Ebene (NAVLEVEL 3) erscheint erst nach Klick auf einen Navigationspunkt der zweiten Ebene.

Beispiel: Auszug aus standard.wDocument.php mit Navigationsaufruf über mode="treeAll"

...
<!-- Hier wird die Unternavigation eingebunden -->
<div id="navigationMain">
  <wsl:navigation data="{$wProjectPath}/wGlobal/content/navigations/standard.wNavigation.php" template="/wGlobal/wGlobal/layout/templates/navigations/main_1open.wNavigation.php" mode="treeAll" navid="$PARAM['navid']" useLastNavId="1"/>
</div>
...

Beispiel: Navigationstemplate main.wNavigation.php mit definiertem Level1 für ständig geöffnet

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:wsl="http://weblication.de/5.0/wsl" xmlns:wd="http://weblication.de/5.0/wd" xmlns:php="http://php.net/xsl" exclude-result-prefixes="wd wsl php" version="1.0">
  <xsl:output method="xml" indent="no" omit-xml-declaration="yes" encoding="UTF-8"/>

  <xsl:param name="wHostURL"/>
  <xsl:param name="wDocumentRoot"/>
  <xsl:param name="wDocumentPath"/>
  <xsl:param name="wDocumentDir"/>
  <xsl:param name="wDocumentQuery"/>
  <xsl:param name="wIsInEditor"/>
  <xsl:param name="wUsertype"/>
  <xsl:param name="wIsLoggedIn"/>
  <xsl:param name="wSessionLanguage"/>
  <xsl:param name="wUserLanguage"/>

  <xsl:template match="/wNavigation"> 
    <ul class="navLevel1Container">
      <!-- Hier steht später die generierte Navigation -->
      <xsl:apply-templates select="/wNavigation/navPoint"/>
    </ul>
  </xsl:template>
  
  <!--Dieses Template wird auf jeden Navigtionspunkt des ersten Levels angewandt-->
  <xsl:template match="/wNavigation/navPoint">
    <xsl:choose>
      <xsl:when test="@selected = '1' and @open = '1' and count(child::*) &gt; 0">
        <li class="navLevel1OpenSelected">
          <a class="navLevel1OpenSelected" href="{@link}"><xsl:value-of select="@text"/></a>
          <ul class="navLevel2Container">
            <xsl:apply-templates select="navPoint"/>
          </ul>
        </li>
      </xsl:when>
      <xsl:when test="@selected = '1'">
        <li class="navLevel1Selected">
          <a class="navLevel1Selected" href="{@link}"><xsl:value-of select="@text"/></a>
        </li>
      </xsl:when>
      <xsl:when test="@open = '1' and count(child::*) &gt; 0">
        <li class="navLevel1Open">
          <a class="navLevel1Open" href="{@link}"><xsl:value-of select="@text"/></a>
          <ul class="navLevel2Container">
            <xsl:apply-templates select="navPoint"/>
          </ul>
        </li>
      </xsl:when>
      <xsl:when test="count(child::*) &gt; 0">
        <li class="navLevel1Open">
          <a class="navLevel1" href="{@link}"><xsl:value-of select="@text"/></a>
          <ul class="navLevel2Container">
            <xsl:apply-templates select="navPoint"/>
          </ul>
        </li>
      </xsl:when>
      <xsl:when test="@numberChilds &gt; 0">
        <li class="navLevel1">
          <a class="navLevel1" href="{@link}"><xsl:value-of select="@text"/></a>
        </li>
      </xsl:when>
      <xsl:otherwise>
        <li class="navLevel1">
          <a class="navLevel1" href="{@link}"><xsl:value-of select="@text"/></a>
        </li>
      </xsl:otherwise>
    </xsl:choose>
  </xsl:template>
    

  <!--Dieses Template wird auf jeden Navigtionspunkt des zweiten Levels angewandt-->
  <xsl:template match="/wNavigation/navPoint/navPoint">
  
    <xsl:choose>
      <xsl:when test="@selected = '1' and @open = '1' and count(child::*) &gt; 0">
        <li class="navLevel2OpenSelected">
          <a class="navLevel2OpenSelected" href="{@link}"><xsl:value-of select="@text"/></a>
          <ul class="navLevel3Container">
            <xsl:apply-templates select="navPoint"/>
          </ul>
        </li>
      </xsl:when>
      <xsl:when test="@selected = '1'">
        <li class="navLevel2Selected">
          <a class="navLevel2Selected" href="{@link}"><xsl:value-of select="@text"/></a>
        </li>
      </xsl:when>
      <xsl:when test="@open = '1' and count(child::*) &gt; 0">
        <li class="navLevel2Open">
          <a class="navLevel2Open" href="{@link}"><xsl:value-of select="@text"/></a>
          <ul class="navLevel3Container">
            <xsl:apply-templates select="navPoint"/>
          </ul>
        </li>
      </xsl:when>
      <xsl:when test="@numberChilds &gt; 0">
        <li class="navLevel2">
          <a class="navLevel2" href="{@link}"><xsl:value-of select="@text"/></a>
        </li>
      </xsl:when>
      <xsl:otherwise>
        <li class="navLevel2">
          <a class="navLevel2" href="{@link}"><xsl:value-of select="@text"/></a>
        </li>
      </xsl:otherwise>
    </xsl:choose>
  </xsl:template>
    

  <!--Dieses Template wird auf jeden Navigtionspunkt des dritten Levels angewandt-->
  <xsl:template match="/wNavigation/navPoint/navPoint/navPoint">
  
    <xsl:choose>
      <xsl:when test="@selected = '1' and @open = '1' and count(child::*) &gt; 0">
        <li class="navLevel3OpenSelected">
          <a class="navLevel3OpenSelected" href="{@link}"><xsl:value-of select="@text"/></a>
          <ul class="navLevel4Container">
            <xsl:apply-templates select="navPoint"/>
          </ul>
        </li>
      </xsl:when>
      <xsl:when test="@selected = '1'">
        <li class="navLevel3Selected">
          <a class="navLevel3Selected" href="{@link}"><xsl:value-of select="@text"/></a>
        </li>
      </xsl:when>
      <xsl:when test="@open = '1' and count(child::*) &gt; 0">
        <li class="navLevel3Open">
          <a class="navLevel3Open" href="{@link}"><xsl:value-of select="@text"/></a>
          <ul class="navLevel4Container">
            <xsl:apply-templates select="navPoint"/>
          </ul>
        </li>
      </xsl:when>
      <xsl:when test="@numberChilds &gt; 0">
        <li class="navLevel3">
          <a class="navLevel3" href="{@link}"><xsl:value-of select="@text"/></a>
        </li>
      </xsl:when>
      <xsl:otherwise>
        <li class="navLevel3">
          <a class="navLevel3" href="{@link}"><xsl:value-of select="@text"/></a>
        </li>
      </xsl:otherwise>
    </xsl:choose>
  </xsl:template>
  
  <!--Dieses Template wird auf jeden Navigtionspunkt des vierten Levels angewandt-->  
  <xsl:template match="/wNavigation/navPoint/navPoint/navPoint">    
  
    <xsl:choose>    
      <xsl:when test="@selected = '1'">
        <li class="navLevel4Selected">              
          <a class="navLevel4Selected" href="{@link}"><xsl:value-of select="@text"/></a>
        </li>
      </xsl:when>
      <xsl:otherwise>
        <li class="navLevel4">               
          <a class="navLevel4" href="{@link}"><xsl:value-of select="@text"/></a>
        </li>           
      </xsl:otherwise>               
    </xsl:choose> 
  </xsl:template>  

</xsl:stylesheet>

Ähnliche Seiten

Entwicklerbereich Weblication® CMS - © Scholl Communications AG