So geben Sie Listeninhalte in der Navigation aus

26. Jan 2011

Dieser Artikel beschreibt, wie Sie eine Weblication® CMS Liste in die Navigation integrieren.

Um in der Navigation auch Listeninhalte mit auszugeben, erweitern Sie das Navigationstemplate um die Abfrage auf das Listenelement.

Das nachfolgende Beispiel führt dies anhand des Inhaltsverzeichnisses (Sitemap) an.

Erweitern Sie das XSL-Stylesheet für Listen um die Abfrage, ob die aufgerufene URL eine Sitemap ist. Das Beispiel geht davon aus, dass die Sitemap im Verzeichnis .../sitemap/... liegt. Trifft dies zu, wird für die Liste ein spezielles Listentemplate gesetzt.

Beispiel: Auszug aus dem XSL-Element der Liste (z.B. list.standard.wItem.php)

...
<wsl:php>
  $listId   = substr('<xsl:value-of select="@uid"/>',0, 8);
  $area = $_SERVER['REQUEST_URI'];
  $suchmuster = '/\/sitemap\//';
  if(preg_match($suchmuster, $area)){
    $template = '/IhrGlobalesProjekt/wGlobal/layout/templates/lists/sitemap.wFilelist.php';
  }
  else{
    $template = '<xsl:value-of select="php:functionString('wStringconverter::maskApos', wd:fragment[@id='listtemplate']/text())"/>';
  }
  //...
  //...
</wsl:php>
...

Dieses Listentemplate gestalten Sie entsprechend Ihren Vorstellungen. Ein Auszug aus einem beispielhaften Listentemplate finden Sie nachfolgend.

Beispiel: Auszug aus dem Zeilentemplate für die Listenansicht (z.B. sitemap.wFilelist.php)

...
<!-- Schleife über alle Dateien -->
<xsl:for-each select="files/file">
  <li class="listEntry clickable">
    <a class="listEntryMoreOnly" href="{@path}"><xsl:value-of select="wd:extension/wd:meta/wd:title/text()"/></a>
  </li>
</xsl:for-each>
...

Um die Liste in der Navigation auszugeben, setzen Sie innerhalb der gewünschten Navigationsebenen den Template-Aufruf für das Listenelement. Das verwendete Listen-Element (im Beispiel: list.standard.wItem.php) muss vor dem Template-Aufruf eingebunden sein.

Das Beispiel prüft jeden Navigationspunkt des Levels auf einen vorhandenen Link und ob es sich um eine Listendatei handelt. Am Beispiel ist dies innerhalb des zweiten Navigationslevels angeführt (Auszug).

Achten Sie darauf, dass Sie um die eingelesenen Navigationspunkte eine Container definiert haben (im Beispiel <div id="navigationSitemap"><ul class="navLevel1space">...)!

Beispiel: Auszug aus dem Navigationstemplate für die Sitemap (z.B. sitemap.wNavigation.php)

<?php $version="1.0"; $encoding="UTF-8"; ?>
<?php exit; ?>
<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:include href="$XSLTPRE[wDocumentRoot]/IhrGlobalesProjekt/wGlobal/layout/templates/misc/standard.wParams.php"/> 
  <xsl:include href="$XSLTPRE[wDocumentRoot]/IhrGlobalesProjekt/wGlobal/layout/templates/misc/includes.global.php"/>
  <xsl:include href="$XSLTPRE[wDocumentRoot]/IhrGlobalesProjekt/wGlobal/layout/templates/items/list.standard.wItem.php"/>

  <!--Hier werden Die Daten hingeschrieben-->
  <xsl:template match="/wNavigation">
    <div id="navigationSitemap">  
      <ul class="navLevel1space">
        <xsl:apply-templates select="/wNavigation/navPoint"/>
      </ul>
    </div>
  </xsl:template>

  <!--Dieses Template wird auf jeden Navigtionspunkt des ersten Levels angewandt-->
  <!-- ... -->
  <!-- ... -->

  <!--Dieses Template wird auf jeden Navigtionspunkt des zweiten Levels angewandt-->
  <xsl:template match="/wNavigation/navPoint/navPoint">
    <xsl:choose>
      <xsl:when test="php:functionString('wRepository::documentExists', @link) and document(concat($wDocumentRoot, @link))/wd:document/wd:group/wd:item[@type = 'list.standard']">
        <xsl:apply-templates select="document(concat($wDocumentRoot, @link))//wd:document/wd:group/wd:item[@type = 'list.standard']" />
      </xsl:when>
    <!-- ... -->
  <!-- ... -->
<!-- ... -->

Ähnliche Seiten

Entwicklerbereich Weblication® CMS - © Scholl Communications AG