31.2 Plug-ins 

Seit der Version Joomla! 1.5 haben Plug-ins sehr an Bedeutung gewonnen. Sie greifen ganz wesentlich in das Verhalten der Seite ein.
31.2.1 System – Legacy 

Dieses Plug-in dient der Kompatibilität mit Erweiterungen, die für die älteren Joomla!-Versionen vor 1.5 geschrieben wurden. Wenn Sie so eine Erweiterung einsetzen und feststellen, dass diese nicht richtig funktioniert, kann das Aktivieren des System – Legacy-Plug-ins eine Lösung sein.
Der Einsatz von Joomla! im Legacy-Modus hat offensichtlich keine besonderen Nachteile. Die Entwickler der beliebten Docman-Komponente haben nachgewiesen, dass keine signifikanten Einbußen in der Performance festzustellen sind. Dennoch ist in der Tendenz dazu zu raten, mittelfristig auf Erweiterungen umzustellen, die direkt für das neue Joomla! 1.5-Framework geschrieben sind (man sagt, die »nativ« auf Joomla! 1.5 laufen). Der Legacy-Modus ist eine Übergangslösung, die in einer der nächsten Versionen möglicherweise nicht mehr unterstützt werden wird.
Es sei auch darauf hingewiesen, dass nicht alle alten Erweiterungen im Legacy-Modus laufen. Erweiterungen einzusetzen, die für Joomla! 1.0 geschrieben sind, ist also immer mit gewissen Unsicherheiten verbunden. Auf der Homepage von Joomla! werden Erweiterungen, die im Legacy-Modus lauffähig sind, mit einem speziellen Zeichen gekennzeichnet, das in Abbildung 31.3 zu sehen ist.
Abbildung 31.3 Zeichen für Erweiterungen, die im Legacy-Modus laufen
31.2.2 System – SEF 

Internetadressen, wie sie von vielen dynamischen Webseiten erzeugt werden, enthalten die anzuzeigende Seite meistens als Parameter, d. h. in dem Teil der URL, der dem ? folgt. Suchmaschinen wiederum nehmen diesen Teil der Adresse nicht in ihren Index auf, was dazu führt, dass diese Seiten nicht oder nur schlecht mit Suchmaschinen gefunden werden können. Eine Lösung für dieses Problem ist, die Parameter als Teil des URL-Pfads zu tarnen, d. h. mit / anzugeben. Genau das macht das SEF-Plug-in, wenn es aktiviert ist.
SEF? |
Die Abkürzung steht für Search Engine Friendly, also »nett zu Suchmaschinen«. |
Weitere Informationen zur Suchmaschinenoptimierung finden Sie in Kapitel 33, »Suchmaschinenoptimierung.«
31.2.3 Inhalt – Code-Hervorhebung (GeSHi) 

Mithilfe dieser Erweiterung können Sie in einen Text Programmcode oder HTML-Text einfügen. Normalerweise wird dieser vom Browser interpretiert. So werden beispielsweise alle Tags zwischen spitzen Klammern in Formatierungen umgesetzt oder zumindest nicht angezeigt. Um dies zu verhindern, bereitet das Plug-in diesen Text so auf, dass er auch wirklich samt allen Sonderzeichen dargestellt wird. Dies geschieht, indem diese speziellen Zeichen durch sogenannte HTML-Entitys ersetzt werden. Versuchen Sie mal, folgenden Text einzugeben:
Das <br>-Tag dient dazu, einen Zeilenumbruch zu erzeugen.
Wenn Sie sich das Ergebnis im Frontend ansehen, so erscheint in etwa diese Ausgabe:
Das -Tag dient dazu, einen Zeilenumbruch zu erzeugen.
Mit GeSHi wird der Code nicht nur vollständig dargestellt, sondern auch farblich hervorgehoben. Programmierer kennen diese Funktion unter dem Begriff Syntax Highlighting. Wenn Sie GeSHi aktiviert haben, können Sie den gewünschten Programmcode einfach in <pre>-Tags einschließen. Zusätzlich sollten Sie noch die Sprache angeben, in der der folgende Code geschrieben ist, damit der Highlighter die richtigen Farben auswählt. Für ein Stück PHP-Code sieht das folgendermaßen aus:
<pre xml:lang="php"> <?php echo 'Hallo Welt'; ?> </pre>
Listing 31.1 PHP-Codebeispiel
<pre> und Editor |
Beachten Sie, dass Sie diesen Code im HTML-Modus (kein Editor) eingeben müssen, falls Sie den WYSIWYG-Editor verwenden. |
Standardmäßig unterstützt GeSHi die folgenden Sprachen mit den aufgeführten Kürzeln:
Sprache | Code |
CSS |
xml:lang="css" |
Diff |
xml:lang="diff" |
HTML |
xml:lang="html4strict" |
Ini |
xml:lang="ini" |
JavaScript |
xml:lang="javascript" |
MySQL |
xml:lang="mysql" |
PHP |
xml:lang="php" |
PHP Brief |
xml:lang="php-brief" (wie PHP, nur weniger detailliertes Highlighting) |
SQL |
xml:lang="sql" |
XML |
xml:lang="xml" |
Wenn Sie mehr Sprachen benötigen, können Sie sich das gesamte GeSHi-Paket unter der URL qbnz.com/highlighter herunterladen. In diesem Fall kopieren Sie die Dateien aus dem Paket in das Verzeichnis libraries/geshi/geshi. Die neue Sprache kann dann jeweils mit lang="sprache" aktiviert werden.
GeSHi bietet auch die Möglichkeit, Zeilennummern automatisch mit auszugeben. Verwenden Sie dazu das Attribut lines="true". Die erste Zeile sieht dann so aus:
<pre xml:lang="php" lines="true">
31.2.4 Inhalt – Modul laden 

