Listenausgabe über PHP im Listentemplate steuern

Neben den vielfältigen Möglichkeiten, Inhalte von Dateien über Weblication Listen auszugeben (XSL, CSS, etc.), kann im Zeilentemplate der Liste auch rein auf PHP zurückgegriffen werden.

Das unten angeführte Quelltextbeispiel zeigt hierzu eine ganz einfache Umsetzung, welche Ihnen als Basis für individuelle Umsetzungen dienen kann.

Über PHP können Sie auf die aufzulistenden Dateien mit eigener Programmierung Einfluss nehmen. Mögliche Einsatzzwecke sind unter anderem:

  • Liste nach Kategorie gruppiert ausgeben
  • Liste nach eigenen Sortierkriterien ausgeben
  • Liste anhand eigener Datenbankabfragen ausgeben
  • u.v.m.

Beispiel: Auszug aus einem Listentemplate (z.B. php.wFilelist.php)

<!--- ... -->
  <xsl:template match="/wFilelist">

    <!--<xsl:copy-of select="/"/>-->
    <!-- Vor der XSLT-Transformation auszuführendes PHP-Skript. Hier werden Daten aus der Weblic-Konfiguration und der CSS aufbereitet -->
    <wslPre:php>
      <![CDATA[
      $wCSSPath = wPageCur::getPathCSS();
      $dataList    = wList::getDataOfList();
      $dataVariant = wCSS::getDataVariantOfList($dataList, array('wCSSPath' => $wCSSPath, 'variantClass' => 'listDefault'));
      wList::setDataOfVariantToList($dataVariant, array('wCSSPath' => $wCSSPath, 'variantClass' => 'listDefault', 'listDatasToOptions' => array('picture-createhd' => 'createHD', 'picture-lazyload' => 'lazyLoad', 'preview-picture-createhd' => 'createHD', 'preview-picture-lazyload' => 'lazyLoad')));
      $dataVariantOfList = wList::getDataOfVariantOfList();
      ]]>
    </wslPre:php>
    
    <wsl:php>
      //Alle an die Liste übergebenen Daten
      $dataList          = wList::getDataOfList();    
      //Variantendaten der Liste
      $dataVariantOfList = wList::getDataOfVariantOfList();
    </wsl:php>  

    <xsl:choose>
      <xsl:when test="files/file">
        <!-- Schleife über alle Dateien -->
        <wsl:php>
          $entries = array();

          <xsl:for-each select="files/file">
            $path = '<xsl:value-of select="@path"/>';               
            $entries[] = $path;
          </xsl:for-each>

          <![CDATA[

          print '<ul class="listDefault listDefault_var'.$dataList['layout'].' '.$dataList['attribute-classesSubvariants'].'">';

          foreach($entries as $path){

            $title = wDocumentData::getData($path, 'title');

            print '<li class="listEntry">';
            print '  <h3 class="listEntryTitle"><a href="'.$path.'">'.$title.'</a></h3>';
            print '</li>';

          }

          print '</ul>';
          ]]>

        </wsl:php>  
      </xsl:when>
      <xsl:otherwise>
        <!-- Falls keine Einträge vorhanden sind -->
      </xsl:otherwise>
    </xsl:choose>

  </xsl:template>
<!-- ... -->