Zum Inhalt

Menü konfigurieren

Konfigurationsdatei#

Die Navigationserzeugung wird durch eine Konfigurationsdatei gesteuert. Standardmäßig wird diese Datei im Pfad site/config/navigation_generator.conf abgelegt. Eine Beispieldatei finden Sie unter site/config/navigation_generator.conf.sample. Alternativ können Sie auch einen anderen Pfad wählen und auch mit mehreren Konfigurationsdateien arbeiten. Zu diesem Zweck kann die Konfigurationsdatei beim Aufruf der Navigationserzeung als Parameter mitgegeben werden. Mehr Informationen dazu finden Sie im Kapitel Menü erzeugen.

Struktur der Konfiguration#

Die grundlegende Struktur dieser Datei ist die folgende:

<root>
<common>
</common>
<name-ihres-menus>
</name-ihres-menus>
</root>

Die Bereiche root und common sind vorgegeben, darüber hinaus können Sie beliebige viele Bereiche mit einer eigenen Benennung – z.B. hnav, vnav oder breadcrumb – hinzufügen. In dem Bereich common werden einige globale Einstellungen gesetzt. Über diesen Punkt wird definiert, wie und wo die generierten Dateien abgelegt werden sollen und wie sie auf das Zielsystem transferiert werden.

In den Bereichen, die Sie selbst benennen können, werden die Menü-Templates erstellt. Für jede Menüstruktur, die Sie erstellen wollen, müssen Sie also einen eigenen Bereich hinzufügen.

Mit der Variable filename im Bereich <common> legen Sie das Verzeichnis, die Verzeichnisstruktur und das Namensschema für die in den Menü-Templates definiterten Menü- bzw. Navigationsdateien fest.

Ein einfaches Schema, das sich etabliert hat, ist das folgende:

filename = /ssi/navigation/<!--nav_element-->/<!--node_id-->.ssi

Nach diese Schema werden alle Menüs in Ihrem Document-Root im Verzeichnis ´ssi/navigation´ angelegt. Dann wird über die Variable ´nav_element´ pro Menü-Template, das Sie definiert haben, ein eigens Verzeichnis erstellt. Und darin wird für jede Rubrik, über die das Menü-Template traversiert, eine SSI-Datei eingelegt.

Grunsätzlich stehen die folgenden Werte zur Erzeugung des SSI-Dateinames zur Verfügung :

  • <!--directory-->, z.B. /cms01/intra
  • <!--node_id-->, z.B. /10/17/29
  • <!--cat_id-->, z.B. 17
  • <!--lingua-->, z.B. de
  • <!--nav_element-->, z.B. h_nav

Transfer-Rubrik transfer_cat_id#

Bei der Erstellung der Navigationselemente wird zusätzlich eine XML-Datei für den Importer geschrieben, in der alle neu erzeugten Dateien in Form eines IBlocks aufgelistet sind.

Die Transfer-Rubrik wird definiert in der Konfigurationsdatei der Navigationsgenerierung (standardmäßig site/config/navigation_generator.conf) im Bereich common durch den Schlüssel transfer_cat_id (z.B. transfer_cat_id = "/6/7/8").
D.h. über die transfer_cat_id wird die Node-Id einer Rubrik angegeben, hinter der ein nicht-interaktiver Workflow liegt. Das Template in dieser Rubrik besteht nur aus dem Eintrag:

<!--IMPERIABLOCK-->
<!--
<IMG SRC="<!--XX-IBLOCK-file-->" />
-->
<!--/IMPERIABLOCK-->

Dabei ist wichtig und zu beachten, dass der auskommentierte Bereich dafür sorgt, dass die im IBlock angegebenen Dateien nicht angezeigt, aber transferiert werden.

Zählen von Dokumenten count_documents#

Sie können count_documents auf einen wahren Wert setzen (count_documents = 1), um das Zählen von Dokumenten aus dem longLiveLog zu aktivieren.
Setzen Sie das Sprachmuster in count_documents_lingua_pattern und erhalten Sie so das Sprachen-Tag als erstes Element.

    count_documents_lingua_pattern = "^/([a-z]{2})/"

    count_documents_lingua_pattern = "\.([a-z]{2})$"

