+ Antworten
Ergebnis 1 bis 8 von 8

Thema: Menü (xhtml) überschreiben

  1. #1
    War schon öfter hier
    Registriert seit
    29.09.2008
    Beiträge
    104
    Bedankte sich
    19
    Erhielt 5 Danksagungen
    in 5 Beiträgen

    Standard Menü (xhtml) überschreiben

    Hallo,
    wo muss ich hingreifen, wenn ich das Standard-Joomla-Menü "mod_mainmenu" ein klein wenig ändern will?
    Ich kriege ja, wenn ich style="xhtml" wähle (type="modules") eine <ul> serviert. Diese will ich ein kleines bisschen ändern, ich will nämlich etwas dazufügen (was ich mit CSS nicht mehr kann).
    Geht das auch mit den Template Overrides?

    Konkret will ich als Trenner zwischen zwei Menüpunkte eines horizontalen Menüs eigene Zeichen ("//") einfügen, die ich aber per CSS stylen können will.
    Ich habe das mit :after / :before versucht, aber das geht ja beim IE nicht.
    Außerdem habe ich da Mühe die zu stylen.

    Danke, franc
    Geändert von franc (27.10.2008 um 17:54 Uhr) Grund: Gelöst

  2. #2
    Kommt häufiger vorbei Avatar von Scub
    Registriert seit
    07.06.2006
    Ort
    /home/Gelsenkirchen
    Alter
    22
    Beiträge
    276
    Bedankte sich
    8
    Erhielt 43 Danksagungen
    in 43 Beiträgen

    Standard

    Da das mod mainmenü ein Modul ist kannst du es bei den Modulen ändern, also im Ordner Modules/mod_mainmenue findest du alle Files.

    gruß
    Scub

  3. #3
    War schon öfter hier
    Registriert seit
    29.09.2008
    Beiträge
    104
    Bedankte sich
    19
    Erhielt 5 Danksagungen
    in 5 Beiträgen

    Standard Spacer für horizontale DIV-Listen (mod_mainmenu)

    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
    Geändert von franc (16.10.2008 um 04:54 Uhr) Grund: Fehler korrigiert

  4. Erhielt Danksagungen von:


  5. #4
    Neu an Board
    Registriert seit
    26.06.2008
    Beiträge
    10
    Bedankte sich
    0
    Erhielt 0 Danksagungen
    in 0 Beiträgen

    Standard

    Hallo franc,
    ich würde es so lösen:
    In der modules/mod_mainmenu/legacy.php ca. Zeile 365

    In der Switch Anweisung: switch ($style) { case 1 :
    folgendes einfügen.

    $spacerI = 1;
    foreach ($links as $link) {

    if($spacerI < count($links)){
    echo '<li>' . $link . '&nbsp; '.$params->get('spacer').'</li>';
    }else{
    echo '<li>' . $link . '</li>';
    }
    $spacerI++;
    if(spacerI >= count($links)){ $spacerI = 1; }
    }
    echo '</ul>';
    break;

    Gruß

  6. #5
    Neu an Board
    Registriert seit
    26.06.2008
    Beiträge
    10
    Bedankte sich
    0
    Erhielt 0 Danksagungen
    in 0 Beiträgen

    Standard Der Ansatz ist gut, nur nicht w3c konform

    Hallo franc,
    der Ansatz ist gut, nur darf zwischen dem schließenden </li> und dem öffnenden <li>
    meiner Meinung nach nichts stehen.
    Gruß Gismo

    Zitat Zitat von franc Beitrag anzeigen
    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

  7. #6
    Gehört zum Inventar
    Registriert seit
    18.02.2005
    Beiträge
    8.841
    Bedankte sich
    85
    Erhielt 2.269 Danksagungen
    in 1.936 Beiträgen

    Standard

    Es ist weder notwendig noch sinnvoll die Core Dateien zu bearbeiten. Das geht
    sehr einfach durch Beeinflussung des Doms in einer Templatedatei im html Verzeichnis
    des Templates.

    Wenn du deinen Trenner als Bild einfügen würdest, ginge das alles auch ohne Override.

  8. #7
    War schon öfter hier
    Registriert seit
    29.09.2008
    Beiträge
    104
    Bedankte sich
    19
    Erhielt 5 Danksagungen
    in 5 Beiträgen

    Standard

    Zitat Zitat von ecomeback Beitrag anzeigen
    Das geht sehr einfach durch Beeinflussung des Doms in einer Templatedatei im html Verzeichnis des Templates.
    Wenn du deinen Trenner als Bild einfügen würdest, ginge das alles auch ohne Override.
    Wie mache ich das unter Verwendung der html in Templates?
    Kopiere ich da einfach das komplette modul hinein und passe dann dort an?

    Und wie ginge das mit dem Bild?

    Danke, ich hab den Thread jetzt doch noch mal ausgraben müssen, weil natürlich bei einem Update die modifizierte helper.php untergegangen ist.

  9. #8
    War schon öfter hier Avatar von pfump
    Registriert seit
    18.11.2008
    Beiträge
    191
    Bedankte sich
    16
    Erhielt 5 Danksagungen
    in 5 Beiträgen

    Standard

    Das würde mich auch sehr interessieren,
    da ich vor dem selben Problem stehe

    Man kann es ja mit li:last-child lösen, aber das fuktioniert ja leider im IE nicht

+ Antworten

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein