Plugins

15 Eigene Komponenten, Module, Plugins

Sie wollen mit Joomla! ein Problem lösen, für das es noch keine fertige Komponente gibt? Sie sind beispielsweise Autohändler und benötigen eine über die Joomla!-Administration pflegbare Auflistung Ihrer Gebrauchtwagen auf Ihrer Website? Oder eine Liste Ihrer Niederlassungen? Erweitern Sie einfach den Funktionsumfang um neue Komponenten, Module und Plugins. Was auf den ersten Blick sehr kompliziert aussieht, ist auch mit PHP-Anfängerwissen durchaus machbar.

Nach den Erfahrungen im Template-Bau in Kapitel 13 können Sie sich bestimmt schon vorstellen, was auf Sie zukommt. Diesmal liegt der Schwerpunkt allerdings nicht auf der Gestaltung, sondern auf der Programmierung.

Exkurs

Seit 01.01.2008 wird PHP 4 offiziell nicht mehr weiterentwickelt. Daher sollten Sie alle neuen Erweiterungen nach den Empfehlungen für die Version PHP 5 umsetzen. Joomla selbst ist in der Version 1.5 zu beiden Standards kompatibel. Wenn Sie mehr erfahren möchten: http://gophp5.org/.

15.0.1 Model – View – Controller

Mit Joomla! 1.5 wurde ein Konzept (Muster) für die Erstellung von Erweiterungen eingeführt: das Model-View-Controller-Muster, abgekürzt mit MVC. In der modernen Software-Entwicklung wird dieser Ansatz benutzt, um eine gewisse Ordnung in die Dinge zu bekommen.

Fast immer, wenn es um Aufgaben einer Software geht, benötigt man drei Bereiche:

  • Ein Datenmodell (engl. Model)
  • Eine Präsentation (engl. View)
  • Eine Programmsteuerung (engl. Controller)

Also liegt es nahe, diese drei Bereiche zu standardisieren. Da Programmierer auf solche Vorgaben eher allergisch reagieren, muss es echte Vorteile geben. Schauen wir uns die einzelnen Begriffe näher an.

Modell (Model)

Das Modell enthält die darzustellenden Daten. Die Herkunft der Daten ist unerheblich. Das Modell weiß nichts über die Ausgabe der Daten und hat auch keine Ahnung davon, wie diese Daten verändert werden.

Präsentation (View)

Die Präsentation stellt die Daten des Modells dar. Es muss eine Verbindung zwischen Modell und Präsentation geben, damit etwas dargestellt werden kann.

Steuerung (Controller)

Ja, was wird die Steuerung machen? Sie steuert das Ganze, reagiert auf Benutzereingaben oder andere Ereignisse, verwaltet die Modelle und die Präsentationen und gibt ihre Informationen an Präsentationen weiter.

15.0.2 Wo ist der Vorteil von MVC?

Wie bereits oben angedeutet, kommt gerade im Falle von Joomla! eine gewisse Ordnung in die Dinge. War es mit Joomla! 1.0 üblich, so zu programmieren, wie man Lust hatte, ist das mit Joomla! 1.5 nicht mehr erwünscht. Das hat nichts mit Bevormundung zu tun, sondern mit den Anforderungen der Benutzer, also mit Ihnen!

Sie wollen:

  • Barrierefreie Websites (overrides)
  • Suchmaschinenfreundliche URLs
  • Verteilte Authentifizierung
  • Internationalisierung
  • Sicherheit und Wartbarkeit
  • Wiederverwendbarkeit
  • mehr, mehr, mehr ...

Genau dieses mehr, mehr, mehr ist der Grund dafür, Ordnung im System zu schaffen. Solange Sie eine Firma mit einem Mitarbeiter haben, können Sie die Verwaltung noch im Kopf, mit einem Zettel und einem Stift erledigen. Haben Sie 10 Mitarbeiter, wird das schon schwierig. Wenn Ihre Firma jetzt vielleicht auch noch »brummt« und anfängt zu wachsen, brauchen Sie irgendein System zur Verwaltung!

