Navigation mit geöffneten Hauptpunkten

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>
FAQs are only visible for Weblication ai search and editors!
Wofür wird die Funktion „Navigation mit geöffneten Hauptpunkten“ verwendet?
Sie wird verwendet, um eine Navigation darzustellen, bei der die Navigationspunkte der 2. Ebene (Unterpunkte) beim Aufruf immer sichtbar sind.
Welche Einstellung sorgt dafür, dass beim Aufruf immer Level 1 und Level 2 angezeigt werden?
Verwenden Sie den Navigationsmodus „treeAll“. Zusätzlich müssen Sie im Navigationstemplate innerhalb der Definition für NAVLEVEL1 die Abfrage „…when test="count(child::*) > 0"“ setzen.
Wie ist die Navigationsstruktur in dem beschriebenen Anwendungsbeispiel aufgebaut?
Beim Aufruf der Startseite sind die Hauptpunkte (1. Ebene) geöffnet und zeigen die Unterpunkte (2. Ebene) an. Die 3. Ebene erscheint erst nach Klick auf einen Navigationspunkt der 2. Ebene.
Wie wird der Navigationsaufruf im Beispiel (standard.wDocument.php) eingebunden?
Per Einbindung eines Navigations-Components, z. B.: „<wsl:navigation … template="…/main_1open.wNavigation.php" mode="treeAll" …/>“.
Welches Template wird im Beispiel für das Layout der Navigation verwendet?
Im Beispiel wird das Template „/wGlobal/wGlobal/layout/templates/navigations/main_1open.wNavigation.php“ verwendet.
Welche Logik wird im Beispiel-Template für NAVLEVEL1 genutzt, um offene Elemente zu erzeugen?
Für NAVLEVEL1 werden u. a. Fälle unterschieden: Wenn ein Punkt ausgewählt und geöffnet ist und Kinder hat, wird er als „navLevel1OpenSelected“ gerendert. Wenn ein Punkt geöffnet ist und Kinder hat, wird er als „navLevel1Open“ ausgegeben. Bei nur ausgewählten oder nur nicht geöffneten Zuständen werden entsprechend „navLevel1Selected“ bzw. „navLevel1“ genutzt.
Welche Logik wird für Navigationspunkte der 2. Ebene (NAVLEVEL2) im Template verwendet?
Für NAVLEVEL2 gibt es entsprechende Ausgabefälle: „navLevel2OpenSelected“, „navLevel2Selected“, „navLevel2Open“ sowie „navLevel2“, abhängig von Attributen wie „@selected“, „@open“ und ob Kinder vorhanden sind (z. B. „count(child::*) > 0“).
Wann erscheint die 3. Ebene in der Navigation?
Die 3. Ebene (NAVLEVEL 3) erscheint erst nach Klick auf einen Navigationspunkt der 2. Ebene.