Tag: hmenu Archive - TYPO3 Diplom

Pfadanzeige als Menü realisiert

Die Pfadanzeige (Breadcrumb) zur leichten Orientierung in der Seitenhierarchie ist vom Prinzip her nichts anderes als ein Menü mit speziellen Eigenschaften.

# Locator-Funktion (Pfadanzeige, rootline)
temp.locator = HMENU
temp.locator {
special = rootline
special.range = 0 | -1
wrap = Sie befinden sich hier: |
1 = TMENU
1 {
NO {
allWrap = |  -  |*| |  -  |*| |
stdWrap.htmlSpecialChars = 1
}
}
}

Ein neues mit „temp.locater“ bezeichnetes HMENU-Objekt vom Spezialtyp „rootline“ bietet die Funktionalität einer anklickbaren Pfadanzeige. Die „range“-Eigenschaft des HMENU-Objekts legt fest, bei welcher Ebene der Pfad beginnen soll.
In diesem Anwendungsfall wird auf obersten Ebene bei Level 0 (Startseite) begonnen und bis zur aktuellen Seite fortgesetzt (-1). Zur besseren Verständlichkeit der Funktion dient der vorangestellte, kurze Erklärungstext (Sie befinden…). Der Pfad selbst ist wiederum ein Text-menü, welches per „allWrap“ und „Optionsplit“ die einzelnen Seitentitel durch ein Minus-zeichen und Leerzeichen optisch voneinander abtrennt.

Aufbau der Metanavigation im Kopf- und Fußbereich

Die Metanavigation wird an zwei bekannten Stellen im Layout platziert. Da die Darstellung leicht variiert, müssen zwei, sich sehr ähnelnde Menüs angelegt werden. Hierfür werden die bereits aus der Hauptnavigation bekannten HMENU- und TMENU-Objekte eingesetzt.

# Metanavigation im KOPF
temp.menu_meta = HMENU
temp.menu_meta.special = list
temp.menu_meta.special.value = 38, 37, 36, 35
temp.menu_meta.1 = TMENU
temp.menu_meta.1.NO {
before =  
after =   | |*|   | |*|  
allWrap = <span class="metanavi-no"> | </span>
stdWrap.htmlSpecialChars = 1
}

# Metanavigation im FOOTER
temp.menu_footer = HMENU
temp.menu_footer.special = list
temp.menu_footer.special.value < temp.menu_meta.special.value
temp.menu_footer.wrap = &copy; nordEnergie AG 2005&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|
temp.menu_footer.1 = TMENU
temp.menu_footer.1.NO {
after = | |*| | |*| &nbsp;
allWrap = <span class="metanavi-no"> | </span>
stdWrap.htmlSpecialChars = 1
}

Die Metanavigation ist ein spezielles hierarchisches Menü vom Typ „list“. Dieser Liste können direkt Seiten durch die Angabe der Page-ID der jeweiligen Seiten über „value“ zugeordnet werden. Die vier Zuweisungen von 35 bis 38 entsprechen den Einträgen der Metanavigation Startseite, Kontakt, Impressum und Sitemap. Dem Textmenü im Normalzustand werden über „after“ und „before“ verschiedene Teile voran- und hintergestellt. In diesem Fall werden die zwei Werte verwendet, um Abstände zwischen den Menüeinträgen zu schaffen. Bei „after“ kommt ein „OptionSplit“ zu Einsatz. Der Bereich vor dem ersten |*| gilt für den ersten Eintrag, der darauffolgende für alle „mittleren“ Menüeinträge und der letzte Teil wird für den letzten Menüeintrag angewandt. Alle Einträge erhalten das Aussehen „metanavi-no“. Außerdem wird die XHTML-Konformität weiterhin gewahrt. Die Metanavigation für den Seitenkopf ist unter „temp.menu_meta“ abgelegt.

Für die Anzeige der Metanavigation im Fußbereich werden die Schritte weitestgehend analog durchgeführt. Die Zuweisung der Page-IDs wird aus dem erstangelegten Menü übernommen. Außerdem wird, wie in der Vorlage definiert, ein Copyright-Hinweis der Navigation vorangestellt und der nötige Abstand zwischen diesen beiden Elementen hergestellt. Unter „temp.menu_footer“ wird dieses Menü zwischengespeichert.