Neben dem allgemeinen Block (common) können beliebig viele Navigationselemente erzeugt werden, üblicherweise eine Horizontalnavigation (hier h_nav), eine Vertikalnavigation (hier v_nav) und eine Sitemap (hier sitemap).

Die Namen der Navigationselemente sind frei, wenn sie die Namenskonvention von XML nicht verletzen.

Am Beispiel der Horizontalnavigation soll die Funktionsweise kurz beschrieben werden.

<h_nav>
 file_startlevel = "0"
 file_maxlevel = "5"
 content_startlevel = "0"
 content_maxlevel = "7"

 li_snippet <<EOF
    #IF ("<!--XX-current-->")
    <strong><!--XX-name--></strong>
    #ELSIF ("<!--XX-active-->")
    <a href="<!--XX-link-->" title="<!--XX-description-->">
             <!--XX-name--></a> - <!--XX-ul_content-->
    #ENDIF
EOF

 ul_snippet <<EOF
  <!--XX-li_content-->
EOF

</h_nav>
  • Über file_startlevel und file_maxlevel wird gesteuert, für welche Ebenen des Rubrikenbaumes Dateien erzeugt werden sollen. In diesem Fall werden nur Dateien bis zur 5. Ebene erzeugt.

  • Die Variablen content_startlevel und content_maxlevel steuern, welche Ebenen des Rubrikenbaumes innerhalb der Dateien dargestellt werden sollen.

  • Wie jeder einzelne Rubrikeneintrag gestaltet wird, hängt nur von den Variablen ul_snippet und li_snippet ab.
    D.h. zur Darstellung des Baumes werden diese Variablen für jedes Element erzeugt und durch die Verwendung der Variablen <!--XX-li_content--> und <!--XX-ul_content--> ineinander verschachtelt.

    Zur Erstellung stehen folgende Variablen zur Verfügung:

    Tipp

    In einer Rekursion, d.h. für das li- und ul-Snippet, kann man – wie im Template – auch auf die Seitenvariablen zugreifen, z.B. <!--XX-SEITENVARIABLE-->.

    Variable Beschreibung
    <!--XX-name--> Name der Rubrik (sprachabhängig)
    <!--XX-description--> Beschreibung der Rubrik (sprachabhängig)
    <!--XX-directory--> Das Verzeichnis
    <!--XX-cat_skip--> wahr, wenn die Rubrik __ip_skip_nav = 1
    oder einen Eintrag in __nav_gen_skip_linguas : [de, en] für die aktuelle Sprache enthält
    <!--XX-doc_count--> Document count in der aktuellen Rubrik für die Sprache
    <!--XX-filename--> Dateiname
    <!--XX-link--> Spezieller Link (__ip_link)
    <!--XX-linktarget--> Linkziel
    <!--XX-level--> Bearbeitungsebene
    <!--XX-levelindex--> Index der Bearbeitungsebene
    <!--XX-current--> Ausgewählte Menüpunkt (Bool)
    <!--XX-active--> Aktive Menüpunkte (Bool); es handelt sich um den "current-Knoten", d.h. wenn sich die Node im aktuellen Baum befindet.
    <!--XX-catid--> Category ID
    <!--XX-nodeid--> Node ID
    <!--XX-has_children--> wahr, wenn es Unterrubriken enthält
    <!--XX-current_nodeid--> Node ID der Rubrik für die die aktuelle Navigation erzeugt wird

Bei der Erzeugung von multilingualen Navigationen müssen die Metavariablen in den Rubrik-Eigenschaften gesetzt werden. Dort muss für jeden Menüpunkt in der Navigation die Metavariable eingestellt werden, z.B. title_de oder title_en.
Für jede Sprache wird dabei eine eigene SSI generiert, die passend im Template angegeben werden muss (möglich über lingua).