Kategorien - Aufbau und Verwendung

Die Kategorien in Weblication® dienen der Strukturierung und Gruppierung von XML- oder Binärdateien. Auf diese Weise können Inhalte thematisch gegliedert werden und Beziehungen zwischen Dokumenten hergestellt werden.

In der BASE werden einige Kategoriendateien mitgeliefert. In dieser Datei werden die zentral definierten Kategorien im XML-Format gespeichert und bei der Seitenbearbeitung und in der Konfiguration einiger Weblics bereitgestellt, z.B.:

/[IHR-LAYOUT-PROJEKT]/wGlobal/content/categories/*.wCategories.php 

Aufbau

Beispielhafter Aufbau der zentralen Kategoriendatei standard.wCategories.php

<?php $version="1.0"; $encoding="UTF-8"; ?>
<?php exit; ?>
<categories>
<wd:extension xmlns:wd="http://weblication.de/5.0/wd" type="weblication" version="5.0" uid="8c343707cc5b87b493a568e9a4ec1c83">
  <wd:meta>
    <wd:title>Standardkategorieen</wd:title>
    <wd:description/>
    <wd:keywords/>
    ...
  </wd:meta>
  ...
</wd:extension>
  <category text="Unternehmen" id="1177055143578" group="" title_de="Unternehmen" title_en="Company">
    <category text="Subunternehmen" id="1251969641249" title_en="Subcontractor" title_de="Subunternehmen" group=""/>
  </category>  
  <category text="Kunden" id="1177055180125" group="" title_de="Kunden" title_en="Customers"></category>
  <category text="Partner" id="1252445710891" group="" title_de="Partner" title_en="Partner"/>
</categories>

Verwendung und Einsatzgebiete von Kategorien

Einfachstes Beispiel für die Verwendung von Kategorien ist die gefilterte Darstellung von Einträgen in einer Übersichtsliste. Bei der Verwendung einer kategorisierten Liste kann die Menge der angezeigten Einträge nach Kategorien gefiltert werden. So können beispielsweise nur Dateien angezeigt werden, die einer oder mehreren bestimmten Kategorien zugeordnet sind.

Ein weiteres Beispiel ist die Herstellung von Beziehungen zwischen mehreren Dokumenten: So können Sie auf einer Seite über eine kategorisierte Listenfunktion alle weiteren Seiten derselben Kategorie(n) anzeigen lassen.

Kategorienzuweisung in Dateien

Die Zuweisung einer Datei zu einer oder mehreren Kategorien erfolgt über die Bearbeitung im Weblication® Editor. Hierzu wird in aller Regel die Pflegemaske des Metadatenbereiches im Kopf der Bearbeitungsmaske um den entsprechenden Eintrag erweitert:

Bearbeitungsbereich für Kategorien im XSLT-Stylesheet (standard.metadata.php)

<div class="wEditorExtensionLabel">Kategorien</div>
  <div class="wEditorExtensionValue">
    <!--web:categories:start language="<xsl:value-of select="php:functionString('wUserCur::getLanguage')" />" pathCategories="/[IHR-LAYOUT-PROJEKT]/wGlobal/content/categories/standard.wCategories.php" editor="checkbox" inputStyle="max-height:120px;overflow:auto" multiple="1"--><xsl:copy-of select="/wd:document/wd:extension/wd:meta/wd:categories"/><!--web:categories:stop-->
  </div>

Hierbei wird über den Pflegetag web:categories:start und der Pfadangabe der zugrundeliegenden Kategoriendatei pathCategories="/pfad/zur/Kategoriendatei.php" der Kategorieneditor in die Maske integriert. 

Weitere Informationen zu Pflegetags finden Sie hier:
Kategorien-Pflegetags

Die Speicherung der Kategorienzuweisung erfolgt standardmässig im Metadatenbereich der Seite bzw. in den Objekt-Daten (wd:objects), wenn z.B. mehrere Kategoriendateien zu einer Seite verwendet werden.

Jede zugewiesene Kategorie erhält einen Eintrag in der Form von:

...
  <wd:category>$KategorienID</wd:category>
...

Speicherung der Kategorienzuordnung in der Inhaltsseite (Metadaten)

  <wd:extension type="weblication" version="5.0">
    <wd:meta>
      <wd:title>Seitentitel</wd:title>
      <wd:description>Beschreibung der Seite</wd:description>
      <wd:keywords>Weblication®</wd:keywords>
      <wd:categories>
        <wd:category>1177055143578</wd:category>
        <wd:category>1177055180125</wd:category>
      </wd:categories>
      ...
    </wd:meta>
    [...]
      <wd:cache expires="{wGetValueOfDefaultExtension()}"/>
  </wd:extension>

Speicherung der Kategorienzuordnung in der Inhaltsseite (Objekt-Daten)

  <wd:extension type="weblication" version="5.0">
    <wd:meta>
      <wd:title>Hybrid-Kondensator</wd:title>
      <wd:description></wd:description>
      <wd:keywords>Weblication®</wd:keywords>
      <wd:categories/>
      ...
    </wd:meta>
    <wd:object type="shopProduct">
      <wd:data id="title" type="char.text"/>
      ...
      <wd:data id="categories" type="categories.default">
        <wd:category>254275254275</wd:category>
        <wd:category>913427913427</wd:category>
      </wd:data>
      ...
    </wd:object>
    [...]
      <wd:cache expires="{wGetValueOfDefaultExtension()}"/>
  </wd:extension>

Bitte beachten Sie, dass hierbei die Zuordnung ausschliesslich über die ID der Kategorie erfolgt. 
Der zugehörige Text wird aus der zentralen Kategoriendatei referenziert.

Beispielhafter Code zur Ausgabe des Textes einer Kategorie, von der nur die ID bekannt ist

// Ermitteln der KategorienID aus dem aktuellen Dokument
// Setzen der XSL-Variable currentCategoryId
// Zuweisung der aktuellen KategorienID

<xsl:variable name="currentCategoryId"><xsl:value-of select="/wd:document/wd:extension/wd:meta/wd:categories/wd:category"/></xsl:variable>


// Zugriff auf die Kategoriendatei mithilfe des xPath-Befehls document
// Zugriff auf den category-Knoten mit der ID der ueber die Variable uebermittelten ID

<xsl:value-of select="document(concat($wDocumentRoot,'/de/wGlobal/content/categories/categories.php'))//category[@id = $currentCategoryId]/@text "/>

Wenn Sie zu einer Datei Kategorienwerte aus unterschiedlichen Kategorien-Dateien schreiben wollen, müssen Sie dies in unterschiedlichen XML-Knoten vornehmen. Ein Beispiel hierzu ist das Veranstaltungskalender Weblic®, bei welchem Kategorien zur Veranstaltungsart und zum Veranstaltungsort in unterschiedlichen XML-Knoten innerhalb des wd:object Bereiches geschrieben werden.

Individuelle Pflegemaske für Kategorien

Eine eigene Pflegemaske für eine bestimmte Kategoriendatei (z.B. die Kategoriendatei für Länder zum Shop) können Sie wie folgt nutzen:

Legen Sie passend zum Namen der Kategoriendatei (z.B. shopCountries.wCategories.php) die Datei für die Definition der Pflegemaske an, im Beispiel also:

/[IHR-LAYOUT-PROJEKT]/wGlobal/layout/editor/category/shopCountries.attributes.wEditorCategory.php

In dieser Pflegemaske können Sie die Attribute passend für die verwendete Kategoriendatei definieren, um so z.B. abweichende Versandkosten (oder andere Attribute) pflegbar zu machen.