Eigenen PHP Code im Joomla einbinden

Wie Sie eigenen PHP Code im Joomla einbinden

Eigenen PHP Code im Joomla einbinden ist nicht ganz ohne. Ein Kunde hatte das Problem, dass ein Dienst für Bewertungen auch die Möglichkeit bietet, diese als Rich-Snippets für Google zu nutzen. Hierzu musste an einer gewünschten Stelle auf der Seite im Theme ein PHP-Code eingebunden werden. In diesem Fall sollte dies im Footer der Seite erfolgen (spielt aber eher eine Untergeordnette Rolle.

Mit dem Editor von Joomla war das Einbinden leider nicht möglich, da dieser die PHP-Tags immer wieder in HTML-ASCII Zeichen umgewandelt hat. Die Lösung war also, diesen PHP Code in ein eigenes Modul zu packen und über die Modulstile von Joomla. Auch Drittmodule wie z.B. DirectPHP halfen nicht bei der Problemlösung

Was also tun

Google brachte mich hier auf die Lösung. Es musste also ein eigenes Modul her, indem der PHP Code eingebunden wird. Eine komplette Anleitung zur Verwendung der Joomla-Modulstile finden Sie hier.

Verzeichnisse und Dateien

Gehen Sie immer vom Hauptverzeichnis Ihrer Joomla-Installation aus. Dort im Verzeichnis /media legen Sie ein Verzeichnis /scripts an (Dieses kann natürlich auch anders benannt werden). In dieses Verzeichnis kommen nun die Dateine, in welche Ihr eigener PHP Code eingefügt wird.

im Beispiel möchte in den eigenen PHP Code im Footer eigebunden haben. Ich benenne meine Datei daher footer.php.

/media/scripts/footer.php

<?php
defined('_JEXEC') or die;
echo 'Ich bin der eigene PHP-Code';
?>

Bitte niemals die Zeile „defined(‚_JEXEC‘) or die“ vergessen, damit Aufrufe von außen direkt über die URL unterbunden werden. Danach ist jeder PHP Code möglich, den Sie benötigen.

Den Modulstil anlegen

Im Verzeichnis /templates/html sollten Sie die Datei modules.php finden. Ist diese nicht vorhanden, legen Sie die Datei einfach an. Auch hier in der ersten Zeile nach dem öffnenden PHP-Tag

defined('_JEXEC') or die;

nicht vergessen. Hier erstellen Sie nun die Funktion für den Modulstil:

function modChrome_eigeneFunktion($module, &$params, &$attribs)
{
 $includeFile = JPATH_SITE . '/media/scripts/' . $module->position . '.php';
 if (!is_file($includeFile))
 {
  return;
 }
 if ((bool) $module->showtitle){
  $headerTag = htmlspecialchars($params->get('header_tag', 'h3'));
  $headerClass = $params->get('header_class');
  $headerClass = !empty($headerClass) ? ' class="' . htmlspecialchars($headerClass) . '"' : '';
  echo '<' . $headerTag . $headerClass .'>' . $module->title .'';
 }
 require_once($includeFile);
}

In Zeile 3 Wird der Pfad zum eigenen Sktipt definiert, wobei der Skriptname direkt aus der Position ausgelesen wird, an der Sie das Modul dann veröffentlichen. In meinem Beispiel ist das Modul im Footer (Position: footer), weshalb ich diese auch footer.php genannt habe. Um hier unabhängig zu sein (Sie kennen ja den Dateinamen) können Sie die Zeile auch wie folgt abändern:

$includeFile = JPATH_SITE . '/media/scripts/dateiName.php';

Auch den Pfad „/media/scripts“ müssen Sie natürlich Ihrem Pfad anpassen.

Im Joomla Backend das Modul anlegen und mit Ihrem Script verbinden

Legen Sie im Joomla Backend unter „Erweiterungen“ > „Module“ ein neues Modul an. Dieses Modul konfigurieren Sie nun wie folgt:

  • Im Titel tragen Sie ein, was Sie möchten
  • Den Text im Editor können Sie freilassen oder Sie tragen sich dort Notizen ein.
  • PositionHier wählen Sie die Position aus an welcher das Modul angezeigt werden soll, oder Sie tippen einen neuen Namen ein. In meinem Beispiel soll der Code im Footer angezeigt werden, daher wähle ich dort „footer“.
  • Im Reiter Menüzuweisung wählen Sie „Auf allen Seiten“ oder schränken dies entsprechend ein.
  • Im Reiter Erweitert ganz unten wählen Sie den Modulstil aus. Der Modulstil befindet sich unter den Namen Ihres Templates und ist nach der Funktion in der modules.php benannt. In meinem Beispiel lautet der Modulstil also „eigeneFunktion“

Sie können das Modul aber auch in Beiträge und Seiten einbinden. Hierzu wird das Content-Plugin loadmodule verwendet, welches im Normalfall in jedem Joomla bereits aktiviert ist. Im Beitrag selbst wird dann folgender Code eingebunden

{loadposition footer}

Hier wird also auch, wie bei der Positionsangabe oben, der exakte Dateiname ohne Dateiendung angegeben. Im Beitrag sollte also auch Ihr Code angezeigt werden.