Joomlaeigene PHP-Konstanten umdefinieren, eigene hinzufügen (Stand: Joomla 3.4.1)
Joomla definiert für Coder nützliche PHP-Konstanten (z.B. JPATH_SITE). Im Frontend wird dafür die Core-Datei /includes/defines.php und im Backend /administrator/includes/defines.php geladen. Man kann diese Konstanten updatesicher überschreiben / ersetzen und / oder eigene hinzufügen, um sie im Joomla-Framework überall verfügbar zu haben.
PHP-Konstanten werden 1x definiert und können dann in jedem nachfolgenden Script, in jeder Erweiterung, verwendet werden. Fehler entstehen, wenn man versucht, eine bereits definierte Konstante erneut zu definieren.
1.Variante - Der Override
- Kopiere Datei
/includes/defines.php
in das Wurzelverzeichnis deines Joomlas. - Füge Zeile
define('JPATH_BASE', __DIR__);
an den Anfang ein, nach Zeile defined('_JEXEC') or die;. - Füge Zeile
define('_JDEFINES', 1);
am Ende der Datei ein. Durch diese Zeile wird das Laden der joomla-eigenen defines.php unterbunden. - Ändere oder ergänze die PHP-Konstanten.
Selbes Vorgehen für Backend mit Datei /administrator/includes/defines.php., die man nach /administrator/defines.php kopiert.
Die Variante 1 kann riskant sein und ist u.U. nicht updatesicher! So wird von Joomla die eigene Definitionsdatei /includes/defines.php NICHT mehr geladen und durch die eigene /defines.php ersetzt. Denken Sie daran, dass Joomla bei Updates immer mal wieder neue PHP-Konstanten einführen könnte. Diese müssen Sie mit dieser Variante dann in Ihre Datei übertragen.
2.Variante - Eigene globale PHP-Konstanten hinzufügen
Bei dieser Variante wird erst Ihre eigene Definitionsdatei geladen, anschließend die joomlaeigene.
- Im Joomla-Wurzelverzeichnis Datei defines.php "leer" anlegen.
- Zeile defined('_JEXEC') or die; als erste eintragen.
- Eigene Konstanten nach belieben definieren. dabei darauf achten, dass keine Konflikte mit gleichlautenden Konstanten entstehen, die Joomla anschließend noch laden wird.
- Keinesfalls wie bei Variante 1 beschrieben die beiden define()-Zeilen verwenden!
Selbes Vorgehen im Backend. Man legt neue Datei /administrator/defines.php an.