Load order of the plugins

Discussions and requests related to new CMSimple features, plugins, templates etc. and how to develop.
Please don't ask for support at this forums!
Post Reply
olape
Posts: 3394
Joined: Fri Mar 13, 2015 8:47 am
Contact:

Load order of the plugins

Post by olape » Thu Mar 26, 2020 4:02 pm

Hat jemand eine Idee, wie man (Stand jetzt) die Reihenfolge der Plugins beeinflussen kann?
Momentan geht das nur über den Namen (alphabetische Sortierung).
Das ist bei bestehenden Plugins aber nicht möglich und auch auf Dauer nicht verlässlich.

Vorschläge, um das in einer kommenden Version umzusetzen?

--------------------------------------------------------------------------------------------------------------------------

Does anyone have an idea how to (as of now) influence the order of the plugins?
At the moment this is only possible by name (alphabetical sorting).
But this is not possible with existing plugins and is not reliable in the long run.

Suggestions to implement this in a future version?
Gruß Olaf, Plugins for CMSimple_XH

Ich habe schon lange den Verdacht, dass so viele so eifrig auf Gender, Trans und Queer machen:
Weil sie für das Fachliche ganz einfach zu doof sind.

frase
Posts: 5085
Joined: Thu Apr 21, 2016 6:32 am
Location: Saxony
Contact:

Re: Load order of the plugins

Post by frase » Thu Mar 26, 2020 4:41 pm

olape wrote:
Thu Mar 26, 2020 4:02 pm
Vorschläge, um das in einer kommenden Version umzusetzen?
Was denn?
Was hast du vor?
In welcher Reihenfolge möchtest du denn sortieren?
Warum?

olape
Posts: 3394
Joined: Fri Mar 13, 2015 8:47 am
Contact:

Re: Load order of the plugins

Post by olape » Thu Mar 26, 2020 4:48 pm

frase wrote:
Thu Mar 26, 2020 4:41 pm
In welcher Reihenfolge möchtest du denn sortieren?
Das ist sicher von Fall zu Fall verschieden, deshalb wäre es eben gut, man könnte das über eine Art Index beeinflussen.
frase wrote:
Thu Mar 26, 2020 4:41 pm
Warum?
Weil adc zum Beispiel mit als erstes geladen werden sollte, cnc hingegen sollte das letzte sein.
Ogra bräuchte ich aktuell nach Repo und auch nach Realblog.
Noch besser wäre es vielleicht, wenn Meta-Tags-Plus nach Repo und Realblog geladen würde und dann Ogra.

Es gibt sicher noch weitere und es wird möglicherweise nicht immer gleich sein.
Gruß Olaf, Plugins for CMSimple_XH

Ich habe schon lange den Verdacht, dass so viele so eifrig auf Gender, Trans und Queer machen:
Weil sie für das Fachliche ganz einfach zu doof sind.

frase
Posts: 5085
Joined: Thu Apr 21, 2016 6:32 am
Location: Saxony
Contact:

Re: Load order of the plugins

Post by frase » Thu Mar 26, 2020 5:10 pm

Ah, du meinst einen manuell erstellbaren Index - je nach Anwendungsfall?
Da wird sicher eine Core-Änderung nötig.

olape
Posts: 3394
Joined: Fri Mar 13, 2015 8:47 am
Contact:

Re: Load order of the plugins

Post by olape » Thu Mar 26, 2020 5:14 pm

frase wrote:
Thu Mar 26, 2020 5:10 pm
Ah, du meinst einen manuell erstellbaren Index - je nach Anwendungsfall?
Da wird sicher eine Core-Änderung nötig.
Ja und sehr wahrscheinlich Ja.
Das Umsetzen ist da sicher das kleinere Übel, denke ich. Erst muss man mal eine sinnvolle Idee dazu haben.
Gruß Olaf, Plugins for CMSimple_XH

