Rheinwerk Computing < openbook > Rheinwerk Computing - Professionelle Bücher. Auch für Einsteiger.
Professionelle Bücher. Auch für Einsteiger.
 
Inhaltsverzeichnis
Vorwort
Teil I Grundlagen
1 Einleitung
2 Testumgebung einrichten
3 Live-Umgebung einrichten
4 Website planen
Teil II Joomla! benutzen
5 Website-Frontend kennenlernen
6 Administrations-Backend bedienen
7 Content verwalten
8 Contentpflege konfigurieren
9 Menüs aufbauen
10 Layout und Design anpassen
11 Benutzerverwaltung einrichten
12 Mehrsprachigkeit aktivieren
13 System konfigurieren
Teil III Joomla! erweitern
14 Erweiterungen aktivieren
15 Offizielle Joomla!-Komponenten
16 Empfohlene Erweiterungen
17 Joomla! als Content-Management‐System
18 Joomla! als Community-Plattform
19 Joomla! als Online-Shop
Teil IV Joomla! warten
20 Wartung allgemein
21 Joomla! und Content deployen
22 Sicherheit ausbauen
23 Performance- und Suchmaschinenoptimierung
24 Notfallmaßnahmen
Teil V Joomla!-Erweiterungen entwickeln
25 Grundlagen zur Erweiterungsentwicklung
26 Templates entwickeln
27 Plugins entwickeln
28 Module entwickeln
29 Komponenten entwickeln
30 Erweiterungen veröffentlichen
Stichwortverzeichnis

Jetzt Buch bestellen
Ihre Meinung?

Spacer
<< zurück
Joomla! 3 von Richard Eisenmenger
Das umfassende Handbuch
Buch: Joomla! 3

Joomla! 3
Pfeil 25 Grundlagen zur Erweiterungsentwicklung
Pfeil 25.1 Entwicklungsumgebung einrichten
Pfeil 25.1.1 Editor auswählen
Pfeil 25.1.2 Integrierte Entwicklungsumgebungen 
Pfeil 25.1.3 Programmierhilfen finden
Pfeil 25.1.4 Debuggen
Pfeil 25.2 Joomla!-Programmierumfeld verstehen
Pfeil 25.2.1 GPL einsetzen
Pfeil 25.2.2 Konventionen einhalten
Pfeil 25.2.3 Model-View-Controller-Architekturmuster verstehen
Pfeil 25.2.4 Erweiterungstypen aus Entwicklungssicht
Pfeil 25.3 Gemeinsame Joomla!-Elemente
Pfeil 25.3.1 XML-Manifest
Pfeil 25.3.2 JForm-Feldtypen
 
Zum Seitenanfang

25.2    Joomla!-Programmierumfeld verstehen Zur vorigen ÜberschriftZur nächsten Überschrift

Bevor Sie mit dem Programmieren starten, studieren Sie die folgenden Seiten, auf denen Sie die Grundlagen der Joomla!-Umgebung kennenlernen. Besonders wichtig ist dabei das Verständnis um das Architekturmuster Model-View-Controller. Die Einhaltung der Coding-Standards ist relevant, wenn Sie planen, Ihre Erweiterungen in der Joomla!-Community zu veröffentlichen.

 
Zum Seitenanfang

25.2.1    GPL einsetzen Zur vorigen ÜberschriftZur nächsten Überschrift

Joomla! wird unter der GNU General Public License, kurz GPL, vertrieben, eine häufig im Open-Source-Bereich eingesetzte Lizenz, die besagt, dass Derivate einer Software mit den gleichen Freiheiten ausgestattet sein müssen wie das Original. So garantiert GPL der Joomla!-Community eine stete Weiterentwicklung des Cores und der Erweiterungen, da Sie als Entwickler jederzeit den Quellcode anderer Komponenten für eigene Ideen studieren und weiterentwickeln dürfen. Aus diesem Grund veröffentlicht das Joomla! Extensions Directory ausschließlich Erweiterungen, die unter einer General Public License oder einer GPL-ähnlichen Lizenz vertrieben werden.

Für Entwickler von Erweiterungen stellt sich da die Frage, welche Motivation hinter einer Veröffentlichung der harten Arbeit steht. Zum einen ist da der Reputationsgewinn, falls eine Erweiterung kostenlos vertrieben wird. Agenturen oder Full-Stack-Developer entwickeln für einen Kunden eine spezielle Komponente, die sie dann, in verallgemeinerter Version, an die Community weiterreichen. Das wiederum weckt möglicherweise das Interesse eines anderen Kunden, der auf diese Weise von den Fertigkeiten und dem Portfolio des Entwicklers erfährt. Win-win.

