Macro-Navigation auf der Basis einer geschachtelten Liste
Autor: Dr. R. Herold, Dr. F. Hoffmann, 04.01.2007
Diese umfassende Macronavigation klappt alle Objekte des aktuellen Pfades auf; dazu werden die übergeordneten Einstiegsknoten angezeigt. Die Generierung der Objektliste übernimmt die API-Funktion getNavElements(); mit Hilfe der API-Funktion getLevel() kann eine HTML-konforme Schachtelung der Listen-Element erwirkt werden.
Beispiel-Darstellung der hierarchisch geschachtelten Liste mit dem weiter unten stehenden CSS-Code. Damit browser-übergreifend Hintergrund-Farben bündig gesetzt werden können, sind die LI-Elemente behelfsmässig wiederum im DIV-Elementen geschachtelt (siehe Vollansicht des Bildes).
Der folgende Template-Code entscheidet auf Basis des Hierarchie-Levels (getLevel()) wann die Listen-Elemente zu öffnen/schliessen sind; die Prüfung auf Level-Sprünge bzw. die die daraus folgenden Effekte für die Listen-Schlüsse machen den DTML-Code komplexer als die anderen Listen-Beispiele:
Der CSS-Code differenziert die Darstellung für Hierarchie-Tiefe und Aktives Objekt; desweitere gibt es eine Variante für eine alternative Darstellung auf der Homepage (indem das HTML-body-Element per Template pageelement_bodyTag eine alternative Klasse zugewiesen bekommt).
# CSS-Beispiel #
/* -- MACRONAVIGATION -----------------*/
#Macronavigation {
margin: 0;
border: 0;
padding: 0;
width:200px;
position:absolute;
font-size:10px;
border-right: 1px solid <dtml-var "get_colormap()['primColorMedium']">;
}
#Macronavigation ul {
padding: 0px;
margin: 0px ;
list-style-type: none;
}
#Macronavigation ul li {
padding: 13px 3px 14px 8px;
border-bottom: 1px solid #79aa0a;
}
#Macronavigation ul li div span a:link,
#Macronavigation ul li div span a:visited,
#Macronavigation ul li div span a:hover,
#Macronavigation ul li div span a:active {
color: <dtml-var "get_colormap()['primColorStrong']">;
font-weight:bold;
text-decoration:none;
text-transform: uppercase;
}
#Macronavigation ul li ul li {
padding: 3px 3px 3px 11px;
border: 0px;
}
#Macronavigation ul li ul li div span a:link,
#Macronavigation ul li ul li div span a:visited,
#Macronavigation ul li ul li div span a:hover,
#Macronavigation ul li ul li div span a:active {
text-transform: lowercase;
}
#Macronavigation ul li div span a:hover,
#Macronavigation ul li div span,
#Macronavigation ul li div span.active a {
color: <dtml-var "get_colormap()['teaserColor']">;
font-weight:bold;
}
/*-- MACRONAVIGATION HOME SPECIAL --*/
body.home #Macronavigation ul li {
padding: 13px 3px 14px 23px;
}
body.home #Macronavigation {
margin-top:2px;
width:215px;
}
body.home #Macronavigation a:hover {
color:#fff;
}