Runonce: Unterschied zwischen den Versionen
Aus Contao Community Documentation
K (→Aufruf durch Contao) |
K |
||
(13 dazwischenliegende Versionen von einem Benutzer werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
− | |||
− | |||
− | |||
− | |||
− | |||
{{AppliesTo|TLVersion=ab 2.7|Version=ab 2.9}} | {{AppliesTo|TLVersion=ab 2.7|Version=ab 2.9}} | ||
Live Update nutzt diese, die Extensions nutzen diese auch: eine Datei <code>runonce.php</code> | Live Update nutzt diese, die Extensions nutzen diese auch: eine Datei <code>runonce.php</code> | ||
Zeile 9: | Zeile 4: | ||
Diese Datei tut genau das, was der Name schon vermuten lässt. Sie wird nur einmal ausgeführt und anschließend gelöscht. | Diese Datei tut genau das, was der Name schon vermuten lässt. Sie wird nur einmal ausgeführt und anschließend gelöscht. | ||
− | Von | + | Von Contao 2.9 zu 2.10 gab es eine Änderung diesbezüglich was Ort und Zeitpunkt des Aufrufes betrifft. Es ist möglich, für beide Arten gleichzeitg kompatibel zu sein und wird deshalb hier auch mit beschrieben. |
− | + | [[Category:Dev HOWTOS]] | |
+ | [[Category:Dev Snippets]] | ||
== Verwendung ab Contao 2.10 == | == Verwendung ab Contao 2.10 == | ||
Ab Contao 2.10 ist die runonce Nutzung modulbasiert. Das heißt, jedes Modul bringt seine eigene runonce.php in der Verzeichnistruktur des Moduls mit. Nicht mehr wie in 2.9 im System Verzeichis. | Ab Contao 2.10 ist die runonce Nutzung modulbasiert. Das heißt, jedes Modul bringt seine eigene runonce.php in der Verzeichnistruktur des Moduls mit. Nicht mehr wie in 2.9 im System Verzeichis. | ||
Zeile 22: | Zeile 18: | ||
=== Aufruf durch Contao === | === Aufruf durch Contao === | ||
Contao ruft die runonce.php Dateien aller aktiven Module auf (sofern vorhanden) direkt vor einem Datenbank Update bzw. dem Test ob dieser notwendig ist. Das passiert somit bei zwei Ereignissen: | Contao ruft die runonce.php Dateien aller aktiven Module auf (sofern vorhanden) direkt vor einem Datenbank Update bzw. dem Test ob dieser notwendig ist. Das passiert somit bei zwei Ereignissen: | ||
− | * Installation oder Update oder | + | * Installation oder Update oder Deinstallation einer Erweiterung über den Erweiterungskatalog bzw. die Erweiterungsverwaltung. |
* Liveupdate von Contao | * Liveupdate von Contao | ||
Installiert man eine Erweiterung manuell oder macht ein manuelles Update von Contao, muss wie üblich die install.php aufgerufen werden, bzw. im Backend über Erweiterungsverwaltung - Datenbank aktualisieren, um den Vorgang auszulösen. | Installiert man eine Erweiterung manuell oder macht ein manuelles Update von Contao, muss wie üblich die install.php aufgerufen werden, bzw. im Backend über Erweiterungsverwaltung - Datenbank aktualisieren, um den Vorgang auszulösen. | ||
Zeile 30: | Zeile 26: | ||
== Verwendung in Contao 2.9 und älter == | == Verwendung in Contao 2.9 und älter == | ||
+ | In Contao 2.9 und älter gibt es für alle Module und das Liveupdate einen gemeinsamen Ort für das Ablegen der runonce.php. Dies führte in der Vergangenheit zu Problemen. (siehe dazu [[Runonce#Problemfall|Problemfall in 2.9]]) | ||
=== Ablageort === | === Ablageort === | ||
− | + | Die runonce.php muss im /system Verzeichnis von Contao liegen. Beispiel: | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
<source lang="php"> | <source lang="php"> | ||
− | + | /system/runonce.php | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
</source> | </source> | ||
+ | === Aufruf durch Contao === | ||
+ | Contao ruft die runonce.php auf, wenn vorhanden, bei jedem Seitenaufruf. Dabei spielt es keine Rolle ob es ein Frontend oder Backend Aufruf ist. | ||
+ | === Problemfall === | ||
+ | Wie schon erwähnt, kann das zu Probleme führen, wenn gleichzeigt mehrere Module installiert werden, die jeweils eine runonce.php mitbringen. | ||
− | + | Eine Lösung für dieses Problem ist auf der Seite [[Runonce_Code_Beispiele#Code_Beispiel_Spezialfall|Runonce Code Beispiel Spezialfall]] zu finden. | |
+ | Diese Lösung funktioniert aber nur, wenn alle Entwickler sich dran halten. | ||
− | == | + | == Spezialfall: runonce.php für 2.9 und 2.10 == |
− | + | Wenn ein Modul definiert ist für 2.9 und 2.10 zu funktionieren und bringt es eine runonce.php mit, muss diese beide Aufruforte unterstützen. | |
− | + | Hier ist von der Idee, diese einfach an beiden Orten abzulegen und somit zweimal mitzubringen, dringend abzuraten. Grund ist der [[Runonce#Problemfall|Problemfall]] wie bei Contao 2.9 schon beschrieben. | |
− | + | Eine Lösung dafür ist auf dieser Seite zu finden: [[Runonce_Code_Beispiele#Code_Beispiel_Spezialfall|Runonce Code Beispiele]] | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | Hier | + | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | Dabei wird eine Universal-Runonce im /system Verzeichnis abgelegt, welche dann die runonce.php in den config Verzeichnissen der aktiven Module sucht und aufruft. | |
− | + | Im Prinzip wird hier die Contao 2.10 Variante nachgeahmt. | |
− | + | ||
---- | ---- | ||
− | --[[Benutzer:BugBuster|BugBuster]] | + | --[[Benutzer:BugBuster|BugBuster]] 22:19, 13. Nov. 2011 (CET) |
Aktuelle Version vom 15. November 2011, 10:35 Uhr
betrifft | |
---|---|
TYPOlight Version | ab 2.7 |
Contao Version | ab 2.9 |
Live Update nutzt diese, die Extensions nutzen diese auch: eine Datei runonce.php
Diese Datei tut genau das, was der Name schon vermuten lässt. Sie wird nur einmal ausgeführt und anschließend gelöscht.
Von Contao 2.9 zu 2.10 gab es eine Änderung diesbezüglich was Ort und Zeitpunkt des Aufrufes betrifft. Es ist möglich, für beide Arten gleichzeitg kompatibel zu sein und wird deshalb hier auch mit beschrieben.
Inhaltsverzeichnis
Verwendung ab Contao 2.10
Ab Contao 2.10 ist die runonce Nutzung modulbasiert. Das heißt, jedes Modul bringt seine eigene runonce.php in der Verzeichnistruktur des Moduls mit. Nicht mehr wie in 2.9 im System Verzeichis.
Ablageort
Die runonce.php muss im config Verzeichnis des Moduls liegen. Beispiel:
/system/modules/banner/config/runonce.php
Der Ablageort /system/runonce.php funktioniert zwar auch noch, sollte aber nicht mehr verwendet werden, da es zu gegenseitigem Überschreiben kommen kann. (siehe dazu Problemfall in 2.9)
Aufruf durch Contao
Contao ruft die runonce.php Dateien aller aktiven Module auf (sofern vorhanden) direkt vor einem Datenbank Update bzw. dem Test ob dieser notwendig ist. Das passiert somit bei zwei Ereignissen:
- Installation oder Update oder Deinstallation einer Erweiterung über den Erweiterungskatalog bzw. die Erweiterungsverwaltung.
- Liveupdate von Contao
Installiert man eine Erweiterung manuell oder macht ein manuelles Update von Contao, muss wie üblich die install.php aufgerufen werden, bzw. im Backend über Erweiterungsverwaltung - Datenbank aktualisieren, um den Vorgang auszulösen.
Code Beispiele
Beispiele sind auf einer extra Seite zu finden: Runonce Code Beispiele
Verwendung in Contao 2.9 und älter
In Contao 2.9 und älter gibt es für alle Module und das Liveupdate einen gemeinsamen Ort für das Ablegen der runonce.php. Dies führte in der Vergangenheit zu Problemen. (siehe dazu Problemfall in 2.9)
Ablageort
Die runonce.php muss im /system Verzeichnis von Contao liegen. Beispiel:
/system/runonce.php
Aufruf durch Contao
Contao ruft die runonce.php auf, wenn vorhanden, bei jedem Seitenaufruf. Dabei spielt es keine Rolle ob es ein Frontend oder Backend Aufruf ist.
Problemfall
Wie schon erwähnt, kann das zu Probleme führen, wenn gleichzeigt mehrere Module installiert werden, die jeweils eine runonce.php mitbringen.
Eine Lösung für dieses Problem ist auf der Seite Runonce Code Beispiel Spezialfall zu finden. Diese Lösung funktioniert aber nur, wenn alle Entwickler sich dran halten.
Spezialfall: runonce.php für 2.9 und 2.10
Wenn ein Modul definiert ist für 2.9 und 2.10 zu funktionieren und bringt es eine runonce.php mit, muss diese beide Aufruforte unterstützen. Hier ist von der Idee, diese einfach an beiden Orten abzulegen und somit zweimal mitzubringen, dringend abzuraten. Grund ist der Problemfall wie bei Contao 2.9 schon beschrieben. Eine Lösung dafür ist auf dieser Seite zu finden: Runonce Code Beispiele
Dabei wird eine Universal-Runonce im /system Verzeichnis abgelegt, welche dann die runonce.php in den config Verzeichnissen der aktiven Module sucht und aufruft. Im Prinzip wird hier die Contao 2.10 Variante nachgeahmt.
--BugBuster 22:19, 13. Nov. 2011 (CET)