MVC ist so ein System, in unserem Falle aber für Software. Es soll ein Programmdesign ermöglichen, das spätere Änderungen erleichtert und eine Wiederverwendbarkeit von Code ermöglicht. Es ist nicht unumstritten, aber auch nicht schlecht. Wenn sich alle dran halten, ist es gut!

Quell religiöser Diskussion sind natürlich Fragen wie:

  • Wohin soll meine Geschäftslogik? In den Controller oder in das Model?
  • Wie ist das mit wiederverwendbaren Dialogen? In den View?
  • Wie regeln wir mehrere Views (Tabelle, Einzelansicht, Frontend, Backend)?

Da eine vergleichbare Struktur in Joomla! 1.0 nicht existierte, ist dieses »Mantra« und vor allem seine Durchsetzung in meinen Augen die größte Leistung, die Joomla! 1.5 bzw. das Projektteam dahinter vollbracht haben. Die Zukunft wird zeigen, ob die Benutzer und Entwickler das auch so sehen. :-)

Wo ist er also, der Vorteil für alle?

Ganz einfach, Sie kennen das von sich selbst. Wenn die Küche, der Keller, das Auto, der Dachboden erst einmal aufgeräumt sind, ist es relativ einfach, diesen Zustand beizubehalten. Im Falle von Software ist das die Grundvoraussetzung, überhaupt wachsen zu können und pflegbar zu sein. Und Joomla! steht immer noch am Anfang seiner Möglichkeiten. Das heißt, wenn sich heute jemand (das Joomla!-Projektteam) die Arbeit gemacht hat und Joomla! 1.0 aufgeräumt hat, wird es für Sie in Zukunft deutlich einfacher, Joomla! an Ihre Wünsche anzupassen.

1Download siehe Anhang (hier in der Online Version direkt an der Kapitelseite).

 

15.5 Schlussbemerkung

Dieses Kapitel sollte Ihnen eine Übersicht über die Erstellung von Komponenten, Modulen und Plugins geben.

Weitergehende Entwicklungen lassen sich gut aus vergleichbaren Komponenten ableiten. Beispielsweise hat unsere Komponente auto nur eine Tabellenansicht. Suchen Sie sich eine Komponente mit Einzelansicht wie beispielsweise com_contact und erweitern Sie auto um diese Funktionalität.

Ebenso verhält es sich mit den Parameterangaben bei Modulen. Suchen Sie sich eine Vorlage und erstellen Sie Ihr eigenes Modul.

Was auf den ersten Blick kompliziert aussieht, entpuppt sich bei näherem Hinsehen als durchaus durchschaubar.

Ich wünsche Ihnen viel Spaß beim Ausprobieren!

15.4 Plugins

Zum guten Schluss wollen wir die Komponente noch in die allgemeine Suche von Joomla! integrieren. Um die Tabelle durchsuchbar zu machen, benötigen Sie ein Plugin vom Typ search. In diesem Fall hat nicht jedes Plugin ein Unterverzeichnis, sondern jeder Plugin-Typ. Wir arbeiten daher im Verzeichnis [PfadzuJoomla]/ plugins/search. Für ein Plugin benötigen Sie mindestens eine php-Datei mit der Logik (siehe Listing 15.26) und die xml-Datei mit der Beschreibung. Die Namen sollten Sie in diesem Fall von der Komponente ableiten. Also auto.php und auto.xml. Wenn Sie beispielsweise ein User-Plugin schreiben, werden Sie sich beim Namen nach der Funktion des Plugins richten, in unserem Fall besteht ein konkreter Bezug zur com_auto-Komponente. Auch die Plugins müssen in einer Tabelle angemeldet werden, in diesem Fall in der Tabelle jos_plugins. Das übernimmt natürlich der Installer für Sie. Die Suche ist sehr ausführlich und kann mit verschiedensten Parametern versehen werden. Der Quellcode gibt einen Eindruck von den Möglichkeiten. Da unsere Komponente nicht vermerkt, wann ein Auto eingefügt wurde oder wie viele Zugriffe ein Auto hat (wir haben ja noch keine Auto-Detailseite), bleiben hier viele Möglichkeiten der erweiterten Suche ungenutzt.