Es ist aber auch durchaus möglich, trotz Open-Source-Charakter und GPL Geld mit Erweiterungen zu verdienen. Die GPL verbietet den Verkauf von Software nicht, sofern sie den unverschlüsselten Quellcode enthält. Allerdings darf es keine Beschränkungen hinsichtlich der Weiterverwertung der Software geben; eine gekaufte Erweiterung ist also auf beliebig vielen Joomla!-Instanzen einsetzbar. Darum entscheiden sich kommerziell orientierte Erweiterungsentwickler für ein anderes lukratives Modell: Der Benutzer kauft nicht die Software an sich, sondern ein Abonnement für zukünftige Updates und/oder zeitlich begrenzten Support. Der muss nicht auf Bugfixes beschränkt sein, sondern kann auch Feature-Wünsche beinhalten. Und hier schließt sich der Kreis, denn der Entwickler ist nicht an strenge Release-Zyklen gebunden, sondern erweitert die Funktionalität seiner Erweiterung Zug um Zug auf Anfrage, erhöht damit wieder die Attraktivität des Produkts. Und je attraktiver die Erweiterung ist, desto mehr Abonnementinteressenten gibt es, die eine Finanzierung möglich machen. Eine erfolgreiche Erweiterung wächst also gleichzeitig im Funktionsumfang und der Abonnentenbasis, die die Weiterentwicklung sponsoren.

Diese Vielseitigkeit bei der Benutzung der GPL macht die Entwicklung im Joomla!-Umfeld attraktiv und das Lizenzmodell so erfolgreich. Überlegen Sie sich gut, welchen Weg Sie gehen möchten, und seien Sie nicht schüchtern, den Quellcode des Cores und anderer Erweiterungen zu studieren, um Ihre Erweiterung vielleicht noch angriffssicherer und benutzerfreundlicher zu gestalten.

 
Zum Seitenanfang

25.2.2    Konventionen einhalten Zur vorigen ÜberschriftZur nächsten Überschrift

