Cassiopeia+Bootstrap Accordion funktioniert nicht

  • Nachdem ich dank Eurer Hilfe meine durch einen Umzug des Hosters verursachten Probleme an einer sehr umfangreichen Joomla 3.10 Seite beheben konnte, läuft sie einwandfrei, nochmals vielen Dank für die Hilfe. Nun bin ich dabei, die Seite auf Joomla 4 upzudaten. Ich habe in einer Subdomain auch eine wie ich denke ordentlich portierte Seite, in der ich nun das neue Layout etc. anpasse. Das geht auch soweit ganz gut, allerdings verwende ich in der J 3 Seite zahlreiche Accordion-Klappmenüs, die ich durch neue ersetzen muss, weil Joomla 4 ja mit Bootstrap 5 arbeitet.


    Vielleicht mache ich ja einen Denkfehler. Wann immer ich von der Bootstrap Seite Demo-HTML Codes kopiere und in einen Beitrag einfüge, ist zwar dann das grundsätzliche Layout mit den Buttons etc. da, aber sie öffnen bzw. Schließen nicht. Nun hatte ich zunächst den JCE Editor in Verdacht, dass dieser vielleicht den Code ändert, doch wenn ich den JCE ausschalte und nur den Joomla Editor verwende, ändert sich auch nichts. Habe auch im JCE nichts gefunden, wo ich evtl. Filter ausschalten kann, aber wie gesagt auch ohne JCE funktioniert es nicht.


    Soweit ich es verstanden habe, sind doch alle Java Scripte bzw. Bootstrap Dateien in Joomla 4 bereits vorhanden. Was mache ich falsch? Muss ich noch irgendwas zusätzlich laden oder eintragen?


    Danke und beste Grüße,

    Filmdoc

  • sind doch alle Java Scripte bzw. Bootstrap Dateien in Joomla 4 bereits vorhanden.

    Vorhanden ja, aber sie werden u.U. nicht geladen. Das muss man in Joomla 4 jetzt immer selber anstoßen.


    Bei einem Accordion wäre z.B. nötig

    Code
    JFactory::getApplication()
      ->getDocument()
      ->getWebAssetManager()
      ->useScript('bootstrap.collapse');

    Das kannst natürlich nicht direkt im Beitrag einsetzen.


    Eine rüdere Methode wäre z.B. in der index.php des Templates einzusetzen:


    Code
    Joomla\CMS\HTML\HTMLHelper::_('bootstrap.framework');

    Dann wird tatsächlich Bootstrap immer komplett geladen. Frage ist, ob man das will.

  • Hallo Later,


    vielen Dank für Deine rasche Reaktion und Deinen Hinweis. Ich verstehe, das ist also anders. Deiner Formulierung entnehme ich, dass die zweite Variante, dass Bootstrap komplett geladen wird, viele Resourcen bindet und eher nicht zu empfehlen ist. Ich brauche nur das Akkordion und ein paar Buttons.


    Wo genau müsste ich denn deinen ersten Vorschlag einbinden? Auch in eine php Datei?


    Danke und beste Grüße,

    Filmdoc

  • Wo genau müsste ich denn deinen ersten Vorschlag einbinden? Auch in eine php Datei?

    Kann ich natürlich auch nicht sagen, da ich ja die Umgebung nicht kenne.


    Du kannst es wenigstens erst mal in der Template-index.php probieren, ob es überhaupt zum Ziel führt.


    Wenn ja, dann in einer Override-Datei für die Artikel, damit es nicht zu oft unnötig geladen wird.


    Mir schwirren noch ein Dutzend weitere Varianten im Kopf rum, aber da bleiben die im Moment auch ;)


    Oder kurz: Ja, halt in irgendeiner Joomla-PHP-Datei, die auf den betreffenden Seiten geladen wird. Der Code ist PHP.


    Damit wir uns nicht missverstehen. Obiges lädt Bootstrap-JavaScript, aber nicht vielleicht ebenfalls nötiges Bootstrap-5-CSS. Hängt also von deinem Template ab, ob es das bereits dabei hat.


    Zurück zum JavaScript laden:

    EIgentlich habe ich schon eine Variante: https://ghsvs.de/programmierer…r-einbinden-eigener-codes


    - Statt "meineCodeAusgabe.php" nennst die Datei vielleicht besser "bootstrapCollapseLaden.php".

    - Den PHP-Code in der Anleitung ersetzt du durch

    PHP
    <?php
    defined('_JEXEC') or die;
    
    Joomla\CMS\Factory::getApplication()
      ->getDocument()
      ->getWebAssetManager()
      ->useScript('bootstrap.collapse');


    - Und dann setzt das Modul wie in Anleitung beschrieben in allen Beiträgen ein, wo du Accordion-HTML drinnen hast. Das darf dann auch am Ende sein oder sonstwo.

  • Nachtrag:

    Ich habe mal Deinen ersten Vorschlag in die index.php von Cassiopeia eingefügt und es funktioniert tatsächlich. Aber wird es nicht bei Updates dann wieder überschrieben?


    Danke und beste Grüße,

    Filmdoc


    Oh, Deine Posts sind gerade erst sichtbar geworden, als ich obigen gesendet habe. Vielen Dank, ich schaue mir das gleich an.


    Hallo Later,


    vielen Dank für die Hinweise, ich habe es so gemacht, wie beschrieben, es funktioniert. Genial, was für eine großartige Lösung und rasche Hilfe.


    Danke nochmals und ein schönes Wochenende!


    Filmdoc

    Einmal editiert, zuletzt von Indigo66 () aus folgendem Grund: 2 Beiträge von Filmdoc mit diesem Beitrag zusammengefügt.