<?php
defined('_JEXEC')
or die( 'Restricted access' );
$mainframe->registerEvent('onSearch',
'plgSearchAuto');
$mainframe->registerEvent('onSearchAreas',
'plgSearchAutoAreas');
function &plgSearchAutoAreas() {
static $areas = array('auto' => 'Auto');
return $areas;
}

function plgSearchAuto( $text, $phrase='',
$ordering='', $areas=null ){
$db =& JFactory::getDBO();
$user =& JFactory::getUser();
if (is_array( $areas )) {
if (!array_intersect( $areas,
array_keys( plgSearchAutoAreas() ) )) {
     return
array();
}
}
$plugin =& JPluginHelper::getPlugin('search', 'auto');
$pluginParams = new JParameter( $plugin->params );
$limit = $pluginParams->def( 'search_limit', 50 );
$text = trim( $text );
if ($text == '') {
return array();
}
$section = JText::_( 'Auto' );
$wheres = array();
switch ($phrase){
case 'exact':
     $text = $db->getEscaped($text);
     $wheres2 = array();
     $wheres2[]= "LOWER(a.text)
LIKE '%$text%'";
     $wheres2[]= "LOWER(a.hersteller)
LIKE '%$text%'";
$where = '(' . implode( ')
OR (', $wheres2 ) . ')';
break;
case 'all':
case 'any':
   default:
$words = explode( ' ', $text );
$wheres = array();
foreach ($words as $word) {
$word = $db->getEscaped($word);
$wheres2 = array();
$wheres2[] = "LOWER(a.text)
LIKE '%$word%'";
$wheres2[] = "LOWER(a.hersteller)
LIKE '%$word%'";
$wheres[]  = implode( ' OR ', $wheres2 );
}
     $where= '('.implode(($phrase == 'all'
? ') AND ('
: ') OR ('), $wheres ) . ')';
     break;
}
switch ( $ordering ) {
default:
    $order = 'a.text ASC';
    break;
}
$query = "SELECT * FROM #__auto AS a"
."\n WHERE ( $where )"
."\n AND published = '1'"
."\n ORDER BY $order";
$db->setQuery( $query, 0, $limit );
$rows = $db->loadObjectList();
foreach($rows as $key => $row) {
$rows[$key]->href = 'index.php?option=com_auto&view=auto';
}
return $rows;
}
?>

Listing 15.26: auto.php

Die auto.xml-Datei enthält wieder die beschreibenden Daten über das Plugin für den Installer und sieht aus wie in Listing 15.27.

<?xml version="1.0" encoding="utf-8"?>
<install version="1.5" type="plugin" group="search">
<name>Search - Auto</name>
<author>Hagen Graf</author>
<creationDate>November 2007</creationDate>
<copyright>(C) 2007 cocoate.com. All rights reserved.</copyright>
<license>GNU/GPL</license>
<authorEmail>hagen.graf@gmail.com</authorEmail>
<authorUrl>www.cocoate.com</authorUrl>
<version>0.1</version>
<description>Such Plugin fuer die Auto Komponente</description>
<files>
<filename plugin="auto">auto.php</filename>
</files>
</install>

Listing 15.27: auto.xml

Wenn Sie nun das Plugin installieren und im Menü Erweiterungen - Plugins aktivieren, ist Ihre Autoliste über das Suchfeld auf der Website durchsuchbar. Nach Eingabe eines Suchbegriffs werden die Felder text und hersteller in der Datenbank durchsucht und die Ergebnisse in der allgemeinen Suchmaske angezeigt (Abbildung 15.18).

Das search-Plugin Auto im Einsatz
Abbildung 15.18: Das search-Plugin Auto im Einsatz

Das search-Plugin ist bewusst einfach gehalten. An der Fundstelle in den Suchergebnissen sollte natürlich ein Link zur Einzelansicht des Listenelementes platziert werden, damit der Suchende dorthin weiterklicken kann. Da wir aber in unserer Komponente keine Einzelansicht vorgesehen haben, können wir hier natürlich keinen Link angeben.

10.6 Menü Plugins

Man kann Plugins durchaus mit einer Joomla!-eigenen Scriptsprache vergleichen. Als wir mit dem TinyMCE-Editor gearbeitet haben, sind Sie bereits mit einem eingebauten Plugin in Berührung gekommen.

Plugins gehören immer einem bestimmten Typ an.

Momentan gibt es Plugins aus den Bereichen authentication, content, editors, editors-xtd, search, system und xmlrpc.

Im Plugins-Bereich können Sie die einzelnen Funktionalitäten aktivieren und deaktivieren (Abbildung 10.23). Plugins haben bis auf einzelne Ausnahmen wenige bis keine veränderbaren Einstellungen, da sie meistens für einen ganz speziellen Zweck programmiert und optimiert sind.

Erweiterungen - Plugins
Abbildung 10.23: Erweiterungen - Plugins

10.6.1 Authentication-Plugins

In Joomla! 1.5 können sich Benutzer über verschiedene Arten authentifizieren. Das hat den Vorteil, dass Ihre Benutzer sich die lästige Registrierung auf der Website ersparen können und sich keinen neuen Benutzernamen und kein neues Passwort merken müssen. Um die verschiedenen Authentifizierungen zu nutzen, müssen Sie die Plugins veröffentlichen.

Joomla

Die »normale« Authentifizierung nach einer vorherigen Registrierung auf der Website.

LDAP

LDAP ist ein Netzwerkprotokoll, das bei so genannten Verzeichnisdiensten zum Einsatz kommt. Es vermittelt die Kommunikation zwischen dem so genannten LDAP-Client (in unserem Falle der Joomla!-Website) und dem Verzeichnis, aus dem personenbezogene Daten ausgelesen werden. In Firmen sind LDAP-Verzeichnisse5 weit verbreitet, und so liegt es nahe, in einem Firmen-Intranet über diese Art der personenbezogenen Daten zuzugreifen.

Das LDAP-Plugin benötigt viele Parametereinstellungen und ist damit die Ausnahme von der Regel. Falls Sie LDAP einsetzen, sind die Parametereinstellungen vermutlich selbsterklärend.

OpenID

Die Idee von OpenID6 ist, dass sich Benutzer mit einem Benutzerkonto eines OpenID-Servers bei Ihrer Website anmelden können, ohne ein eigenes Benutzerkonto und Passwort zu besitzen. Je nach Ausrichtung Ihrer Website kann das ein großer Vorteil sein.

GMail

Google bietet mit dem Gmail-Service die Möglichkeit der Authentifizierung über die E-Mail-Adresse. Wenn der Benutzer ein Gmail-Konto hat, so kann er sich mit seinem Gmail- User bei Ihnen anmelden. Je nach Ausrichtung Ihrer Website kann das ein großer Vorteil sein.

10.6.2 Content-Plugins

Image

Dieses Plugin ist aus Kompatibilitätsgründen zu Joomla! 1.0.x enthalten. Es wertet den Befehl {mosimage} im Text eines Beitrages aus und zeigt dann das zugeordnete Bild an. Es gibt hartnäckige Verfechter dieser Art, Bilder einzustellen. Der entscheidende Vorteil ist, dass die Bilder leicht per Plugin bearbeitet werden können. In den Parametern können Sie den Außen- und den Innenabstand zu den Bildern einstellen.

Page Navigation

Das ist das Plugin, das die vor- und nächstes-Funktionalität unter den Beiträgen einblendet. Zur Benutzung muss es aktiviert sein.

SEF

SEF steht für Search Engine Friendly. Dieses Plugin erzeugt die suchmaschinenfreundlichen URLs für Inhaltselemente. Falls Sie das entsprechende Feature benutzen, muss dieses Plugin aktiviert sein.

Rating

Das ist das Plugin, das die Bewertungsleiste über den Inhalten erstellt. Zur Benutzung muss es aktiviert sein.

Email Cloaking

Dieses Plugin wandelt eine E-Mail-Adresse, die Sie in einem Inhaltselement in der Form name@example.com eingeben, in einen Link um und maskiert die E-Mail-Adresse mit JavaScript. Das hat den Vorteil, dass E-Mail-Adressen auf Ihrer Website nicht so einfach von E-Mail-Sammel-Programmen ausgelesen werden können.

GeSHi

Das GeSHI-Plugin formatiert wie das code-Plugin. GeSHI kann allerdings Syntax Highlighting und sorgt für eindrucksvolle Listings auf der Website, wenn Sie den zu formatierenden Quellcode in <pre> </pre> -Tags einbinden7 (Listing 10.1).

<pre> 
if ($zahl > 0){
echo $zahl;
}
else{
$zahl++;
}
</pre>

Listing 10.1: Einsatz des Plugins GeSHI

Load Module

Das Load Module-Plugin erlaubt es, Module innerhalb von Beiträgen zu laden. Aufgerufen wird es beispielsweise mit {loadposition user1}.

Pagebreak

Das Pagebreak-Plugin kümmert sich um Joomla! 1.0.x-Seitenumbrüche in Beiträgen. Es wird wie das Image-Plugin einfach in den Inhalt eingefügt. Außer einem einfachen Seitenumbruch können Sie auch verschiedene Überschriften und Seitentitel definieren. In Joomla! 1.5 übernimmt diese Arbeit der Seitenumbruch-Dialog (siehe Kapitel 8.2.2, Seite 159).

Syntax:

<hr title="Seitentitel" alt="Seitentitel"   class="system-pagebreak">

10.6.3 Editors-Plugins

No Editor

Dieses Plugin muss aktiviert sein, wenn Sie die textarea-Felder ohne Editor anbieten wollen.

TinyMCE 2.0

Dieses Plugin muss aktiviert sein, wenn Sie textarea-Felder mit dem TinyMCE 2.0-Editor anbieten wollen.

XStandard

Dieses Plugin muss aktiviert sein, wenn Sie textarea-Felder mit dem XStandard-Editor anbieten wollen (Siehe auch Kapitel 6, Seite 108/109)

10.6.4 Editors-xtd Plugins

Editor Button Image/Pagebreak/Readmore

Diese drei Plugins generieren die drei Buttons unterhalb des Editorfensters. Durch Klick auf diese Buttons startet der Bild einfügen-Dialog, der Seitenumbruch-Dialog und der Weiterlesen-Dialog.

10.6.5 Search-Plugins

Die Search-Plugins für Content, Weblinks, Contacts, Categories, Sections, Newsfeeds können nach Wunsch aktiviert werden. Sie beeinflussen die Suche des Search-Moduls. Um Suchergebnisse aus den entsprechenden Bereichen zu erhalten, müssen die Plugins aktiviert sein. Wenn Zusatzkomponenten durchsucht werden sollen, müssen entsprechende Plugins zur Verfügung stehen.

10.6.6 System-Plugins

Log

Dieses Plugin stellt das Systemlog zur Verfügung. Sie können den Ort, an dem sich die Logdatei befindet, beeinflussen (siehe Kapitel 6.4.2). In Listing 10.2 sehen sie ein Beispiel einer solchen Logdatei.

#Version: 1.0
#Date: 2008-07-01 23:39:56
#Fields: date time level c-ip status comment
#Software: Joomla! 1.5.4 Production/Stable [ Naiki ] 6-July-2008 22:00 GMT
2008-07-11 23:39:56 - 127.0.0.1 - stories/france
2008-07-12 12:00:12 - 127.0.0.1 FAILURE: Invalid password
2008-07-12 13:44:11 - 127.0.0.1 FAILURE: Invalid password

Listing 10.2: Logdatei

Debug

Hier wird die Debug-Funktionalität bereitgestellt (siehe Kapitel 6.4.2, Seite 118). Sie können in den Parametern konfigurieren, welche Informationen angezeigt werden sollen.

Legacy

Um dieses Plugin gab und gibt es mächtige Diskussionen. Es ist das Bindeglied zu Erweiterungen aus der Joomla! 1.0-Welt. Wenn dieses Plugin aktiviert ist, gestaltet sich eine Migration von Joomla! 1.0 auf Joomla! 1.5 erheblich einfacher.
Joomla! arbeitet dann in einem Kompatibilitätsmodus. Momentan verbraucht dieser Mode mehr Hauptspeicher.

Cache

Hier wird das Verhalten des Caches eingestellt. Sie können den Browser-Cache beim Client nutzen und die grundsätzliche Caching-Zeit in Minuten festlegen.

Remember Me

Hier handelt es sich um eine Methode, die Zugangsdaten lokal in einem Cookie zu speichern. Wenn man sich auf der Website wieder anmelden will, stehen die Daten bereits im Formular. Die Speicherung findet nur auf ausdrücklichen Wunsch nach Ankreuzen einer Checkbox statt.

Backlink

Dieses Plugin sorgt dafür, »alte« Joomla! 1.0-Links zu Inhalten korrekt in die Joomla! 1.5-Logik zu übersetzen.

10.6.7 User-Plugins

Joomla!

Dieses Plugin erzeugt nach der ersten erfolgreichen Authentifizierung einen Benutzer in den Datenbanktabellen.

10.6.8 xmlrpc-Plugins

Die XML-RPC-Schnittstelle ist eine Möglichkeit, Joomla! von »außen« zu bedienen.

XML_RPC_Joomla

Dieses Plugin ermöglicht die Steuerung von Joomla!-spezifischen Framework-Funktionen über die XML/RPC-Schnittstelle.

XML-RPC-Blogger API

Dieses Plugin ermöglicht das Einstellen von Inhalten von anderen Plattformen, beispielsweise Flickr-Fotos. Momentan wird die Blogger-Schnittstelle unterstützt. Viele Web 2.0-Plattformen setzen die MetaWeblog-API ein. Auch diese Erweiterung wird es in Joomla! 1.5 geben.8 Als Parameter können Sie für das Plugin den Bereich und die Kategorie auswählen, in die diese Beiträge eingestellt werden.

 

10.1 Installieren-Deinstallieren

Grundsätzlich kann jeder eine Erweiterung für Joomla! schreiben, nach gewissen Regeln verpacken und per Joomla!-Installation in die Website integrieren. In diesem Bereich finden Sie eine Übersicht über die installierten Erweiterungen. Die Maske, die nach einem Aufruf des Menüpunkts Erweiterungen - Installieren/Deinstallieren erscheint, bietet drei Möglichkeiten, Erweiterungen zu installieren (Abbildung 10.2)1.

Erweiterungen - Installieren/Deinstallieren
Abbildung 10.2: Erweiterungen - Installieren/Deinstallieren

  • Hochladen einer Paketdatei
  • Installation aus einem Verzeichnis
  • Installation durch Eingabe einer URL

Die Reiter Komponenten, Module, Plugins und Sprachen enthalten jeweils Auflistungen der installierten Erweiterungen. Wir werden auf die Installation von zusätzlichen Komponenten im Kapitel 12 eingehen.

10.1.1 Installierte Komponenten, Module, Plugins, Sprachen und Templates

In den jeweiligen Reitern, beispielsweise unter Komponenten, sehen Sie eine Liste der standardmäßig installierten Komponenten. Sie sehen Informationen über die Version der Komponenten, das Datum der Erstellung und den Autor. Falls Sie eine Komponente deinstallieren wollen, wählen Sie sie aus und klicken in der Werkzeugleiste auf das Icon Deinstallieren.

Achtung

Die Komponente ist nach der Deinstallation wirklich verschwunden – manchmal mit allen gespeicherten Daten! Es gibt keinen Komponenten-Papierkorb!

Diese Verhaltensweise ist durchaus so gewollt. Es obliegt dem Komponentenentwickler, für welche Strategie er sich entscheidet. Manchmal ist es sinnvoll die Tabellen nicht zu löschen, beispielsweise bei einem Update. Manchmal allerdings ist es wichtig, wirklich alle Tabellen, die erzeugt worden sind, rückstandslos zu löschen. Im Kapitel 15 erfahren Sie mehr über diese Techniken. Lesen Sie unbedingt die Dokumentation der entsprechenden Komponente, um mit ihrem Verhalten vertraut zu sein.

  • 1Siehe auch Kapitel 12.

1.3 Struktur eines Web Content Management Systems (WCMS)

Am Beispiel von Joomla! werde ich hier kurz die Struktur eines WCMS erläutern.

Front- und Backend

Ein Web Content Management System (WCMS) besteht meist aus einem Frontend und einem Backend. Das Frontend ist die Website, wie sie der Besucher und der dort angemeldete Benutzer sehen.

Das Backend dagegen ist die Verwaltungsanwendung, die im Falle eines WCMS ebenfalls im Internetbrowser abgebildet wird. Im Backend wird von berechtigten Personen konfiguriert, gepflegt, aufgeräumt, werden Statistiken erstellt und oft auch neue Inhalte erzeugt. Das Backend findet man unter einer anderen URL als die Website.

Zugriffsrechte

Immer wenn es um Management geht, geht es um das clevere Verwalten von vorhandenen Ressourcen. In einem WCMS werden den beteiligten Personen User- und Gruppennamen zugeordnet und diese mit unterschiedlichen Zugriffsrechten versehen. Das geht von einem einfachen registrierten Benutzer über einen Autor und Editor bis hin zum Superadministrator, der alles darf. Abhängig von den Rechten erscheint das Frontend dann mit anderen Inhalten, der Möglichkeit, Inhalte direkt auf dem Frontend zu bearbeiten, oder der Benutzer erhält die Erlaubnis, im Backend zu arbeiten.

Inhalte

Inhalte können verschiedener Art sein. Im einfachsten Fall ist es ein Text. Inhalt kann aber auch ein Bild, ein Link, ein Musikstück, ein Schnipsel aus einer Anwendung wie Google Maps oder die Kombination aus allem sein. Um den Überblick über die Inhalte zu behalten, bettet man sie in Strukturen ein, beispielsweise Texte in verschiedene Kategorien. Auch die Kategorien sind natürlich Inhalte, die verwaltet werden müssen. Newsfeeds sind sehr populär geworden, da der Internet Explorer 7 die Lesemöglichkeit von RSS Feeds zum ersten Mal anbot. Heute benutzen immer noch weit über 80% der Menschheit diesen Browser. Mit Newsfeeds besteht die Möglichkeit, Daten aus anderen Quellen zu integrieren. Die Integration, Kategorisierung, Bewertung, das „Mashen“ und die Aktualisierung von Newsfeed-Inhalten spielen eine immer größere Rolle und werden immer mehr zum Klebstoff zwischen unterschiedlichen Websites.

Extensions

Komponenten, Module, Templates und Plugins werden als Extensions (Erweiterungen) bezeichnet. Sie stellen zusätzliche Funktionen bereit, die im Kern von Joomla nicht enthalten sind.

Templates

Ein Template ist eine Art visuelle Schablone, die über die Inhalte gelegt wird. Ein Template definiert die Farben, Schriftarten, Schriftgrößen, Hintergrundbilder, Abstände und Aufteilung der Seite und somit alles, was mit dem Erscheinungsbild der Seite zu tun hat. Ein Template besteht aus mindestens einer HTML-Datei für die Struktur der Seite und einer CSS-Datei für das Design. Es kann aber auch erheblich komplexer in der Struktur sein und Joomla!-Daten barrierefrei oder für einen völlig anderen Zweck aufbereiten.

Plugins

Ein Plugin ist ein Stück Programmiercode, das sich an bestimmte Stellen im Joomla!-Framework »anheftet«, um die Funktionalität zu verändern. Beispielsweise können innerhalb eines Inhaltstextes Plugins genutzt werden, um den Inhalt eines Moduls in einen Text zu laden. Auch bei der Website-weiten Suche werden Plugins benutzt, um Zusatzkomponenten in die Suche zu integrieren. Plugins werden manchmal wie eine Makrosprache in Joomla! genutzt.

Module

Ein Modul ist ein Bereich zusätzlich zum Inhaltsbereich im Frontend, der meistens Daten aus einer Komponente anzeigt. Module können an vordefinierten Stellen (Positionen) im Template angezeigt werden. Module mit Bezug auf die Komponenten werden genutzt, um die Inhalte in der gewünschten Form an anderen Stellen als im Inhaltsbereich im Template zu integrieren. Das Modul Letzte Neuigkeiten liefert beispielsweise die Überschriften der zuletzt über die Content Komponente eingestellten fünf Beiträge an das Template. Ein anderes Modul ermittelt z.B. die Anzahl der User, die gerade online sind und zeigt das Ergebnis an.

Komponenten

Joomla! muss erweiterbar sein und mit den Anforderungen wachsen. Mit dem Begriff Komponenten werden in Joomla! Erweiterungen bezeichnet, die zusätzliche Funktionalität zur Verfügung stellen und meistens über einen eigenen Bereich in der Joomla!-Administration verfügen. Typische Komponenten der vergangenen Jahre sind beispielsweise ein Online-Shop, eine Bildergalerie, ein Newsletter- oder ein Forensystem. Heute spielen Dinge wie Suchmaschinenoptimierung, Benutzerrechte, mehrseitige Formulare und variable Inhaltsstrukturen eine zunehmend größere Rolle.

Komponenten enthalten die Geschäftslogik Ihrer Seite und stellen die Inhalte im Inhaltsbereich (Main Body) der Website dar.

Workflow

Unter Workflow versteht man einen Arbeitsablauf. Der deutsche Dreisatz (stempeln, lochen, abheften) ist ein Beispiel für einen Workflow. Auch ein Rezept zum Backen eines Kuchens ist ein Workflow. Da bei einem CMS meist mehrere Menschen die Inhalte bearbeiten, ist ein gut organisierter Workflow eine echte Hilfe.

Früher sprach man in diesem Zusammenhang auch von Arbeitsvorräten, die ein Benutzer hat. Beispielsweise sieht der Bearbeiter eine Liste von unveröffentlichten Neuigkeiten, die er auf Richtigkeit zu untersuchen hat. Nach der Prüfung schaltet er die Neuigkeiten frei, und sie erscheinen im Arbeitsvorrat des Publishers, der sich nun überlegen muss, ob er die Nachricht auf der Startseite veröffentlicht.

Konfigurationseinstellungen

Hier werden Einstellungen festgelegt, die für die gesamte Homepage gelten. Dazu gehören etwa der Titeltext im Browserfenster, Schlüsselwörter für Suchmaschinen, Schalter, die es erlauben oder verbieten, sich auf der Seite anzumelden, die die gesamte Seite offline oder online schalten, und viele weitere Funktionen.

API

Eine Programmierschnittstelle12 (API) gehört heute zum „guten Ton“. Es muss möglich sein (und ist es auch), Joomla! von anderen Programmen aus anzusprechen und gewissermaßen fernzubedienen. Das ermöglicht ganz neue Anwendungen, die vorher mit Joomla! nicht realisierbar waren. Die API ist das wichtigste Bindeglied zwischen Third Party Extensions Entwicklern und dem Joomla!-Kern.

Inhalt abgleichen