So setzen Sie eine eigene Kategorienauswahl um

Dieser Artikel beschreibt, wie Sie für die Bearbeitung eine eigene Kategorienauswahl umsetzen, um z.B. anstatt aller Ebenen nur die ersten beiden Ebenen des Kategorienbaumes anzuzeigen.

Um aus der Kategoriendatei einem Benutzer nicht den ganzen Baum zur Auswahl anzubieten, sondern lediglich z.B. die ersten beiden Stufen des Kategorienbaumes, können Sie wie folgt vorgehen.

Beispiel: Auszug aus der standard.metadata.php mit Kategorienauswahl über ein eigenes Script

...
<div class="wEditorExtensionLabel">Kategorien&#160;<span>(eigene Auswahl)</span></div>              
<div class="wEditorExtensionValue">
  <!--web:categories:start script="/de/wGlobal/scripts/showCategoriesToSelect.php" multiple="1" size="5"--><xsl:copy-of select="/wd:document/wd:extension/wd:object/wd:data[@id='categoriesAdv']"/><!--web:categories:stop-->
</div>
...

Beispiel: Script zur Kategorienauswahl (showCategoriesToSelect.php)

include($_SERVER['DOCUMENT_ROOT'].'/weblication/grid.php');

$xmlStr = wReadWrite::readFile($_SERVER['DOCUMENT_ROOT'].'/de/wGlobal/content/categories/products.wCategories.php');
$xsltString = wReadWrite::readFile($_SERVER['DOCUMENT_ROOT'].'/de/wGlobal/layout/templates/categoriesSelect.php');

print
wXSLT::processString($xmlStr, $xsltString);

Beispiel: XSL-Template zum Einlesen der Kategorien (categoriesSelect.php)

<xsl:stylesheet xmlns="http://www.w3.org/1999/xhtml" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xslIfIsInEditor="http://www.w3.org/1999/XSL/Transform" xmlns:wslPre="http://weblication.de/5.0/wsl" xmlns:wslPost="http://weblication.de/5.0/wsl" xmlns:wslEditorPre="http://weblication.de/5.0/wsl" 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 wslPre wsl php" version="1.0">
   <xsl:output method="xml" indent="yes" omit-xml-declaration="yes" encoding="UTF-8"/>

   <!-- Hier beginnt das eigentliche Seiten-Template-->

   <xsl:template match="/categories">
     <entries>
     <xsl:for-each select="category">
       <entry value="{@id}"><xsl:value-of select="@text" /></entry>
       <xsl:for-each select="category">
         <entry value="{@id}">&#160;&#160;<xsl:value-of select="@text" /></entry>
       </xsl:for-each>
     </xsl:for-each>
     </entries>  
   </xsl:template>

</xsl:stylesheet>