Ich habe schon lange den Verdacht, dass so viele so eifrig auf Gender, Trans und Queer machen:
Weil sie für das Fachliche ganz einfach zu doof sind.

cmb
Posts: 14334
Joined: Tue Jun 21, 2011 11:04 am
Location: Bingen, RLP, DE
Contact:

Re: Load order of the plugins

Post by cmb » Sun Mar 09, 2025 7:13 pm

olape wrote:
Thu Mar 26, 2020 4:48 pm
Weil adc zum Beispiel mit als erstes geladen werden sollte, cnc hingegen sollte das letzte sein.
Ogra bräuchte ich aktuell nach Repo und auch nach Realblog.
Noch besser wäre es vielleicht, wenn Meta-Tags-Plus nach Repo und Realblog geladen würde und dann Ogra.
Man sollte so gut wie möglich versuchen solche Reihenfolgeabhängigkeiten zu vermeiden. PHP-Code-Abhängigkeiten löst man am einfachsten per Klassen-Autoloading (im Zweifel kann man alle Funktionen als statische Methoden in eine Klasse packen). JS-Code-Abhängigkeiten könnte man mit JS Modulen lösen. Bei CSS spielt die Reihenfolge soweit ich weiß sowieso keine Rolle. Und Konfigurations- und Sprachdateien werden ohnehin schon automatisch bei Bedarf geladen.

Geht es um die Ausführungsreihenfolge von PHP-Code, dann hat man zumindest drei Stufen: classes/required_classes.php wird vor allen index/admin.php geladen, und kann missbraucht werden, um etwas vor anderen Plugins auszuführen. Dann halt index/admin.php. Und will man etwas nach dem Laden aller Plugins ausführen, kann man XH_afterPluginLoading nutzen. Dazu gibt es ja auch noch XH_afterFinalCleanup.

Das sollte man so spärlich wie möglich nutzen, dann bleibt noch einiger Spielraum für andere Plugins, die das wirklich brauchen.

Und ja, ist nicht perfekt, aber reicht für die meisten Fälle. Dir geht (ging) es vermutlich um die Infos im <head>. Da fehlt wohl was. XH_afterFinalCleanup() ist bestenfalls für Workarounds zu gebrauchen. $hjs vermeide ich seit Jahren deshalb (obwohl es heutzutage für JS Module sinnvoll wäre). Vielleicht ist in der Zwischenzeit auch was in dieser passiert, was ich nicht mitbekommen habe.
Christoph M. Becker – Plugins for CMSimple_XH

olape
Posts: 3394
Joined: Fri Mar 13, 2015 8:47 am
Contact:

Re: Load order of the plugins

Post by olape » Sun Mar 09, 2025 8:58 pm

Das grundsätzliche Problem bleibt bestehen.
Nehmen wir mal Swiper_XH und CnC.
Beide nutzen XH_afterFinalCleanup.
Aber CnC ist aufgrund der Reihenfolge der Plugins auch hier wieder eher dran.
Wenn CnC aber seine Aufgabe erledigt hat, dann kann man nachträglich keine Änderungen mehr an der Ausgabe machen. Swiper_XH funktioniert also nicht korrekt.

In der aktuellen Version von CnC haben wir ein Workaround eingebaut für einen solchen Fall.
Das geht dann aber eben nur über zusätzliche Änderungen am Template.

Mit einer Art Index könnte man solche Sachen beeinflussen, wenn es nötig ist.
Bei CnC beispielsweise sollte man grundsätzlich dafür sorgen, dass es als letztes ausgeführt wird.
Gruß Olaf, Plugins for CMSimple_XH

Ich habe schon lange den Verdacht, dass so viele so eifrig auf Gender, Trans und Queer machen:
Weil sie für das Fachliche ganz einfach zu doof sind.

cmb
Posts: 14334
Joined: Tue Jun 21, 2011 11:04 am
Location: Bingen, RLP, DE
Contact:

Re: Load order of the plugins

Post by cmb » Sun Mar 09, 2025 10:18 pm

