http? https? Aktuelles URL-Protokoll in Joomla ermitteln (Uri-Klasse)
Nach teils Umstellung eines Joomlas auf SSL (https) entdeckte ich ein altes Modul, das für einen internen Link hartkodiert http einsetzte. Kein Problem, da man ja einfach auf https umschreiben kann. Funktioniert mit beiden Protokollen ohne Browserwarnung. Da das Modul auch in Joomlas ohne SSL läuft, dann doch besser, das Scheme dynamisch zu ermitteln. Geht mit einem kleinen Schnipsel.
// $protokoll ergibt String http oder String https
$protokoll = JUri::getInstance()->getScheme();
Code-Beispiel
echo JUri::getInstance()->getScheme() . '://ghsvs.de';
Ergibt auf Seiten, die per http aufgerufen werden im Modul-Code
http://ghsvs.de
und auf Seiten, die per https aufgerufen werden im Modul-Code
https://ghsvs.de
Und in Joomla 4 (auch in Joomla ab Version 3.9 verwendbar)?
Nach wie vor kann man obigen Code verwenden, also mit JUri
. Wer schon weit in die Zukunft denkt, wo solcherlei Namespace-Aliase nicht mehr funktionieren werden, vermutlich Joomla 5, hat zwei Möglichkeiten.
use
-Zeile am Anfang der Datei
defined('_JEXEC') or die;
use Joomla\CMS\Uri\Uri;
Danach verwende Uri::
statt JUri::
in obigen Code-Schnipseln.
Direkte "Ansprache" des Namespaces
Verwende \Joomla\CMS\Uri\Uri::
statt JUri::
in obigen Code-Schnipseln.