Listenaufruf und Listentemplates

Das Listenelement besteht aus verschiedenen in XML abgelegten Parametern, die das Verhalten der Liste steuern:

XML-Code eines Listenelements

    <wd:item name="Liste" en:name="List" icon="/deGlobal/wGlobal/layout/images/element-icons/element_list.gif" type="list.standard">
      <wd:fragment id="listtemplate" type="src.file">/deGlobal/wGlobal/layout/templates/lists/default.wFilelist.php</wd:fragment>
      <wd:fragment id="entriesPage" type="char.text">3</wd:fragment>
      <wd:fragment id="limitPages" type="char.text">0</wd:fragment>
      <wd:fragment id="orderBy" type="char.text">/wd:extension/wd:meta/wd:publication/@time</wd:fragment>
      <wd:fragment id="orderDir" type="char.text">desc</wd:fragment>
      <wd:fragment id="orderType" type="char.text">nat</wd:fragment>
      <wd:fragment id="dir" type="src.dir">$wMastertemplateInsert['projectPath']/aktuelles/meldungen</wd:fragment>
      <wd:fragment id="categories" type="char.text"/>
      <wd:fragment id="dirRecursive" type="src.default"/>
      <wd:fragment id="file" type="src.default"/>
      <wd:fragment id="allowKeywordfilter" type="char.default"/>
    </wd:item>

Beim Aufruf der Seite, in welcher die Liste integriert ist, wird nun durch das XSL-Stylesheet des Listenelements der Funktionsaufruf der Liste mit den im XML gespeicherten Parametern ausgeführt. Dieser Funktionsaufruf gibt eine Liste aller gefundenen Dateien in einem XML-String zurück und transformiert es mit einem XSL-Stylesheet, dem Listen-Darstellungstemplate:

XSL-Stylesheet für die Listendarstellung (Zeilentemplate)

<?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"/>

  <!-- Hilfe zum Aufbau einer Zeilenvorlage finden Sie unter: http://grid.weblication.de -->  

  <!-- Dieser Block enthält die Information, die im Struktureditor bei der Auswahl der Zeilenvorlage angezeigt wird -->
  <wd:extension type="weblication" version="5.0">  
    <wd:meta>
      <wd:title>Kompakte Darstellung</wd:title>
      <wd:title_en>Compact view</wd:title_en>
      <wd:description/>
      <wd:modification name="admin" time="1277143786"/></wd:meta>
    <wd:version value="2"/>
      <wd:cache expires="{wGetValueOfDefaultExtension()}"/>
  </wd:extension>

  <!-- Hier werden zentral die benötigten System-Parameter eingebunden -->
  <xsl:include href="$XSLTPRE[wDocumentRoot]/deGlobal/wGlobal/layout/templates/misc/standard.wParams.php"/>  

  <xsl:template match="/wFilelist">
    <ul class="listCompact">
    
      <!-- Zeigt das zu tranformierende XML-Dokument an-->
      <!--<xsl:copy-of select="/" />-->    
    
      <!-- Schleife über alle Dateien -->
      <xsl:for-each select="files/file">
        <li>
          <xsl:choose>

            <!-- Darstellung einer Meldung -->
            <xsl:when test="wd:extension/wd:object[@type = 'news']">
              <span class="listEntryDate"><xsl:value-of select="php:functionString('wDate::formatDate', 'd.m.Y', wd:extension/wd:meta/wd:publication/@time)"/></span>
              <p class="listEntryDescription"><a class="listEntryMoreOnly" href="{@path}"><xsl:value-of select="wd:extension/wd:meta/wd:title/text()"/></a></p>
            </xsl:when>

            <!-- Darstellung einer Messe oder Veranstaltung -->
            <xsl:when test="wd:extension/wd:object[@type = 'event']">
              <span class="listEntryDate"><xsl:value-of select="substring(wd:extension/wd:object/wd:data[@id='dateFrom'], 9, 2)"/>.<xsl:value-of select="substring(wd:extension/wd:object/wd:data[@id='dateFrom'], 6, 2)"/>. - <xsl:value-of select="substring(wd:extension/wd:object/wd:data[@id='dateTo'], 9, 2)"/>.<xsl:value-of select="substring(wd:extension/wd:object/wd:data[@id='dateTo'], 6, 2)"/>.<xsl:value-of select="substring(wd:extension/wd:object/wd:data[@id='dateTo'], 1, 4)"/> in <xsl:value-of select="wd:extension/wd:object/wd:data[@id='town']"/></span>
              <p class="listEntryDescription"><a class="listEntryMoreOnly" href="{@path}"><xsl:value-of select="wd:extension/wd:meta/wd:title/text()"/></a></p>
            </xsl:when>      

            <!-- Darstellung einer Standardseite -->
            <xsl:when test="wd:stat/@extension = 'php'">
              <a href="{@path}"><xsl:value-of select="wd:extension/wd:meta/wd:title/text()"/></a>
            </xsl:when>
            
            <!-- Falls es sich um eine Binärdatei (Bilder, PDFs, usw.) handelt -->  
            <xsl:otherwise>
              <a href="{@path}" class="noDecoration"><img class="listIcon" src="/devGlobal/wGlobal/layout/images/file-icons/file-{wd:stat/@extension}.gif" alt=""/>                    
              <xsl:choose> 
                <xsl:when test="wd:extension/wd:meta/wd:title/text()">     
                  <xsl:value-of select="wd:extension/wd:meta/wd:title/text()"/>
                </xsl:when>
                <xsl:otherwise>
                  <xsl:value-of select="wd:stat/@name"/>
                </xsl:otherwise>  
              </xsl:choose>
              </a>
               <span class="listEntrySize">(<xsl:value-of select="php:functionString('intval', wd:stat/@size div 1024)"/> KB)</span>                              
            </xsl:otherwise>

          </xsl:choose>
        </li>           
      </xsl:for-each>
    </ul>
  </xsl:template>
</xsl:stylesheet>

Die zur Verfügung stehenden Zeilentemplates werden im globalen Projekt unterhalb folgendem Pfad abgespeichert und stehen danach automatisch bei der Listenkonfiguration zur Verfügung:

/[IHR-LAYOUT-PROJEKT]/wGlobal/layout/templates/lists

Hinweis:
Genau wie Inhaltsdateien haben auch Listen eine wd:extension, in der Metainformationen gespeichert werden können. So wird beispielsweise das XML-Element wd:title verwendet, um dem Redakteur in der Listenkonfiguration einen passenden Namen anzuzeigen.

Listen über das PHP-Framework erzeugen

Listen können auch "manuell" über das PHP-Framework erzeugt werden. 

Weitere Informationen finden Sie hier:
PHP-Framework: Listen
PHP in XSL-Stylesheets ausführen