Dieses Plug-in erlaubt es Ihnen, auch innerhalb eines Content-Elements Module zu laden. Dazu fügen Sie an der gewünschten Position den Befehl
{loadposition name}
ein. Wenn diese Position definiert ist, werden alle Module geladen, die in der Modulverwaltung hier zugeordnet wurden. Der Parameter Stil bestimmt dabei, auf welche Weise die Ausgabe aufbereitet wird.
Parameter | Funktion |
Mit Tabelle umgeben – Spalten |
Die einzelnen Module an dieser Position werden untereinander angeordnet. Dazu wird eine Tabelle verwendet. |
Mit Tabelle umgeben – Horizontal |
Die einzelnen Module an dieser Position werden nebeneinander angeordnet. Dazu wird eine Tabelle verwendet. |
Mit Divs umgeben |
Die einzelnen Module werden in <div>-Tags mit der Klasse »moduletable« verpackt. |
Mehrfach mit Divs umgeben |
Die einzelnen Module werden in <div>-Tags mit der Klasse »module« verpackt und dann noch in drei Unterebenen von <div>s verpackt. Das kann eine Lösung für browserspezifische Probleme sein, die bei der CSS-Formatierung mit Blöcken entstehen. |
Nicht umgeben – reiner Inhalt |
Der HTML-Text der Module wird ohne Veränderung so eingefügt, wie er erzeugt wird. |
31.2.5 Inhalt – Seitenumbruch 

Damit die Seiten bei umfangreichen Texten nicht zu lang werden, besteht die Möglichkeit, diese Texte mit dem Seitenumbruch-Plug-in in kleinere Einheiten aufzubrechen. Fügen Sie dazu an den Umbruchstellen diesen Befehl ein:
<hr class="system-pagebreak" />
Wenn Sie diesen Befehl verwenden, wird auf der Seite nur der Inhalt bis zum ersten Vorkommen des Befehls ausgegeben. Zusätzlich werden ein Inhaltsverzeichnis und ein Navigationsbereich erzeugt, mit dem Sie die anderen Bereiche der Seite erreichen können.
Abbildung 31.4 Das Inhaltsverzeichnis
Um im Inhaltsverzeichnis einen zusätzlichen Titel anzuzeigen, können Sie das Attribut title verwenden. Wenn Sie diesen Parameter nicht angeben, werden die Bereiche mit »Seite x« durchgezählt.
Auf der Einstellungsseite des Plug-ins können Sie noch festlegen, ob der Titel der Unterseite mit in den Seitentitel aufgenommen wird, der in der Titelleiste des Browserfensters angezeigt wird.
Die Funktionalität des Plug-ins wird auch vollständig über den Editor-Button Seitenumbruch abgedeckt.
31.2.6 Editor – Kein Editor 

Dies ist nur ein Dummy-Eintrag, der in der Liste der auswählbaren Editoren erscheint und festlegt, dass kein WYSIWYG-Editor verwendet werden soll. Das ist dann sinnvoll, wenn Sie gute HTML-Kenntnisse haben oder sich gern über technische Dinge wie Programmiersprachen austauschen und es nicht schätzen, wenn Ihnen der Editor die Formatierungen durcheinanderwirft.
31.2.7 Editor – XStandard Lite 2.0 