Aufbau der Hauptnavigation

Der Aufbau der Navigation in TYPO3 ist simpel und schnell realisiert. Für das Erstellen der Hauptnavigation werden spezielle TypoScript-Objekte vom Typ HMENU und TMENU benö-tigt, die in TYPO3 für hierarchische, textbasierte Menüs verwendet werden. Grafische Navigationen oder Layermenüs wären ebenfalls durch das CMS nutzbar gewesen, sind für diese Art der Navigation jedoch überflüssig.

# Hauptnavigations-Menu 1 cObject - vom Typ HMENU
temp.menu_main = HMENU

# Erste Ebene Menu-Object, textuell
temp.menu_main.1 = TMENU
temp.menu_main.1 {

# Normal-Zustand Eigenschaften
NO.allWrap = <div class="mainnavi-level1-no"> | </div>
NO.stdWrap.htmlSpecialChars = 1
}

# Zweite Ebene Menu-Object, textuell
temp.menu_main.2 = TMENU
temp.menu_main.2 {

# Normal-Zustand Eigenschaften
NO.allWrap = <div class="mainnavi-level2-no"> | </div>
NO.stdWrap.htmlSpecialChars = 1

# Aktiven Zustand aktivieren und Eigenschaften setzen
ACT = 1
ACT.allWrap = <div class="mainnavi-level2-act"> | </div>
ACT.stdWrap.htmlSpecialChars = 1
}

temp.menu_main.3 = TMENU
temp.menu_main.3 {

# Normal-Zustand Eigenschaften
NO.allWrap = <div class="mainnavi-level3-no"> | </div>
NO.stdWrap.htmlSpecialChars = 1

# Aktiven Zustand aktivieren und Eigenschaften setzen
ACT = 1
ACT.allWrap = <div class="mainnavi-level3-act"> | </div>
ACT.stdWrap.htmlSpecialChars = 1
}

Erzeugt wird ein mit dem Titel „temp.menu_main“ (frei wählbar) versehenes HMENU-Objekt, welches für „Hierarchisches Menü“ steht und das grundlegende Basisobjekt aller TYPO3-Menüs ist. Für das neue Menüobjekt müssen nun seine Zustände und Ebenen definiert werden. Dafür werden den drei Ebenen drei neue Menü-Objekte von Typ TMENU zugewiesen (Textmenüs) und der jeweilige Normal-Zustand angegeben (abgekürzt mit NO). Zusätzlich kann ein aktives Aussehen, wenn der Menüpunkt aktuell ausgewählt ist, zur erhöhten Orientierung des Besuchers definiert werden (ACT), was für die zweite und dritte Ebene realisiert wurde.

Von dem generellen Prinzip her wird den verschiedenen Zuständen lediglich ein umschlie-ßender Div-Tag zugewiesen. So erhält bspw. der Normalzustand der ersten Ebene durch „allWrap“ die Div-Klasse „mainnavi-level1-no“. Für das Pipesymbol („|“) wird also der Menücode aus dem CMS eingefügt und von den in „allWrap“ stehenden Zeichen umgeben. Das genaue Aussehen dieses Eintrages ist im Style Sheet definiert. So funktioniert die Menüerstellung in allen Fällen. Die „htmlSpecialChars”-Funktion ist für die XHTML-Kompatibilität notwendig, falls Sonderzeichen im Textmenü verwendet werden.

Mit wenigen Zeilen TypoScript ist die gesamte, problemlos erweiterbare Hauptnavigation umgesetzt worden. Das Menü ist komplett dynamisch und bildet die Baumstruktur aus TY-PO3 ab. Wird eine neue Seite hinzugefügt, wird diese Veränderung automatisch in der Frontend-Darstellung eingepflegt. Das gesamte Menü ist in dem Eintrag temp.menu_main bereits angelegt und wird an späterer Stelle der Seite hinzugefügt.