So greifen Sie auf Attributwerte der Kategoriendatei zu

Dieser Artikel beschreibt, wie Sie z.B. aus einem Listentemplate heraus auf Attributwerte (z.B. Text) aus einer Kategoriendatei zugreifen.

Tipp vorab:
Beim Einsatz des Objekt-Wizards können Sie in einem BASE (Mobile First) Projekt über "Listeneintrag des Objektes" die Kategorien über das Strukturelement "Listenerweiterung einbinden" über die Maske z.B. die "Kategorien als Text anzeigen".
Nachfolgend finden Sie die manuelle Umsetzung beschrieben.

Um über eine Liste zu den eingelesenen Dateien den Kategorienamen auszugeben, können Sie mittels XSL durch Auslesen der Kategorien-ID der entsprechenden Seite den Wert des zugehörigen text-Attributes auslesen. Somit erhalten Sie den Namen (z.B. Kunden) zu der entsprechenden id der Kategorie (z.B. 1177055180125).

Beispiel: Auszug aus der standard.wCategories.php eines Projektes

<categories>
  ...
  <category text="Kunden" id="1177055180125" group="" title_de="Kunden" title_en="Customers"/>
  ...
</categories>

Beispiel: Auszug aus der default.wFilelist.php

...
  <xsl:for-each select="wd:extension//wd:categories/wd:category">
    <xsl:variable name="categoryID"><xsl:value-of select="text()"/></xsl:variable>
    <xsl:value-of select="document(concat($wDocumentRoot, '/[IHR-LAYOUT-PROJEKT]/wGlobal/content/categories/standard.wCategories.php'))//category[@id = $categoryID]/@text" />,
  </xsl:for-each>
...

Nachfolgend ein Beispiel, das aufzeigt, wie das Zeilentemplate mehrere Sprachen hinsichtlich eines Kategorientextes unterstützen kann. Hierzu wird auf die global definierte wLanguageProject-Variable zurückgegriffen. Diese bestimmt dann, welches Textattribut zur Anzeige des Kategorientextes verwendet werden soll (title_de, title_en, etc.).

Beispiel: Auszug aus der standard.wParams.php mit Sprachvariable

...
<xsl:variable name="wLanguageProject"><xsl:value-of select="php:functionString('wProjectCur::getLanguage', $wProjectPath)" /></xsl:variable>
...

Beispiel: Auszug aus der default.wFilelist.php für Sprachbenennung

...
  <xsl:for-each select="wd:extension//wd:categories/wd:category">
    <xsl:variable name="categoryID"><xsl:value-of select="text()"/></xsl:variable>
    <xsl:value-of select="document(concat($wDocumentRoot, '/[IHR-LAYOUT-PROJEKT]/wGlobal/content/categories/standard.wCategories.php'))//category[@id = $categoryID]/@*[name() = concat('title_', $wLanguageProject)]" />,
  </xsl:for-each>
...