mod_menu override Spezial

  • Servus zusammen!


    Ich suche nach einer Möglichkeit mittel Override den 1. Menüeintrag links, alle anderen Einträge recht anzuzeigen:

    Meine Vorstellung wäre mittels zweier ul-Bereiche zu sortieren,

    1. sortiere die gewünschten im ersten UL

    PHP
    <ul class="navbar-nav mr-auto <?php echo $class_sfx; ?> mod-list"<?php echo $id; ?> >
    <?php foreach ($list as $i => &$item) {                                                /// sortiere hier nur den ersten oder bestimmte Einträge
        $class = 'nav-item item-' . $item->id;
    
        if ($item->id == $default_id)
        {
            $class .= ' default';
        }
    
        echo '<li class="' . $class . '">';

    und 2. den Rest im zweiten UL

    PHP
     <ul class="navbar-nav ml-auto <?php echo $class_sfx; ?> mod-list"<?php echo $id; ?> >
    <?php foreach ($list as $i => &$item) {                                                /// sortiere hier mit den anderen weiter
        $class = 'nav-item item-' . $item->id;
    
        if ($item->id == $default_id)
        {
            $class .= ' default';
        }
    
        echo '<li class="' . $class . '">';


    Wie im Screenshot dargstellt sollte das "N" als Grafik rechts nicht mehr vorkommen, sondern nur links


    Danke für Eure Tipps, Joe

  • "Das Hotel" links und alle anderen rechts ausgerichtet? Verstehe ich das richtig? Dann zwei Menüs an gleicher Position anlegen - im ersten nur "Das Hotel" - im zweiten die anderen Menüverweise und dann mittels CSS ausrichten. Den Overrite am besten wieder entfernen. Brauchst du dafür nicht.



    Axel

  • Hallo,


    also grad hatte ich es. Bei Neuaufruf der Seite ist das obige (wie auf Deinem screenshot) weg. Auch der Hamburger. Schreib es trotzdem her:

    Code
    ul.navbar-nav.ml-auto .nav-link.onlyleft {
    display: none;    
    }


    Liebe Grüße

    Christine

  • Ja - 2 Module gehen auch.


    Habe mir eben Gedanken darüber gemacht das mit einem Modul elegant zu realisieren!

    Im Prinzip geht´s ja darum dem Override mitzuteilen welche(n) Menüpunkt - vlt. mittels "class" - es in "UL float-left" setzen soll, der Rest mag ins "UL float-right"


    Danke trotzdem

  • Nun es lässt mich jetzt nicht los:


    Mittels

    PHP
    <?php foreach ($list as $i => &$item) {
        $class = 'nav-item item-' . $item->id;
        ....

    werden die Menüeinträge ja ausgelesen, im Prinzip kann man hier ja auch sortieren.


    Mit der Syntax stehe ich - noch - auf Kriegsfuß

  • Ich muss da @time4mambo zustimmen. Insbesondere falls du die Seite nicht für dich selbst, sondern für einen Kunden machst. Dann kann es sein, dass du die Seite nicht bis in alle Ewigkeit betreust. Und in 5 Jahren will der Betreiber dann alles auf einer Seite haben oder einen neuen Menüpunkt nach links einbauen. Wenn du zwei Menüs, "Hauptmenü links" und "Hauptmenü rechts" anlegst, sieht er: "Aha, wenn ich was links einbauen will, muss ich das in Hauptmenü links machen." Wenn du deinen Override einbaust, kommt der Betreiber im Zweifelsfall in 5 Jahren hier ins Forum und wir brauchen 10 Beiträge, um herauszufinden, dass sich da ein Override im Template versteckt, und weitere 5, um dem Betreiber zu erklären, was er da im Code ändern muss.

    Alles schon gehabt, alles schon gesehen. Deshalb: Auch wenn dir die Override-Lösung technisch eleganter erscheint (ich hab das auch oft, dass ich alles so automatisiert und "einfach" wie möglich lösen will), bedenke bitte, dass du dir, dem Kunden und zukünftigen Supportern einen Gefallen tust, wenn du die Lösung nimmst, die einfacher wartbar und anpassbar ist. ;)