olape wrote:
Sun Mar 09, 2025 8:58 pm
Das grundsätzliche Problem bleibt bestehen.
Nehmen wir mal Swiper_XH und CnC.
Beide nutzen XH_afterFinalCleanup.
Aber CnC ist aufgrund der Reihenfolge der Plugins auch hier wieder eher dran.
Wenn CnC aber seine Aufgabe erledigt hat, dann kann man nachträglich keine Änderungen mehr an der Ausgabe machen. Swiper_XH funktioniert also nicht korrekt.
Wieso nutzt Swiper_XH XH_afterFinalCleanup()? Kurz nachgeschaut: da wird wohl ein dynamisches Stylesheet in den <head> geschrieben. Okay, aber könnte man das nicht auch mit einer @import Regel im Plugin-Stylesheet lösen? Ah, da ist noch ein dynamischer Parameter im Spiel; wird also wohl nicht machbar sein.

Dann gibt es natürlich noch die klassische Lösung eines swiper_init(), dass ins Template gesetzt werden muss. Natürlich nicht elegant, schon gar nicht, wenn mehrere Templates auf einer Site involviert sind. Das kann man mit der ganz klassischen Variante lösen, dass man einfach immer an $hjs anhängt, auch wenn vielleicht kein Pluginaufruf involviert ist. Weiß aber nicht, ob das bei Swiper_XH überhaupt möglich ist (und ist grundsätzlich nicht wirklich elegant).
cmb wrote:
Sun Mar 09, 2025 7:13 pm
Dir geht (ging) es vermutlich um die Infos im <head>. Da fehlt wohl was.
Und da sind wir wieder. Man könnte es fast schon als Bug bezeichnen, dass man $hjs ändern kann, aber nachdem head() aufgerufen wurde, diese Änderungen keine Wirkung mehr haben. Warum löst der Core das nicht so, dass in head() $hjs überhaupt nicht ausgegeben wird, und das einfach in XH_finalCleanUp() nachgeholt wird?
Christoph M. Becker – Plugins for CMSimple_XH

olape
Posts: 3394
Joined: Fri Mar 13, 2015 8:47 am
Contact:

Re: Load order of the plugins

Post by olape » Mon Mar 10, 2025 6:50 am

cmb wrote:
Sun Mar 09, 2025 10:18 pm
Warum löst der Core das nicht so, dass in head() $hjs überhaupt nicht ausgegeben wird, und das einfach in XH_finalCleanUp() nachgeholt wird?
Das müsste man mal durchspielen. Aber durch die vielen bisher entstandenen Krücken, gibt es dann sicher auch wieder Probleme.

Das ist aber nicht der einzige Ansatz, an dem man eine festgelegte Reihenfolge brauchen könnte.
Anderes Beispiel:
Repo_XH, Ogra_XH.

Ogra bezieht sich für für Twitter, OpenGraph, Json-LD auf die Metatags (Title, Description) wenn nicht extra etwas eingetragen wird.
Jetzt schauen wir mal bei Repo auf einzelne Plugins oder Templates, da würde das natürlich keinen Sinn ergeben, etwas einzutragen, das wäre ja dann auf der Page des Repo selbst, aber auch für alle Plugins / Templates gleich.
Ohne Eintrag holt sich Ogra das aus den Metatags.
Repo passt die Metatags auch an, aber: Ogra läuft bereits vor Repo.
Was kommt raus? Meta-Title und -Description passen, Twitter / OpenGraph, Json-LD sind aber alle gleich.
Also muss ich aus Repo heraus nachträglich nochmal die Einträge von Ogra ändern.

Das müsste nicht sein, wenn Repo vor Ogra laufen würde.
Gruß Olaf, Plugins for CMSimple_XH

Ich habe schon lange den Verdacht, dass so viele so eifrig auf Gender, Trans und Queer machen:
Weil sie für das Fachliche ganz einfach zu doof sind.

Post Reply