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.