Joomla PHP Bridge Componente – eigene PHP Scripte in kontrollierter Joomla-Umgebung ausführen

Das Problem:

Bei Joomla eigene Programmierung zu platzieren ist sehr zeitaufwendig und am besten man versucht ein eigenes Modul oder eine Komponente zu programmieren. Joomla bietet keine direkte Möglichkeit für programmierfähige Webmaster eigene PHP-Scripte so einzubinden, dass diese NUR den Inhaltsteil (component) füllen.

Vorhandene Lösungen:

Es gibt einige Plugins oder Module mit denen man in Beiträgen oder Module eigenen PHP-Code einbetten kann. Mir scheinen diese Lösungen alle nicht das Herz eines Programmierers zu wecken. Zum anderen gibt es gern mal Probleme bei Beitrags-Komandos ala {code}{/code}, je nach Editorsoftware und entmutigen gewaltig.

Meine Lösung:

Einfach und effektiv biete ich eine Komponente für Joomla (ab 2.5, 3.0 bis 4.4.2+, 5.x) die es ermöglicht, eigene PHP-Scripte in dem verwendeten Template-Ordner abzulegen und per MenuItem als Component-Inhalt erreichbar zu machen.

 

Update 02.10.2012 to 1.0.2: + Option für die Position des /php/-Ordners in Joomla

Update 04.10.2012 auf 1.0.3: + Bugfix

Update 01.04.2013 auf 1.0.4: + Bugfix

Update 07.11.2014 auf 1.0.5: + Bugfix für Joomla 3.2

Update 07.02.2015 to 1.1.0: + Wieder lauffähig ab Joomla 3.3.x bis 3.6.5 (getestet bis 3.6.5)

Update 13.05.2017 to 1.2.0: + Wichtige Anpassungen für Joomla 3.7.x (getestet mit 3.7.2)

Update 28.05.2017 to 1.2.1: + Javascript Datei Support, Unterstützung der Joomla-Standard-Felder am MenuItem, Sicherheitscheck integriert  3.7.x (getestet mit 3.7.2)

Update 29.05.2017 to 1.2.2: + Interne Änderungen (getestet mit 3.7.2)

Update 01.06.2017 to 1.2.3: + Korrekturen (getestet mit 3.8.5)

Update 09.08.2021 to 4.0.0: + Neue Version für Joomla 4

Update 13.08.2023 to 4.1.0: + Bugfix und neues Feature: Define the Output Type from MenuItem

Check 13.08.2023: Getestet bis Joomla 5 Alpha

Update 16.12.2023 to 4.4.0: + Bugfix

Update 15.01.2024 to 4.4.1: + ergänzt Einbindung von CSS/JS aus dem media/templates/site/… Verzeichnis

Update 05.09.2024 to 4.4.2: + Deprecated Message Error fixed

 

Downloads:

Dokumentation:

Info: Das folgende Bildmaterial stammt aus der Joomla Version 4.0+

1. Eigene PHP-Scripte platzieren

Eigene PHP-Scripte in folgenden Ordnern legen: ”/templates/DEINTEMPLATE/php/” oder „/php/“

In den System > Konfiguration > PHP-Bridge Optionen finden Sie dafür eine passende Einstellung.

Hier eine Beispielscriptdatei: (Dateiname: phpinfo.php)

<?php //PHP 8+
defined('_JEXEC') or die('Restricted access');
// Injected Variables: $mode:string , $data:array
?>
<p>PHP-Bridge von Henry Schorradt</p>

<?php
// phpinfo() ist ansich ungeeignet weil hier eine komplett HTML-Struktur in den Joomla-Content ausgegeben wird, was eigentlich nicht GUT ist, aber als Beispiel reicht es aus.
echo phpinfo();

 

2. Neuen Menüpunkt vom Typ PHP-Bridge anlegen:

 

 

3. Korrekte Daten am MenuItem eintragen:

Den Titel und Alias können Sie frei wählen um die Seite per URL aufzurufen (Standard bei Joomla), ansonsten reiht sich bekanntlich dieser Menüpunkt in das vorhandene Menü ein.

a) Scriptname: Das ist der PHP-Dateiname (Ohne Endung .php) des Scripts welches über diesen Menüpunkt ausgeführt wird.
b) Mode: eine freinutzbare Variable die in dem Script genutzt werden kann
c) Data: eine freinutzbare Variable die zusätzlich mehrere Werte (Kommasepariert) übergibt und als Array zur Verfügung stellt.

d) Output Type: Normale Ausgabe oder die Scriptausgabe wird ausschließlich vor dem Template ausgegeben.

 

 

3.1. Optionen

Bei den Optionen können Sie für dieses entsprechende Script noch eine eigene CSS Style Datei und eine Javascript Datei einbinden.

4. Script aufrufen

Jetzt kann diese Seite in meinem Beispiel über folgende URL abgerufen werden und generiert innerhalb des eigenen Templates den Inhalt der phpinfo()-funktion.

Je nach Einstellungen in Joomla bei der “Suchmaschinenoptimierung” dann so:

https://www.DOMAIN.de/index.php/phpinfo

oder wenn SEF und die .htaccess platziert ist dann so:

https://www.DOMAIN.de/phpinfo

Fazit:

Diese Component richtet sich klar an Programmierer die Extrawünsche selbst bauen können und wollen. Innerhalb der PHP-Scripte sollte man auf das Framework von Joomla zurückgreifen um keine Sicherheitsprobleme sich einzuhandeln. Es ermöglich mir selbst aber unendliche Möglichkeiten zur individuellen Anpassung von Joomla.