Bootstrap Klasse "nav-link" in alle Menüs eintragen

  • Hallo ins Forum,


    ich möchte allen Menülinks die Bootstrap-Klasse "nav-link" standardmäßig mitgeben (also nicht bei jedem Link im BE als Klasse eintragen müssen). Soweit ich gelesen habe stellt man das im mod_menu ein (also im Override) und hier in der Datei default_component. Hier gibt es zwar die Abfrage, ob beim Link eine Klasse angegeben wurde, so dass dann die im BE eingegtragene Klasse im <a> erscheint.

    if ($item->anchor_css)

    {

    $attributes['class'] = $item->anchor_css;

    }

    Das soll auch weiterhin so bleiben, da ich ggf. zusätzliche Klassen benötige.


    Wie bzw. wo kann ich aber eintragen, dass von vornherein schon die Klasse "nav-link" drin ist und meine eventull zusätzlich eintetragene Klasse im BE erscheinen?


    Danke für einen Hinweis und viele Grüße

    Steffi

  • Danke für die Antwort,


    ich habe grade Folgendes erfolgreich eingetragen.. einfach das attributes Array erweitert

    Problem gibt es jetzt jedoch bei Menüpunkten mit Sub-Menu. Hier wird die Klasse nicht eingetragen. Das steht bestimmt an irgendeiner anderen Stelle?


    Gruß

    Steffi

  • Hallo Tom,


    nein, das habe ich noch nicht. Ich möchte mein Menu / Sub-Menü komplett nach Bootstrap 4 aufbauen. Dazu muss ich imho das komplette Template bzw. die _component Datei umschreiben. Der Code soll letzendlich so aussehen (für ein Dropdown Menüpunkt)

    Hier wird auch für das Sub-Menu ein <div> statt ein <ul> verwendet, die Links sind direkt innerhalb des <div> angeordnet.


    Btw. ich teste derzeit das Template Cassiopaia unter Joomla 4.0.10 alpha, was aber eigentlich keine große Rolle spielen sollte.


    THX für den Input und Gruß

    Steffi

  • Du kannst generell in den Modulen und insbesondere auch den Navigationsmodulen, die für die Anzeige der Menüs verantwortlich sind, einiges in Sachen Bootstrap einstellen. Neben der bereits mehrfach erwähnten Menüklassen- und Modulklassen-Suffix, kannst du dort auch ganz einfach auswählen, ob das Menü per DIV oder UL oder sonstwas benutzen soll. Außerdem kannst du dort auch die Spaltenanzahl für Bootstrap vorgen (1 bis 12).


    Vielleicht erstmal dort schauen, ob dir das nicht reicht, statt der Arbeit mit dem Override.



    Axel

  • Es gibt da mehrere Layouts, die du overriden kannst, je nach Link-Art verschiedene. Ansonsten könnte noch sein, dass du was kaputt gemacht hast.


    Ob div oder ul, also die Semantik des HTML spielt für die Funktion von CSS keine Rolle.

  • Um Joomla! 3 mit Bootstrap 4 zu betreiben ist das Overriden des Menu-Moduls (das der exakt richtige Weg ist) nur der erste Schritt. Du solltest mehrere Stellen zusätzlich in Erwägung ziehen:

    1. Bootstrap 4 Plugin schreiben: der erste Schritt sollte das Entfernen von Bootstrap 2 und das Laden von Bootstrap 4 lauten. Hierbei empfiehlt sich ein Plugin, was mittels HTMLHelper::register einfach die Joomla! Core-Aufrufe überschreibt. Damit kannst du dann relativ geschmeidig JS-Abhängigkeiten ändern oder überschreiben.

    2. Bootstrap 4 Plugin erweitern: wie oben erwähnt gibt es in Joomla! 3 das Bootstrap-Dropdown im Modulmanager, was wie du sicherlich schon festgestellt hast, bei weitem nicht ausreicht, denn Bootstrap 4 bietet xs, sm, md, lg, xl. Hier bietet es sich direkt an die nächste Funktion in das Plugin zu implementieren => Erweitern des Modul-manager-Formulars

    3. Module Chrome: Nun müssen die neuen Funktionen natürlich auch bei den Modulen ankommen, hierbei kann man ein Module Chrome implementieren, was all die Breakpoints unterstützt.

    4. das Template selbst: das Template würde ich auf SCSS-Basis entwickeln, dann kannst du locker flockig mit Bootstrap 4 arbeiten, schon direkt die Grundausgabe Bootstrap 4-tauglich gestalten und musst nicht mit irgendwelchen CSS-Dateien rumhantieren => Du baust dir selbst was du brauchst.

    5. die Overrides: Last but not least kommt es nun zu den Overrides. Neben dem Menu lohnt es sich auch mod_custom auseinanderzunehmen und weitere Module Chromes zu basteln (card, container, ...). Es ist auch ohne Probleme möglich direkt Bootstrap 4 Dropdowns mit Menuoverrides zu basteln oder z.B. das Bannermodul für Slider zu verwenden (auch das Newsflashmodul bietet sich hier an). Du zusätzlich auch wahrscheinlich alle Komponenten überschreiben müssen, aber bestimmt com_content (row-fluid/spanX => row/col-x).


    Mit diesen Schritten ist der größte Batzen geschafft. Zumindest wars bei mir so :)


    ein bisschen veraltet, aber teilweise noch gültig: https://www.youtube.com/watch?v=uXPidVdLCyw

  • Vielen Dank für den reichlichen Input,


    ich habe die Seite jetzt mal auf Joomla4 aufgesetzt, da das ja demnächst der aktuelle Stand sein wird. Hier ist Bootstrap 4 ja schon integriert. Hier nutze ich das neue Template Cassiopaia, wobei auch hier im Menü nicht unbedingt an allen Stellen alle von Bootstrap eigentlich eingesetzten Klassen und data Attribute verwendet werden. Es kann natürlich sein, dass das Template im Laufe der Entwicklung noch weiter angepasst wird. Gem. Boostrap 4 benötige ich unten stehendes HTML. Insbesondere alles was das Dropdown angeht, sollte das data-toggle Attribut und die aria Attribute drin sein. Ebenso ist der Menüpunkt der das Dropdown öffnet eigentlich nicht auf eine Seite verlinkt sonder auf #. Ich forsche nun einfachmal, inwieweit ich die Attribute über die von Tom genannten Menüklassensuffixe eintragen kann und was ich im Template änder muss.

    Sorry für die vielleicht einfachen Fragen, ich arbeite mich aber erst in Joomla ein und weiß nicht immer an welcher Stelle was zu ändern oder einzutragen ist, bzw. welche Auswirkungen es hat.


    Viele Grüße

    Steffi

  • ich habe die Seite jetzt mal auf Joomla4 aufgesetzt, da das ja demnächst der aktuelle Stand sein wird.

    Es wird dringend abgeraten mit einer Alpha-Version in die Produktivität zu gehen (selbt mit eine BETA würde ich es nicht wagen). Im schlimmsten Fall, werden grundlegende Fubktionen aus kompatibilitätsgründen geändert und Du musst wieder von Vorne beginnen.
    Du musst nicht mit J4 anfangen um mit einem BS4 Template arbeiten zu können.

  • Ja klar ist alpha nicht für den Produktiveinsatz gedacht. Zunächst ist es mal eine Spielweise für mich, um das System zu lernen. Das mache ich am Besten eben mit "Echtdaten", da erhalte ich schon eine guten Eindruck. Dass man hier und da auf Probleme stößt ist klar, aber das gehört zum Lernprozess und man lernt das System hier am ehesten von der Basis her kennen... und es ist eine echte Umstellung im Vergleich zu TYPO3 was ich bisher gemacht habe.


    Beta bzw. offizielle Version soll ja (soweit ich es gelesen habe) Anfang nächsten Jahres kommen.


    Vielen Dank für die Hilfe und ein schönes WE

    Steffi

  • Zitat

    und man lernt das System hier am ehesten von der Basis her kennen

    Vor einigen Monaten habe ich einen ganz kurzen Blick in die Alpha geworfen und dann nie wieder. Willst du das System kennenlernen, darfst du nicht etwas nehmen, wo heute noch keiner weiß, was davon wirklich in die Stable einfließen wird und übrig bleibt.

    Das nur so als Tipp ;)



    Axel