Also ich habs jetzt, wie man in Div-Listen (Menüstil "Liste") in Joomla 1.5 eigene Trennzeichen für horizontale Listen einfügen kann.
Das Menü wird in
modules/mod_mainmenu/helper.php
u.a. mit Hilfe von
\libraries\joomla\utilities\simplexml.php zusammengebaut. Das ist ziemlich komplex.
Man kann ja für das tabellenbasierte horizontale Menü ("Vorgängerversion horizontal") ein Trennzeichen angeben, mit dem die einzelnen Menüpunkte unterteilt werden.
Die Variable "spacer", die übrigens in der mod_mainmenu.xml konfiguriert wird, ist dann in der helper.php so zu erhalten: $params->get('spacer').
Damit habe ich dann in der Datei
helper.php, kurz vor der Ausgabe in Zeile 166 (
echo $result;) das
$result geändert, indem ich zwischen schließende und öffnende <li> Tags einen <span> eingefügt habe mit einer eigenen Klasse "spacer<class>" (um den Spacer hinterher leichter stylen zu können).
Das <class> ist das was in der mod_mainmenu-Modul-Bearbeitung unter
Parameter / Erweiterte Parameter / Menü-Klassen-Suffix
steht. Der eingefügte Code schaut dann so aus:
PHP-Code:
...
$result = JFilterOutput::ampReplace($xml->toString((bool)$params->get('show_whitespace')));
//start spacer-hack
//fcw: zwischen listen-ende und listenneubeginn den spacer im span-tag einsetzen
if ($params->get('spacer') != "")
{
// ohne tabs und zeilenumbrueche einfach nur li><li suchen
if ("0" == $params->get('show_whitespace')) {
$result = str_replace('li><li', 'li><span class="spacer'.$class.'">'.$params->get('spacer').'</span><li', $result);
}
else { // mit tabs erst die tabs entfernen (sonst wirds zu umstaendlich)
$result = str_replace(chr(9), '', $result);
$result = str_replace('li>'.chr(10).'<li', 'li>'.chr(10).'<span class="spacer'.$class.'">'.$params->get('spacer').'</span>'.chr(10).'<li', $result);
}
}
//ende spacer-hack
$result = str_replace(array('<ul/>', '<ul />'), '', $result);
...
Fürderhin erhalte ich als Trennzeichen in einer Menü-Liste dasjenige, das ich in der Modulbearbeitung des mod_mainmenu unter
Andere Parameter / Trennzeichen
angegeben habe.
Das ist natürlich nur sinnvoll beim horizontalen Menü. Die spacer-Klasse kann ich jetzt im CSS stylen.
Wenn kein Trennzeichen angegeben ist ($params->get('spacer') ist ""), bleibt der Code unverändert.
Vielleicht kann das jemand anderes auch mal gebrauchen.
Mich hat das jedenfalls eine halbe Nacht gekostet :-)
Gruß franc
Lesezeichen