Skript am Anfang des Head-Bereichs einfügen

  • Hallo,


    ich versuche derzeit das Skript von Cookiebot in den Head-Bereich einzufügen. Die Idee war nun, ein Plugin zu erstellen, damit das Skript einzufügen und dieses dann in der Reihenfolge ganz nach oben zu setzen.


    Allerdings kann ich das Plugin nur über andere Schieben, die dieselbe Gruppe ("system") haben. Und das Skript wurde dementsprechend dann in der Mitte des Head-Bereichs eingefügt.


    Ich habe dann die Gruppe auf "anfang" geändert damit mein Plugin ganz oben steht. Allerdings wird seitdem der PHP-Code aus irgendeinem Grund nicht mehr ausgeführt. Kann mir da jemand weiterhelfen?


    Ordnerstruktur

    cookiebot/

        cookiebot.xml

        cookiebot.php



    Grüße,

    Simon

  • Du kannst nicht einfach den group-Eintrag auf irgendwas ändern und erwarten, dass das was bewirkt bzw., dass das Plugin dann berücksichtigt wird. Du kannst die Reihenfolge der System-Plugins umsortieren im Backend und hast vielleicht Glück. Deines also als erstes.


    Wenn du dann noch ein frühes System-Plugin-Event nimmst, aber Warnung, kein verbotenes für solche Zwecke, ...


    Plugin-Gruppen und -Events müssen im Nicht-Core-Code getriggert werden, also angesprochen werden. Da gibt es eine mehr oder weniger starre Abfolge in Joomla. Wenn du eine eigene Group bzw. eigene Events verwendest, müsstest du also den Joomla-Core "überreden", diesen zuerst auszuführen beim Beladen der Head-Daten.


    Eine Möglichkeit die Head-Daten umzusortieren ist das System-Plugin-Event onBeforeCompileHead. Hier ein Artikel, der das Problem andeutet, NICHT MEHR(!!!)

    https://www.ghsvs.de/programmi…entfernen-mootools-jquery

  • Die Dokumentation von Joomla! ist gelinde gesagt dürftig und auch trotz längerem herumprobieren mit onBeforeCompileHead hab ich keinen funktionierenden Code zusammenbekommen.

    Eigentlich wollte ich Cookiebot Template-unabhängig einbinden. Ich hab es jetzt aber durch ein Override einer Template-Datei gelöst.

  • Das verschieben der für den <head> vorgemerkten Scripte lässt sich umsetzen, indem man das Scripts-Array neu anlegt.


    Das ging jedenfalls bisher. Die Methode über den Event ist aber vorzuziehen.


  • Hab unteres mal ausprobiert, es funktionert, in diesem Fall wird ein Stylesheet entfernt.


    Code
        function onBeforeCompileHead()
        {
            $head = JFactory::getDocument()->getHeadData();
            $css =& $head['styleSheets'];
            array_splice($css,3,1);
            JFactory::getDocument()->setHeadData($head);
        }