Dieser Editor ist ein sogenannter WYSIWYM-Editor. Dabei wird nicht genau das angezeigt, was später auf der Seite zu sehen ist, sondern vielmehr die Struktur der Seite dargestellt.
Abbildung 31.5 Der XStandard-Editor
Der Editor selbst muss als Browser-Plug-in installiert sein. Wundern Sie sich also nicht, wenn er beim ersten Laden nicht angezeigt wird.
31.2.8 Editorbutton – Bild, Editorbutton – Seitenumbruch und Editorbutton – Weiterlesen 

Diese drei Plug-ins stellen die Spezial-Buttons zum Einfügen von Bildern, Seitenwechseln sowie den Marker für den Weiterlesen-Link zur Verfügung. Sie sind also Erweiterungen des Editors.
31.2.9 Suche 

Die Such-Plug-ins sind für das Durchsuchen der jeweiligen im Titel angegebenen Komponente verantwortlich, also durchsucht z. B. »Suche – Newsfeeds« die Newsfeeds. Wenn Sie nicht wollen, dass eine bestimmte Komponente durchsucht werden kann, deaktivieren Sie das entsprechende Plug-in einfach. Der Parameter Suchlimit legt dabei fest, wie viele Ergebnisse maximal ausgegeben werden sollen.
31.2.10 Authentifikation 

Diese Plug-ins übernehmen die Benutzeranmeldung und erlauben beispielsweise die Anbindung an das Active Directory. Es hat den Anschein, dass Gmail und OpenID nicht für den produktiven Einsatz gedacht sind. Sie werden in Foren eher als Proof of concept bezeichnet.
Gmail braucht mod_curl |
Um gegen Gmail zu authentifizieren, muss bei PHP die Curl-Erweiterung aktiviert sein. Das können Sie in der Konfigurationsdatei der Sprache vornehmen: apachefriends/xampp/apache/bin/php.ini Suchen Sie die Zeile ;extension=php_curl.dll und entfernen Sie das Zeichen ; am Zeilenanfang. Jetzt müssen Sie den Webserver noch einmal neu starten. |
31.2.11 Inhalt – Seitennavigation 

Dieses Plug-in bindet am Ende eines Artikels aus einem Bereich einen Link zum nächsten und vorhergehenden Artikel aus diesem Bereich ein. Damit diese Navigation angezeigt wird, muss sie in den Voreinstellungen der Beiträge aktiviert sein.
31.2.12 System – Debug 

Wenn Sie Joomla!-Entwickler sind, dann ist dieses Plug-in möglicherweise nützlich für Sie. Es protokolliert Vorgänge während des Seitenaufbaus. Das Protokoll wird am Ende einer jeden Seite ausgegeben.
Um die Debug-Protokollierung zu starten, ist es neben der Aktivierung des Plug-ins nötig, in der Konfiguration im Reiter System die Optionen System debuggen bzw. Sprache debuggen auf Ja zu stellen.
In den Plug-in-Einstellungen können Sie zudem festlegen, was genau protokolliert werden soll.
31.2.13 System – Cache 

Bei jedem Aufruf einer Joomla!-Seite wird diese samt ihren Inhaltselementen neu aus den in der Datenbank gespeicherten Teilen zusammengesetzt. Dabei sind jedes Mal einige Abfragen der Daten sowie verschiedene Berechnungen und Verarbeitungsschritte notwendig.
Wenn sich Ihre Seite nur sehr wenig ändert, bietet es sich an, das einmal generierte Ergebnis in einen Zwischenspeicher zu schreiben. Beim Aufruf muss dann nur noch diese bereits generierte Seite ausgegeben werden. Genau diese Aufgabe übernimmt das Cache-Plug-in. Es speichert komplette Seiten für eine vorgegebene Zeitdauer (Cache-Lebensdauer).
Cache und Aktualität |
Die Verwendung des Caches, während eine Seite gestaltet wird, hat ihre Tücken. Denn es kann passieren, dass Änderungen, die Sie an einem Beitrag vornehmen, erst im Frontend dargestellt werden, wenn die Cache-Lebensdauer abgelaufen ist. |
Das Cache-Plug-in entfaltet seine Wirkung nur in Kombination mit dem aktivierten Cache in der Konfiguration. Weiterführende Informationen dazu finden Sie in Kapitel 35, »Performance«.
31.2.14 System – Protokoll 