Als Coding-Standard kommen die verbreiteten PEAR-Konventionen mit einigen Besonderheiten zum Einsatz. Die kompletten Joomla!-Coding-Standards finden Sie unter http://joomla.github.io/coding-standards, hier einige der wichtigsten Regeln:

  • Alle Programmdateien werden als UTF-8 gespeichert, in der Regel kein Problem mit einem modernen Texteditor (inklusive Windows Notepad).

  • Alle Programmdateien enthalten am Anfang einen Doc-Block; das sind Meta-Informationen in Kommentarblöcken, die Aufschluss über das dieser Datei zugehörige Paket und den Autor geben.

  • Quelltext wird grundsätzlich mit vier Leerzeichen langen Tabs (nicht Leerzeichen) eingerückt; eine Ausnahme sind HTML und JavaScript, wo auch vier Leerzeichen erlaubt sind.

  • Programmzeilen sollten maximal 150 Zeichen breit sein.

  • Kommentare, Klassen-, Funktions- und Variablennamen sollten in (britischem) Englisch verfasst sein, Joomla! ist eine internationale Open-Source-Community.

  • PHP-Programmblöcke folgen dem sogenannten Allman-Stil, d. h., die geschweifte Klammer { eines beginnenden Programmblocks kommt nicht mehr in die Zeile der vorhergehenden Anweisung, sondern an den Anfang der nächsten Zeile (bei CSS und JavaScript bleibt‹s beim PEAR/K&R-Stil).

  • Beenden Sie PHP-Dateien nicht mit ?>, da das im Fall von Joomla! problematische Auswirkungen auf die HTML-Ausgabe haben kann (folgende Whitespaces und Leerzeichen verrücken HTML-Elemente).

  • Klassen-, Funktions- und Variablennamen schreiben Sie im CamelCase, der KamelHöckerSchreibweise mit sogenannten Binnenmajuskeln. Klassen beginnen mit einem Groß-, Funktionen und Methoden mit einem Kleinbuchstaben.

  • Bei Datenbankabfragen setzen Sie vor Tabellennamen das Kürzel #__ (Hash-Zeichen mit zwei Unterstrichen), damit Joomla! dort das für die aktuelle Installation zufällig erzeugte Tabellenpräfix einsetzt.

  • XML: Ein Tag und ein Attribut pro Zeile, Tags mit mehreren Attributen verteilen sich also über mehrere eingerückte Zeilen. Ausnahme sind Tags, die über wenige Attribute verfügen und 100 Zeichen Breite nicht überschreiten.

  • XML: name, type, label und description sind stets die zuerst zu nennenden Attribute.

Der beste Ratschlag zum Vertrautwerden mit diesen Konventionen ist wie so häufig: Arbeiten Sie mit Beispielen. Werfen Sie einen Blick in vorhandenes Codematerial, nicht nur von Erweiterungen, sondern auch des Joomla!-Cores, und kopieren Sie sich interessante Passagen heraus. Konfigurieren Sie das Einrückverfahren (Tabs statt Leerzeichen) schon jetzt in Ihrem Editor.

 
Zum Seitenanfang

25.2.3    Model-View-Controller-Architekturmuster verstehen Zur vorigen ÜberschriftZur nächsten Überschrift

Software-Architekturmuster dienen dazu, einen für die anstehende Aufgabe möglichst eleganten Weg zu finden, Daten entgegenzunehmen, zu verarbeiten und das Verarbeitungsergebnis auszugeben. So, wie ein Taschenrechner zwei Summanden einsetzt, um über die Addition eine Summe zu bilden, erhält eine Webapplikation ihre Anfrage durch die URL und setzt einen internen Mechanismus in Gang, um am Ende eine Webseite zu generieren. In Joomla! involviert dieser interne Mechanismus in der Regel Datenbankabfragen und Ausgabetemplates, die technisch nichts miteinander zu tun haben und darum auch im Programmdesign voneinander getrennt sind. So kann ein HTML- und CSS-Designer gemütlich an seinem Template arbeiten, während der PHP-Programmierer die Datenbankanbindung zähmt. Joomla! setzt dazu das bewährte Architekturmuster Model-View-Controller (MVC) ein, das die Dateistrukturen und Schnittstellen zwischen Datenbeschaffung und -ausgabe definiert. Durch die Trennung entstehen drei Komponenten:

  • Model
    Die Anbindung zur Datenbank und Aufbereitung der Daten für die bevorstehende Ausgabe. Da diese Aufbereitung verschiedene Formen annimmt, z. B. eine Beitragsliste oder alle Details zu einem einzelnen Beitrag, spricht man von einem Modell dieser Daten.

  • View
    Der View, der Blick, auf die Daten nimmt sich das Datenmodell und setzt die Inhalte in das passende Ausgabetemplate. Auch hier sind Varianten möglich, z. B. die Ansicht der Beitragsliste oder die Formularseite mit den Eingabefeldern aller Beitragsdetails.

  • Controller
    Bevor Model und View mit ihren Arbeiten loslegen können, sieht sich der Controller, der Steuermann, erst mal an, wie die Aufgabe lautet. Er ist die Schaltzentrale, die entscheidet, welche Daten das Model verarbeitet und der View darstellt.

Diese drei Akteure berücksichtigend, erfolgt die Anfrage nach einer Joomla!-Webseite stets nach dem gleichen Schema (siehe Abbildung 25.6):

  1. Zur Ermittlung der eingesetzten Komponente analysiert Joomla! die URL und ruft die im URL-Parameter übergebene Komponente auf, z. B. com_content für die Beitragsverwaltung.

  2. Der Controller der Komponente bearbeitet die Anfrage und wählt das Model aus, das die angeforderten Daten zurückgibt. Außerdem entscheidet der Controller, in welchem View die Daten ausgegeben werden, ebenfalls ein URL-Parameter, z. B. view=featured für die Haupteinträge.

  3. Das Model beschafft sich die Daten aus der Datenbank und verarbeitet sie, der View holt sich die Daten aus dem Model und fügt sie in seine Ausgabe zwischen die HTML-Tags.

Inhaltsanfrage, -bearbeitung und -ausgabe in der MVC-Architektur von Joomla!

Abbildung 25.6    Inhaltsanfrage, -bearbeitung und -ausgabe in der MVC-Architektur von Joomla!

Eingebettet ist dieser Prozess in das omnipräsente Joomla!-Framework, das allerlei Helfer bereitstellt, z. B. zur Anbindung der Datenbank oder Gestaltung eines Webseitenformulars, Programmierfundamente, die die Entwicklung einer Joomla!-Erweiterung verhältnismäßig einfach machen.

Hinweis: Im Komponentenumfeld von Joomla! ist oft nur ein Controller mit im Spiel, das muss aber nicht so sein. Bei der Komponentenentwicklung lernen Sie den Haupt-/Komponenten-Controller kennen sowie Unter-Controller pro View.

Hintergrund: Joomla! Framework contra Joomla! CMS!, MVC alt gegen neu

Im Umfeld von Joomla! sind aktuell zwei Versionen des MVC-Frameworks im Einsatz. Grund ist die voneinander getrennte Entwicklung des Frameworks und des eigentlichen Content-Management-Systems. Prinzipiell ist das Joomla!-Framework nämlich in der Lage, als Fundament für beliebige Webapplikationen zu dienen; das Joomla!-Content-Management-System ist lediglich eine Variante solch einer möglichen Applikation.

Die Trennung hat den Vorteil, dass jedes Entwicklerteam konzentriert in seinem Spezialgebiet arbeitet. Der Nachteil ist, dass diese Arbeiten nicht gegeneinander synchronisiert werden. So bereitet das Framework-Team seit einiger Zeit eine moderne MVC-Variante vor, deren Entwicklungen aber noch nicht abgeschlossen sind. Deshalb sind alle Erweiterungsentwickler angehalten, das alte Framework weiterzuverwenden. Mit einem Wechsel zum neuen System ist vor Joomla! 4 nicht zu rechnen. Für Sie heißt das: Greifen Sie bei der Wahl Ihrer Klassen aus der Joomla!-API immer auf die älteren Versionen zurück, die in der Regel mit der Endung Legacy gekennzeichnet sind. Im Rahmen der Erläuterungen in den folgenden Kapiteln begegnen Sie beispielsweise den Klassen JControllerLegacy oder JViewLegacy. In Ihrer Joomla!-Installation finden Sie die vollständige Sammlung der Legacy-Klassen übrigens unter /libraries/legacy/.

 
Zum Seitenanfang

25.2.4    Erweiterungstypen aus Entwicklungssicht Zur vorigen ÜberschriftZur nächsten Überschrift

Joomla! unterscheidet vier, wenn man Sprachpakete hinzuzählt, fünf Erweiterungstypen, die sich an verschiedene Stellen des Eingabe-Verarbeitung-Ausgabe-Prozesses einklinken.

  • Plugin
    Plugins sind systemnahe, tief verdrahtete Erweiterungen, die sich direkt an Ereignisse ankoppeln, die während dem Betrieb von Joomla! stattfinden, z. B. bei der Darstellung von Inhalten, der Anmeldung eines Benutzers oder kurz vor Aktualisierung eines Datenbankeintrags. Auf diese Weise sind Plugins in der Lage, alle erdenklichen Funktionalitäten in das Content-Management-System einzuschleusen, stellen aber, abgesehen von der Konfigurationsseite, keine Administrationsoberfläche zur Verfügung.

  • Komponente
    Der komplexeste Erweiterungstyp ist die Komponente, deren Abbildung vollständig per Model-View-Controller stattfindet, da ihr Hauptanwendungszweck in der Eingabe, Verarbeitung und Ausgabe von Daten besteht. Joomla!-Features wie Beiträge, Menüs, Benutzerverwaltung und sogar der Erweiterungsmanager sind allesamt Komponenten mit Administrationsoberfläche, Datenbankschicht und Backend- und/oder Frontend-Ausgabe.

  • Modul
    Module sind reine Darstellungselemente, die sich Inhalte aus der Datenbank holen und an einer per Layoutposition definierten Stelle im Template ausgeben. Als solche begleiten sie oft die die gesamten Webseiten dominierenden Standardausgaben von Komponenten.

  • Template
    Das Template steht ganz am Ende des Eingabe-, Verarbeitungs- und Ausgabeprozesses und nimmt alle von einer bestimmten Erweiterung bereitgestellten Inhalte auf und setzt sie in von HTML-Code umgebene Platzhalter. Templateprogrammierung erfordert hauptsächlich Frontend-Fertigkeiten wie HTML und CSS, und einige rudimentäre Kenntnisse von PHP.

 


Ihre Meinung

Wie hat Ihnen das Openbook gefallen? Wir freuen uns immer über Ihre Rückmeldung. Schreiben Sie uns gerne Ihr Feedback als E-Mail an kommunikation@rheinwerk-verlag.de.

<< zurück
 Zum Rheinwerk-Shop
Zum Rheinwerk-Shop: Joomla! 3 Joomla! 3
Jetzt Buch bestellen

 Ihre Meinung?
Wie hat Ihnen das Openbook gefallen?
Ihre Meinung

 Buchempfehlungen
Zum Rheinwerk-Shop: HTML5 und CSS3
HTML5 und CSS3


Zum Rheinwerk-Shop: Schrödinger lernt HTML5, CSS und JavaScript
Schrödinger lernt HTML5, CSS und JavaScript


Zum Rheinwerk-Shop: Einstieg in PHP 7 und MySQL
Einstieg in PHP 7 und MySQL


Zum Rheinwerk-Shop: PHP 7 und MySQL
PHP 7 und MySQL


Zum Rheinwerk-Shop: Erfolgreiche Websites
Erfolgreiche Websites


 Lieferung
Versandkostenfrei bestellen in Deutschland, Österreich und der Schweiz
InfoInfo

 
 


Copyright © Rheinwerk Verlag GmbH 2019
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das Openbook denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt.
Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.

 
Nutzungsbestimmungen | Datenschutz | Impressum

Rheinwerk Verlag GmbH, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, service@rheinwerk-verlag.de

Cookie-Einstellungen ändern