Template - MenuID als Klasse oder ID

klbTemplate

Manchmal wäre es nützlich, wenn man je nachdem auf welcher Seite man sich befindet einzelne Elemente speziell auszeichnen könnte. In der Regel geht das aber nicht, da eine Klasse oder ein HTML-Element auch auf anderen Inhaltsseiten erscheint, wo das spezielle Aussehen aber nicht erwünscht ist.

Ein typisches Beispiel hierfür ist der Inhaltsbereich der auf der Startseite nicht augegeben werden soll, da man dort nur Module anzeigen möchte. Setzt man nun den div mit dem Komponenteninhalt auf display:none, dann gilt das für alle Seiten, was sicher nicht so gewollt oder sinnvoll ist.

Diesem Umstand kann man relativ einfach abhelfen, indem man z.B. dem body-Tag oder einem x-beliebigen div die ID des entsprechenden Menüpunktes "mitgibt".

Dazu benötigt es folgende Codezeile im Head der index.php des Templates:
(Hier wird die Menü-ID ausgelesen und als Wert in einem arraya gespeichert, welches dann an der gewünschten Position ausgelesen werden kann.)

$currentMenuID = JSite::getMenu()->getActive()->id;

Im body- oder entsprechenden div-Tag muss dann $currentMenuID (der oben in einem arraya gespeicherte Wert) ausgelesen und eingefügt werden, was dann in etwa so aussehen sollte:

<body id="menu<?php echo $currentMenuID; ?>">
...
<div id="maincontent"><jdoc::include type="component"><div>
...
</body>

Die Ausgabe im effektiven Quelltext sieht dann so aus

<body id="menu12">
...
<div id="maincontent">...<div>
...
</body>

was uns dann die direkte und eindeutige Ansteuerung des Elementes via CSS erlaubt:
(Wie im Beispiel begonnen blenden wir hier also den #maincontent aus.)

#menu12 #maincontent {
display:none;
}

Mit dieser Lösung wird dann nur wenn der Menülink mit der ID 12 (in unserem Beispiel die Startseite) angezeigt wird der maincontent (die Komponentenausgabe) ausgeblendet. Auf allen anderen Seiten des eigenen Projektes wird die Komponentenausgabe normal ausgegeben. Selbstverständlich geht das nicht nur mit dem maincontent, sondern kann in gleicher Weise auch für jegliche anderen Elemente, Klassen etc. angewendet werden.

Kommentare 

 
0 #2 Daniel Hoehn 2010-12-15 19:58
zitiere newchurches:
Mit dem Page Class Suffix (der ja in den Menuparametern vergeben wird) lässt sich selbiges Ergebnis noch etwas effizienter herstellen, da man nicht mit der ("von joomla generierten") MenuitemID, sondern mit frei wählbaren Klassen arbeiten kann.

Dies ermöglicht die Wiederverwendun g und spart daher - je nach Umfang - eine Menge Code.

Danke für den Hinweis. Ich denke in vielen Situationen ist der Weg über den Page Class Suffix der einfachere. Wenn ich mich richtig erinnere, wird aber dieser nur dem Inhaltselement angefügt, also bleiben die Möglichkeiten eingeschränkt. Mit der oben beschriebenen (kompliziertere n) Methode hat man allerdings Zugriff auf ALLE Elemente einer Seite, da die eindeutige Identifikation im body-Tag liegt. ;-)
 
 
+1 #1 newchurches 2010-12-13 12:28
Mit dem Page Class Suffix (der ja in den Menuparametern vergeben wird) lässt sich selbiges Ergebnis noch etwas effizienter herstellen, da man nicht mit der ("von joomla generierten") MenuitemID, sondern mit frei wählbaren Klassen arbeiten kann.

Dies ermöglicht die Wiederverwendun g und spart daher - je nach Umfang - eine Menge Code.

Tutorial dazu:
http://bit.ly/elsRxh

Gruß newchurches
 
Aktuelles
22.02.2011 - Erfolgsversprechendes Umweltportal ( Samuel Hoehn )
Erfolgsversprechendes Umweltportal
Für die Luzerner Stiftung für Umweltinformation entwickelte Projektnetz ein umfangreiches Webportal mit Forum, Marktplatz, Adressverzeichnis und vielem mehr. Durch verschiedene Aktionen auf Facebook wie auch bei Twitter startete www.umweltnetz-schweiz.ch erfolgreich zum Jahresbeginn. Die Seiten werden inzwischen intern von der Stiftung...weiterlesen...
Ecosia-Suchplugin für Firefox (und IE8)
  Projektnetz setzt sich immer wieder mit dem Thema Benutzerfreundlichkeit auseinander. Dabei sollte auch der ökologische Nutzen nicht ganz vergessen werden....weiterlesen...