Eine Seite, die im Internet zugänglich ist, läuft immer Gefahr, Hack-Versuchen ausgesetzt zu sein. Reizvoll für ungebetene Gäste ist vor allem der Admin-Bereich, denn wer dort Zugriff hat, der hat die Kontrolle über das System.
Um Angriffsversuche frühzeitig zu erkennen, bietet Joomla! die Möglichkeit, Anmeldungen zu protokollieren, die fehlgeschlagen sind. Dazu müssen Sie nur das Protokoll-Plug-in aktivieren. Die Logeinträge werden in der Datei logs/error.php gespeichert. Diese Datei kann nur direkt und nicht über den Browser aufgerufen werden. Ein fehlgeschlagener Anmeldeversuch sieht dort beispielsweise so aus:
#Version: 1.0 #Date: 2008-08-24 11:58:20 #Fields: date time level c-ip status comment #Software: Joomla! 1.5.6 Production/Stable [ Vusani ] 12-August-2008 22:00 GMT 2008-08-24 12:14:17 – 127.0.0.1 FAILURE: Invalid password
Listing 31.2 Das Fehler-Protokoll
Die letzte Zeile informiert Sie über das Datum und die Zeit der Anmeldung, die IP-Adresse, von der aus der Versuch gestartet wurde, und den Grund, warum es nicht geklappt hat. Mehr zum Thema Sicherheit erfahren Sie in Kapitel 37, »Sicherheit«.
31.2.15 System – Remember Me 

Dieses Plug-in zeigt die Option Angemeldet bleiben im Login-Dialog an. Joomla! (oder genauer gesagt: der Browser) merkt sich dabei Ihre Anmeldedaten, so dass Sie beim nächsten Aufruf der Seite direkt eingeloggt werden, ohne Ihren Benutzernamen und das Passwort noch einmal eingeben zu müssen.
Diese Option ist sehr bequem. Es ist aber zu bedenken, dass dann jeder, der Ihren Computer benutzen kann, auch Zugriff auf die Joomla!-Seite mit Ihren Berechtigungen hat. Daher sei an dieser Stelle zur Vorsicht geraten, wenn Sie Ihren Computer nicht ausschließlich selbst benutzen.
31.2.16 System – Backlink 

Bei der Umstellung der Joomla!-Version von 1.0 auf 1.5 wurde das Konzept der suchmaschinenfreundlichen URLs grundlegend neu gestaltet. Wenn Sie nun eine alte Seite mit ihren Daten auf die Version 1.5 upgraden, kann es vorkommen, dass die alten, suchmaschinenfreundlichen Links nicht mehr funktionieren. Um das zu verhindern, können Sie das Backlink-Plug-in aktivieren, das diesbezüglich eine Abwärtskompatibilität herstellt.
Weiterführendes zum Thema Migration finden Sie in Abschnitt 29.2.2, »Upgrade von Joomla! 1.0«.
31.2.17 Benutzer – Joomla! 

Dieses Plug-in steuert die Rechte von Joomla!-Benutzern und synchronisiert die Session- und Datenbankeinträge.
Deaktivieren Sie dieses Plug-in niemals in Live-Systemen! |
Das Deaktivieren dieses Plug-ins hat zur Folge, dass sich jeder angemeldete Benutzer mit Super Administrator-Rechten im Backend einloggen kann. Das wird zudem nicht protokolliert. |
Der Sinn dieser Erweiterung ist es, eine Möglichkeit zu schaffen, mit der Programmierer eigene Rechteüberprüfungen und ein eigenes Benutzerverhalten programmieren können.
31.2.18 XML-RPC – Joomla und XML-RPC – Blogger-API 

Mithilfe einer API (Application Programming Interface, dt. Programmierschnittstelle) können fremde Programme Joomla! steuern. So ist es beispielsweise möglich, einen externen Editor für die Gestaltung von Beiträgen in Joomla! zu benutzen. Die beiden unterschiedlichen Plug-ins stellen dabei unterschiedliche Code-Varianten zur Verfügung. Während die erste ein speziell für Joomla! erstelltes Format versteht, ist die Blogger-API eine standardisierte Schnittstelle, die auch verwendet wird, um verschiedene Blogs von außen anzusprechen.