Joomla!-Extensions. mit PHP entwickeln. Know-how ist blau. FRANZIS. Clemens Gull

Ähnliche Dokumente
Clemens Gull. Joomlal-Extensions. mit PHP entwickeln. Mit 322 Abbildungen

PHP Kurs Online Kurs Analysten Programmierer Web PHP

Inhaltsverzeichnis VII

Step by Step Webserver unter Windows Server von Christian Bartl

Objektorientierte Programmierung für Anfänger am Beispiel PHP

WordPress lokal mit Xaamp installieren

Patch Management mit

InfoPoint vom 9. November 2011

OP-LOG

Das Content-Management-System OpenCms im Vergleich mit TYPO3 und Joomla. Seminarvortrag von Wolfgang Neuß

Multimedia im Netz Wintersemester 2011/12

teischl.com Software Design & Services e.u. office@teischl.com

PHPNuke Quick & Dirty

WEBAPPLIKATIONEN MIT PHP. Wo gibt es Hilfe? Wie fang ich an?

Er musste so eingerichtet werden, dass das D-Laufwerk auf das E-Laufwerk gespiegelt

Installationsanleitung WordPress auf greenwebhosting

GITS Steckbriefe Tutorial

Zugriff auf Daten der Wago über eine Webseite

Legen Sie nun dieses Verzeichnis mit dem Namen "joomla" hier an: C:xampphtdocs.

Einführung in PHP. (mit Aufgaben)

Themen heute (Tag 5)

Backend

Content Management mit Joomla! 1.7 für Kids Hanke

TIMERATE AG Tel Falkenstrasse Zürich Joomla Templates Kursunterlagen

Eine Anwendung mit InstantRails 1.7

Lizenzen auschecken. Was ist zu tun?

mehr funktionen, mehr e-commerce:

This manual cannot be redistributed without permission from joomla-monster.com or vorlagenstudio.de

PHP Programmierung. Seminarunterlage. Version 1.02 vom

Installation des CMS-Systems Contao auf einem Windows-Rechner mit XAMPP

Verwalten Sie Ihre Homepage von überall zu jeder Zeit! Angebote und Informationen auf

Tutorial -

2. Einrichtung der ODBC-Schnittstelle aus orgamax (für 32-bit-Anwendungen)

Plugins. Stefan Salich Stand

Die Beschreibung bezieht sich auf die Version Dreamweaver 4.0. In der Version MX ist die Sitedefinition leicht geändert worden.

Nach der Anmeldung im Backend Bereich landen Sie im Kontrollzentrum, welches so aussieht:

Tutorial. In diesem Tutorial möchte ich die Möglichkeiten einer mehrspracheigen Web-Site erläutern.

Design anpassen eine kurze Einführung

SANDBOXIE konfigurieren

HTML5. Wie funktioniert HTML5? Tags: Attribute:

Einrichten einer mehrsprachigen Webseite mit Joomla (3.3.6)

Universal Dashboard auf ewon Alarmübersicht auf ewon eigener HTML Seite.

MailUtilities: Remote Deployment - Einführung

php Hier soll ein Überblick über das Erstellen von php Programmen gegeben werden. Inhaltsverzeichnis 1.Überblick Parameterübergabe...

Kurzeinführung Excel2App. Version 1.0.0

Gambio GX2 FAQ. Inhaltsverzeichnis

INSTALLATION. Voraussetzungen

Es sollte die MS-DOS Eingabeaufforderung starten. Geben Sie nun den Befehl javac ein.

Mit der Maus im Menü links auf den Menüpunkt 'Seiten' gehen und auf 'Erstellen klicken.

Musterlösung für Schulen in Baden-Württemberg. Windows Basiskurs Windows-Musterlösung. Version 3. Stand:

Wichtige Hinweise zu den neuen Orientierungshilfen der Architekten-/Objektplanerverträge

Installation von NetBeans inkl. Glassfish Anwendungs-Server

Joomla! 2.5. Grundlagen. Martin Wiedemann. 1. Ausgabe, Dezember 2012 JMLA25

Um zu prüfen welche Version auf dem betroffenen Client enthalten ist, gehen Sie bitte wie folgt vor:

Content-Management- Systeme (CMS) Inhaltsverwaltungssystem, Redaktionssystem

Joomla 1.5. Einführung in die Installation und Benützung

Installationsanleitung dateiagent Pro

Objektorientierte Programmierung

Vorkurs C++ Programmierung

Nutzung von GiS BasePac 8 im Netzwerk

PowerMover. Eine Zusatz-Anwendung für Outlook-PowerUser. Damit können eingehende s schneller verwaltet werden. Vasquez Systemlösungen

Anleitung zum Arbeiten mit Microsoft Visual Studio 2008 im Softwarepraktikum ET/IT

Einleitung: Frontend Backend

0. VORBEMERKUNG VORBEREITUNG DES SYSTEMS INSTALLATION UND KONFIGURATION VON PD-ADMIN Installation...3

Handbuch ECDL 2003 Basic Modul 5: Datenbank Grundlagen von relationalen Datenbanken

WCMS online Projektmappe. Informationsabend. Präsentation / 2008 IT-Service Leipzig

Fachbericht zum Thema: Anforderungen an ein Datenbanksystem

Diese Ansicht erhalten Sie nach der erfolgreichen Anmeldung bei Wordpress.

Xcode/Cocoa/Objective-C Crashkurs Programmieren unter Mac OS X

1. Loggen Sie sich mit Ihrem Benutzernamen in den Hosting-Manager (Confixx) auf Ihrer entsprechenden AREA ein. Automatische Wordpress Installation

Wie richten Sie Ihr Web Paket bei Netpage24 ein

Facebook I-Frame Tabs mit Papoo Plugin erstellen und verwalten

HTBVIEWER INBETRIEBNAHME

Ordner Berechtigung vergeben Zugriffsrechte unter Windows einrichten

ANYWHERE Zugriff von externen Arbeitsplätzen

Information zum SQL Server: Installieren und deinstallieren. (Stand: September 2012)

Klassenentwurf. Wie schreiben wir Klassen, die leicht zu verstehen, wartbar und wiederverwendbar sind? Objektorientierte Programmierung mit Java

Clientkonfiguration für Hosted Exchange 2010

Konfiguration eines Magento Shops (Version 1.7):

IAWWeb PDFManager. - Kurzanleitung -

Herzlich Willkommen bei der nfon GmbH

Agentur für Werbung & Internet. Schritt für Schritt: Newsletter mit WebEdition versenden

Online-Publishing mit HTML und CSS für Einsteigerinnen

Möglichkeiten des Parallelbetriebs der VR-NetWorld Software Parallelbetrieb VR-NetWorld Software 4.4x und Version 5.0 ab der 2. Beta!

PHP - Projekt Personalverwaltung. Erstellt von James Schüpbach

Übung: Verwendung von Java-Threads

2. ERSTELLEN VON APPS MIT DEM ADT PLUGIN VON ECLIPSE

Whitepaper. Produkt: List & Label 16. List & Label 16 unter Linux/Wine. combit GmbH Untere Laube Konstanz

Migration von statischen HTML Seiten

Konfiguration von Igel ThinClients fu r den Zugriff via Netscaler Gateway auf eine Storefront/ XenDesktop 7 Umgebung

Erste Schritte mit WordPress Anleitung WordPress Version 2.8.X

WordPress. - ein kleines Tutorial von C. Oberweis, inf-schule.de -

Seite 1 von 14. Cookie-Einstellungen verschiedener Browser

Installation/Einrichtung einer Datenbank für smalldms

Für die Bearbeitung von MySQL-Datenbanken ist das Administrationswerkzeug phpmyadmin integriert.

crm-now/ps Webforms Webdesigner Handbuch Erste Ausgabe

Datenbank-Verschlüsselung mit DbDefence und Webanwendungen.

SCHNELLEINSTIEG FÜR HOSTED EXCHANGE BASIC / PREMIUM

Transkript:

Clemens Gull Know-how ist blau. Joomla!-Extensions mit PHP entwickeln > Erweitern Sie das freie Content-Management-System > Das Joomla!-Framework verstehen und anwenden > PHP- und Datenbank-Grundwissen für eigene Entwicklungsprojekte Module, Plugins und Komponenten nach eigenen Vorstellungen programmieren FRANZIS

11 Inhaltsverzeichnis 1 Einführung... 15 1.1 Was ist Joomla?... 15 1.1.1 Content-Management-System... 15 1.1.2 Open-Source-Software... 16 1.2 Der Aufbau von Joomla... 17 1.2.1 Die Datenbank von Joomla... 17 1.2.2 Der Core von Joomla... 17 1.2.3 Erweiterungen von Joomla... 18 1.2.4 Die Perspektiven in Joomla... 19 1.2.5 Das Framework von Joomla... 19 2 Die Arbeitsumgebung... 21 2.1 Die notwendigen Werkzeuge und Produkte... 22 2.1.1 Server-Softwarepaket für Windows-Systeme... 22 2.1.2 Server-Softwarepakete für Mac OS X... 22 2.1.3 Installation für Windows-Systeme... 23 2.1.4 Installation für Systeme unter Mac OS X... 33 2.1.5 Einrichten der Entwicklungsumgebung... 49 2.1.6 Einrichten des Webbrowsers... 59 2.1.7 Joomla lokal verwenden... 63 3 Entwickeln mit Joomla... 75 3.1 Start der Entwicklung... 75 3.1.1 Was muss man unbedingt wissen?... 75 3.1.2 Die Änderung vorbereiten... 76 3.2 Die Kontaktverwaltung anpassen... 77 3.2.1 Das Anpassen der Datenbank... 77 3.2.2 Die bestehende Komponente kopieren... 85 3.2.3 Die Dateien der Komponenten verändern... 87 3.3 Noch mehr Hintergrundwissen zum Programmieren...121 3.3.1 Entscheidungen in PHP...121

12 Inhaltsverzeichnis 3.3.2 Der Blockoperator...122 3.3.3 Die else-anweisung in PHP...123 3.3.4 Die elseif-anweisung...124 3.3.5 Schleifen in PHP...127 3.3.6 Was sind Arrays?...132 3.3.7 Eine spezielle Schleife für Arrays...134 3.3.8 Die switch-anweisung...137 3.3.9 Den restlichen Code von mycontact anpassen...143 3.3.10 Anpassungen im Frontend von mycontact...145 3.3.11 Die Referenzen auf die Datenbanktabellen ersetzen...147 3.3.12 Die Sprachdateien anpassen...148 3.4 Die betroffenen Klassen von Joomla erweitern...149 3.4.1 Anpassen der Datenbankklassen...151 3.5 Die Präsentation der Erweiterung anpassen...156 3.5.1 Das Backend anpassen...156 3.5.2 Das Frontend anpassen...162 3.5.3 Anpassen der Sprachdateien...164 3.6 Abschließende Tests der Kontaktverwaltung...165 3.6.1 Anpassen der Suche...165 4 Joomla unter der Lupe... 167 4.1 Die Grundidee eines CMS...167 4.1.1 Die Unabhängigkeit der Darstellung...169 4.1.2 Die Wiederverwendbarkeit von Information...169 4.2 Das Joomla-Framework...169 4.2.1 Das Framework im Überblick...170 4.2.2 Die Pakete von Joomla...171 4.2.3 Basisfunktionen des Frameworks...177 4.2.4 Hilfreiche Klassen von Joomla...184 4.3 JHTML HTML mit Joomla...187 4.3.1 Basismethoden von JHTML...188 4.3.2 Elemente mit JavaScript einfügen...190 4.3.3 Die E-Mail-Adresse verstecken...196 4.4 Die JRequest-Klasse...197 5 Zusätzliche Erweiterungen entwickeln... 199 5.1 Eine neue Komponente...199 5.1.1 Die Eckdaten zur Komponente...199 5.1.2 Die Datenbank vorbereiten...200

Inhaltsverzeichnis 13 5.1.3 Die Verzeichnisstruktur anlegen...205 5.1.4 Das Backend erstellen...206 5.1.5 Das Frontend für mybooks...244 5.1.6 Die Metadaten für die Komponente...255 5.1.7 Das Installationspaket...257 5.2 Ein neues Modul für unsere Komponente...264 5.2.1 Vorbereitung zur Entwicklung...264 5.2.2 Eintragen des Moduls in die Datenbank...265 5.2.3 Erstellen des Moduls...266 5.2.4 Das Installationspaket für das Modul erstellen...271 5.2.5 Das neue Modul testen...272 5.3 myweather ein Mashup als Modul...273 5.3.1 Die Verzeichnisstruktur für myweather...273 5.3.2 Die Metadaten für myweather...273 5.3.3 myweather in die Datenbank eintragen...275 5.3.4 Die Steuerdatei für myweather...277 5.3.5 Die Vorlage (Template) von myweather...278 5.3.6 Der Helper von myweather...278 5.3.7 Das neue Modul testen...288 5.3.8 Das Installationspaket erstellen...289 5.4 Ein Plugin für mybooks...290 5.4.1 Die XML-Datei für das Plugin...290 5.4.2 Das Such-Plugin...290 5.4.3 Das Plugin in die Datenbank eintragen...294 5.4.4 Die Suche testen...294 5.4.5 Das Installationspaket erstellen...294 6 Softwareentwicklung... 295 6.1 Konventionen für die Programmierung in Joomla...295 6.1.1 Allgemein...295 6.1.2 Methoden...295 6.1.3 Variablen...296 6.1.4 Konstanten...296 6.1.5 Strings...296 6.1.6 Arrays...297 6.1.7 Klassen...298 6.1.8 Kontrollanweisungen...300 6.1.9 Dokumentation...301 6.1.10 Dateiformat...302

14 Inhaltsverzeichnis 6.1.11 Referenzen...302 6.2 UML Universal Modeling Language...303 6.3 OOP Object Oriented Programming...303 6.3.1 Objekte...304 6.3.2 Begriffe...304 6.3.3 Klassen...305 6.4 Entwurfsmuster in der Softwareentwicklung...307 6.4.1 Entwurfsmuster...307 6.4.2 Das MVC-Entwurfsmuster...308 6.4.3 Das Factory-Entwurfsmuster...310 6.4.4 Das Singleton-Entwurfsmuster...311 6.4.5 Koppelung...311 7 Anhang... 313 7.1 Eclipse auf UTF-8 umstellen...313 7.1.1 Die Datei eclipse.ini auf Windows-Systemen...313 7.1.2 Die Datei eclipse.ini auf Apple-Systemen...313 7.1.3 Die Datei eclipse.ini anpassen...314 7.2 Zahlen-, Datums- und Zeitformate in PHP...315 7.2.1 Formate für die Ausgabe...315 7.2.2 Datums- und Zeitformate...315 7.3 Zugriffskontrolle von Joomla...316 Stichwortverzeichnis... 325

15 1 Einführung 1.1 Was ist Joomla? Bevor wir uns mit der Programmierung zu Joomla auseinandersetzen, müssen wir uns ein wenig mit den Grundlagen dieses Systems beschäftigen. Übrigens: Die Lautumschreibung»Joomla«entstammt eigentlich der arabischen Sprache und wird dort in etwa»jumla«geschrieben. Dieses Wort kann mit»das Ganze«oder»als Ganzes«übersetzt werden. Damit ist auch der Grundgedanke des Systems in seinem Namen definiert: Es stellt nicht den Produktgedanken in den Vordergrund, sondern den der gesamten Entwicklergemeinschaft, die daran beteiligt ist. 1.1.1 Content-Management-System Diese Art von Anwendungen für das World Wide Web stellt einen grundlegenden Gedanken für Websites in den Vordergrund: Über die Jahre hat sich nämlich herausgestellt, dass es eine grundlegende Trennung bei Webseiten gibt nämlich die Trennung zwischen dem Inhalt selbst und der»auslieferung«des Inhalts. Am Anfang standen statische Webseiten, welche Inhalt, Funktionalität und auch Design in einem enthielten. Jeder, der diese klassischen Seiten entwickelt hat und auch pflegen muss, kennt die damit verbundenen Schwierigkeiten. Insbesondere der Inhalt wird dabei oft unterschätzt. Denn dieser Bereich ist sehr dynamisch und bedarf der regelmäßigen Aktualisierung, damit eine Website auf Dauer interessant bleibt. Besonders die Vermischung von Inhalt und Layout war in der Entwicklung von Webpublikationen immer wieder ein Problem. Erst in den 1990er-Jahren wurde mit der Definition von CSS 7 (Cascading Style Sheets) eine Trennung möglich. Ende der 90er- Jahre, mit der Einführung von Programmiersprachen wie PHP und Java, wurde auch die Trennung von Funktionalität und Inhalt weiter vorangetrieben. Entscheidend für diese Entwicklung war der Schritt, die Inhalte komplett zu separieren und in einer Datenbank zu speichern. Dadurch entwickelten sich mit der Zeit Content- Management-Systeme. Diese orientierten sich an bekannten Arbeitsabläufen, nämlich den bereits existierenden Redaktionssystemen in den Verlagen. Die zentrale Aufgabe 7 Cascading Style Sheets, eine Formatierungssprache unter anderem für HTML

16 Kapitel 1: Einführung dieser Systeme war das gemeinsame Bearbeiten und Strukturieren von Inhalten für Zeitungen und Magazine. Durch die Speicherung des reinen Inhalts, ohne jede Formatierung, waren diese auch nicht mehr an ein Ausgabemedium gebunden. Dadurch konnten sie für Zeitungen, Websites oder Werbung gleichermaßen verwendet werden. Die Autoren waren damit klar im Vorteil, da Inhalte nicht mehrfach erstellt beziehungsweise gepflegt werden mussten. Mit der Entwicklung des World Wide Web und hier besonders des interaktiven Web beziehungsweise des Web 2.0 wurden neue Formen der Veröffentlichung immer wichtiger, denken wir nur an die sozialen Netzwerke oder auch an Blogs. Dadurch wurden immer speziellere Formen von Content-Management-Systemen geschaffen. Heute gibt es mehr als 1000 verschiedene Lösungen im Bereich der CMS 8. Sie unterscheiden sich nicht nur in der zugrunde liegenden Technologie, den abgebildeten Arbeitsabläufen oder der Komplexität, sondern auch in der Art der Lizenz, unter der sie vertrieben werden. 1.1.2 Open-Source-Software Der Einsatz von Open-Source-Software hat verschiedene Vor- und Nachteile, welche teilweise sehr philosophisch und auch fanatisch diskutiert werden. Für uns ist hier aber der praktische Nutzen von Bedeutung. Denn auch Joomla unterliegt einer Open- Source-Lizenz. Eine der bekanntesten ist die GPL 9, welche auch für Joomla gilt. Im Rahmen dieser Lizenz wurde unter anderem definiert, dass der Quellcode frei zugänglich sein muss, dass der Code jederzeit verändert werden darf, dass die Software frei (kostenlos) benutzt werden darf, dass der Quellcode weitergegeben werden darf und dass alle Weiterentwicklungen und Änderungen der ursprünglichen Software derselben Lizenz unterliegen. Dadurch ergibt sich für uns der große Vorteil, dass wir die Software ändern und unseren Bedürfnissen anpassen können und dies sogar explizit dürfen. Für Joomla selbst ist ebenfalls ein großer Vorteil zu sehen. Da die Software frei ist und auch die Entwickler keine weiteren Rechte an ihrer Arbeit ableiten können, ist die Weiterentwicklung gesichert. Denn es können jederzeit neue Entwickler in das Team aufgenommen werden, ohne dass weitere Rechte verletzt oder abgegolten werden. 8 siehe http://www.cmsmatrix.org/ 9 siehe http://www.opensource.org/licenses/gpl-2.0.php

1.2 Der Aufbau von Joomla 17 1.2 Der Aufbau von Joomla Vielleicht haben Sie bereits als Anwender mit Joomla gearbeitet, sicher haben Sie es aber schon das eine oder andere Mal gesehen, wenn vielleicht auch nicht bewusst. Denn viele Websites beruhen auf diesem Content-Management-System. Nun beschäftigen wir uns aus der Sicht des Entwicklers mit dieser Software. 1.2.1 Die Datenbank von Joomla Die Datenbank mit allen Einstellungen und Inhalten für eine Website kann sicher als der zentrale Punkt des CMS bezeichnet werden. Natürlich sind nicht alle Daten in der Datenbank enthalten. Wenn zum Beispiel Daten von anderen Websites eingebunden werden, werden sie außerhalb der Datenbank abgelegt. Das gilt auch für Bilddateien, Audio- und Videodaten und andere Dokumente (zum Beispiel PDF-Dateien). Die Datenbank selbst ist in Tabellen untergliedert, welche die verschiedenen Inhalte strukturiert enthalten. Der Entwickler stellt sich als Erstes die Frage»Welche Daten muss ich in der Datenbank speichern, und wie sind sie mit anderen Daten (Tabellen) verbunden?«. Die Antwort auf diese Frage ergibt dann eine Tabellenstruktur. Diese Arbeit und Überlegung werden wir im Kapitel 3 genauer kennenlernen und auch nachvollziehen. Momentan unterstützt Joomla nur ein Datenbanksystem: die freie Datenbank MySQL. Daher werden wir auch im nächsten Kapitel diesen Datenbankserver und eine passende Verwaltungssoftware installieren. In ihr werden alle Tabellen von Joomla selbst und auch alle Erweiterungen gespeichert. 1.2.2 Der Core von Joomla Der Core (also der Kern) von Joomla ist die wichtigste Komponente der Software. Er besteht im Großen und Ganzen aus verschiedenen PHP-Skripten. Diese definieren die Klassen, Funktionen und Variablen, welche vom CMS benutzt werden. Dazu gehören zum Beispiel die Ausgaben als HTML-Datei, damit der Benutzer die Daten auch sehen kann. Wenn der User einen Artikel drucken will, greift eine andere Komponente des Core-Systems ein: die Ausgabe des Artikels als PDF-Datei. Genauso übernimmt der Core die automatische Prüfung von übergebenen Werten. Damit ist gemeint, dass der Grundsatz»Vertraue nie dem Anwender«von Joomla automatisch berücksichtigt wird. Jede Eingabe in ein Formular und auch jeder Wert, welcher von außen in das System eingebracht wird, durchläuft einen automatischen Sicherheitscheck. Natürlich ist das Core-System noch für viele andere Dinge zuständig. Es bildet die Grundlage für das ganze CMS und auch die Komponenten, Module, Plugins und Vorlagen.

18 Kapitel 1: Einführung 1.2.3 Erweiterungen von Joomla Generell können wir alle Softwarekomponenten, welche nicht in der Standardauslieferung enthalten sind, als Erweiterungen bezeichnen. Wenn Sie das CMS aus dem Netz herunterladen, wird es in einer funktionierenden und abgestimmten Version zur Verfügung gestellt. Der große Vorteil der Anwendung ist jedoch gerade die Erweiterbarkeit und damit die Möglichkeit zur Anpassung des Systems. Damit kann eigentlich jeder Wunsch an das System erfüllt werden. Der allgemeine Begriff»Erweiterung«wird in Joomla aber in fünf Gruppen eingeteilt: Modul: Eine kleinere Softwarekomponente, welche in die Website eingebaut wird. Module sind nicht sehr komplex und erzeugen keinen eigenen Eintrag im Administrationsbereich. Sie werden im Modulmanager des Administrations-Interfaces zusammengefasst. Mithilfe von Modulen werden oft Daten von entfernten Webservern angezeigt. Dazu zählen zum Beispiel RSS-Feeds 10 oder Wetterdaten. Komponente: Eine abgeschlossene, unabhängige Softwarekomponente von Joomla. Sie ist umfangreich und bietet Funktionen für die Administration wie auch für die Website selbst. Sie integriert sich als eigener Menüpunkt in die Administration. Plugin: Diese Erweiterung ist»dynamisch«, sie reagiert auf Ereignisse während des Programmablaufs. Plugins dienen generell der Verarbeitung von Ausgaben, bevor sie auf der Website angezeigt werden. So können wir beispielsweise automatisch Bilder einfügen oder Hyperlinks hervorheben. Durch ihre Vielseitigkeit nehmen Plugins im Joomla-Konzept eine herausragende Stellung ein. Verwaltet werden sie in der Administration im Plugin-Manager. Vorlagen (Templates): Dies sind»optische«erweiterungen. Sie stellen ein Grundgerüst für das Aussehen der Website und auch des Administrationsbereichs dar. Auch diese Erweiterung wird über einen eigenen Vorlagenmanager im Administrationsbereich verwaltet. Es ist auch möglich, dass wir eine eigene Vorlage für die Website und eine zweite für das Aussehen des Administrationsbereichs installieren. Sprache: So eigenartig es klingt: Auch die einzelnen Sprachen sind als Erweiterungen des Joomla-Core-Systems zu sehen, da Joomla in der Standardauslieferung nur auf Englisch verfügbar ist. Sie werden wie alle anderen Erweiterungen installiert, denn 10 Really Simple Syndication: eine Technik beziehungsweise ein Datenformat, um Inhalte von Websites zu abonnieren

1.2 Der Aufbau von Joomla 19 die Übersetzungen liegen in einer Gruppe von UTF-8 11 -codierten Dateien vor. Die Verwaltung erfolgt auch im Administrationsbereich durch den Sprachenmanager. 1.2.4 Die Perspektiven in Joomla Da das CMS aus verschiedenen Gesichtspunkten betrachtet werden kann, müssen wir uns auch mit den im Folgenden beschriebenen Fachbegriffen beschäftigen und sie beherrschen. Besonders für die Softwareentwicklung mit Joomla ist dies notwendig, da eine klare Trennung zwischen den einzelnen Bereichen herrscht. Das Backend Das Backend ist der Bereich der Administration, hier wird das System gewartet, und alle Komponenten werden installiert und konfiguriert. Im Backend werden das Aussehen und der Inhalt der Website festgelegt und angepasst. Im Administrationsbereich werden die Artikel und die Menüs erfasst. Da wir uns hier sozusagen im Herzen des Systems befinden, ist dieser Bereich auch speziell geschützt: Nicht jeder Benutzer erhält hierfür einen Zugang. Das Frontend Dies ist der Bereich, der öffentlich sichtbar ist. Jeder Benutzer kann hier zugreifen und sich den Inhalt der Website ansehen. Hier kommen die Vorlagen (Templates), welche das Aussehen bestimmen, zum Tragen. Aber der Benutzer, der die Seite besucht, kann nichts am System selbst verändern. 1.2.5 Das Framework von Joomla Dies ist die unterste Ebene, quasi die Basis des Content-Management-Systems. Früher war dieses Framework eine Sammlung von PHP-Dateien, welche allgemeine Funktionen für Joomla bereitstellten. Durch die Weiterentwicklung wurde es optimiert und ist unabhängig geworden. Heute können wir es grundsätzlich sogar für ein eigenes CMS einsetzen und als Basis verwenden. Prinzipiell stellt das Framework Funktionen für das gesamte CMS zur Verfügung. Es ist beispielsweise nicht sinnvoll, den Zugriff auf das Dateisystem bei jedem Modul neu zu erstellen oder Zugriffe auf die Datenbank in jeder Komponente neu zu programmieren. Dafür gibt es das Framework: Es stellt diese allgemeinen Funktionen zur Verfügung. Wir können beim Erstellen eines Moduls oder einer Komponente einfach auf diese Funktionen zugreifen und müssen uns nicht um die Feinheiten kümmern. 11 Unicode Transformation Format 8-Bit, eine sprach- und schriftunabhängige Codierung von Zeichen

325 Stichwortverzeichnis ()... 157 autoload... 184 construct... 155 destruct... 156 A Abstraktion... 304 AND... 109 Apache... 22 Aptana Studio erweitern... 56 installieren... 53 array (Befehl)... 132 Array... 102, 132, 286 assoziativ... 133 Element... 133 erstellen... 132 Hash... 133 nummerisch... 132 ASCII... 101, 302 B Backend... 19, 72, 77, 88, 145, 164, 241 Behavior calendar... 190 caption... 191 combobox... 191 modal... 192 switcher... 193 tooltip... 194 tree... 195 Benutzerkontensteuerung... 26, 27, 29, 55 Bindung frühe... 305 späte... 305 Blockoperator... 122 BooksController display... 231 BooksControllerBook... 233 construct... 233 cancel... 238 edit... 234 publish... 235 remove... 235 save... 234 BooksModelBook... 210 delete... 214 getdata... 211 setid... 210 store... 213 BooksModelBooks... 216, 244 _buildquery... 217 getdata... 217 BooksViewBook... 226 display... 226 BooksViewBooks... 219, 247 display... 219, 247 Boolean... 102 break... 137 by Reference... 209 by Value... 209 C camelcase... 102, 295 case... 137

326 Stichwortverzeichnis class... 116, 153 CMS... 17 com_mybooks... 200 com_mycontact... 203 Content-Management-System... 15, 75 Controller... 309 count... 215, 222 CSS... 15 curl... 280 curl_close... 282 curl_exec... 281 curl_init... 280 curl_setopt... 280 D Datei authorization.php... 184 book.php... 232 books.php... 244 com_mybooks.zip... 263 config.xml... 256 contacts.xml... 165 Controller... 249 controller.php... 185, 231 default.php... 247, 270, 278 eclipse.ini... 313 form.php... 228 helper... 278 helper.php... 266, 269 index.html... 206, 238, 265, 273 install.sql... 261 metadata.xml... 255 mod_mybooks.php... 269 mod_mybooks.xml... 270 mod_mybooks.zip... 271 mod_myweather.php... 277 mod_myweather.xml... 274 mod_myweather.zip... 289 mybooks.php... 207, 241 mybooks.php... 250, 290 mybooks.xml... 255 mybooks.xml... 255, 257, 263, 290 mycontact.xml... 165 plg_mybooks.zip... 294 router.php... 186, 187 uninstall.sql... 263 Datenbank... 17 Datenfeld hinzufügen... 79 Datensatz hinzufügen... 82 installieren... 65 Kollation... 80 MySQL... 17 Tabelle kopieren... 78 Tabelle neuanlegen... 201 Datenfeld hinzufügen... 79 Kollation... 80 Datensatz hinzufügen... 82 Datentyp... 102 defined... 208 Dekremtent... 130 Design Pattern... 307 Design-Time... 305 dirname... 269 Double... 102 E echo... 103 Eclipse... 21, 50, 264 Aptana Studio installieren... 53 Arbeitsbereich... 92 Arbeitsbereich festlegen... 52 Galileo... 50 index.html... 94 jquery... 56 Perspektive... 58 PHP... 56 Projekt anlegen... 90 Projekt-Explorer... 95, 205 Prototype... 56 Scriptaculous... 56 Sprachpaket... 50 Sprachpaket installieren... 51 Suchfunktion... 118

Stichwortverzeichnis 327 Eigenschaft... 154, 307 else... 124 elseif... 124 email cloaking... 196 empty... 212 endforeach... 134 endif... 125 Endlosschleife... 128 endwhile... 127 Entscheidung... 137 Entwicklungsstil Arrays... 297 camelcase... 295 default-anweisung... 301 Dokumentation... 298, 301 Einrückungen... 295 if-anweisung... 300 Klassen... 298 Kommentare... 298 Konstantennamen... 296 Kontrollanweisungen... 300 Methodennamen... 295 Strings... 296 switch-anweisung... 300 Variablennamen... 296 Entwurfsmuster... 149, 307 Controller... 308, 309 Factory... 177, 310, 311 Model... 308, 309 Model/View/Controller... 149 MVC... 149, 231, 244, 308 Observer... 309 Singleton... 311 View... 308, 309 explode... 237 extends... 158 F Factory-Entwurfsmuster... 177, 310 file_exists... 250 Firefox... 21, 59 FireBug... 60 GridFox... 62 WebDeveloper... 61 Float... 102 foreach... 134, 268 foreach-schleife... 293 for-schleife... 223, 286, 287 Framework... 19, 169 Frontend... 19, 72, 77, 88, 145,... 156, 162, 199, 253 FTP... 173 function... 113 Funktion... 112 G GPL... 16 Gültigkeitsbereichsoperator... 158 H Hash-Array... 133 http.conf... 36 I if... 121 if-else... 124 implode... 237 Inkrement... 130 Installation, mybooks... 257 Installationspaket... 271, 289, 294 Instanz... 305 Integer... 102 ISO-8859-1... 284 Iteration... 127 J JApplication... 175 JApplicationHelper... 175 JArchive... 173 JArrayHelper... 172, 236 tointeger... 236 JAuthentication... 176 JAuthenticationResponse... 176 JAuthorization... 176, 317, 319

328 Stichwortverzeichnis Java... 49 Runtime Environment... 50 JBrowser... 173 JBuffer... 172 JCache... 174 JCacheStorage... 174 JClientHelper... 173 JConfig... 177 JController... 231, 233, 249 execute... 241 JDatabase... 151, 173 JDate... 172, 180 getoffset... 180 toformat... 180 JDispatcher... 174 JDocument... 175 JDocumentRenderer... 175 JEditor... 172 JError... 172, 185 geterror... 185 geterrors... 185 raiseerror... 186 raisenotice... 186 raisewarning... 186 JEvent... 174 JException... 172 JFactory... 177, 239, 267 authorize... 239 getconfig... 182 getdate... 180 getdbo... 267 getlanguage... 181 getuser... 178, 182, 239 JFile... 174 JFilterInput... 174 JFolder... 174 JFrameworkConfig... 177 JFTP... 173 JHelp... 176 JHTML... 172, 187, 190, 222 _()... 190, 191, 192, 193, 194, 195, 196 addincludepath... 188 calendar... 188 date... 188 iframe... 188 image... 189 link... 189 script... 189 stylesheet... 189 tooltip... 189 JHTMLBehavior... 190 JHTMLEmail... 196 jimport... 185, 219 JInstaller... 175 JInstallerHelper... 175 JLanguage... 176 _()... 181 exists... 181 getdefault... 181 getknownlanguages... 181 setdefault... 181 JLanguageHelper... 176 JLDAP... 173 JLoader... 184 JLog... 172 JMail... 174 JMailHelper... 174 JMenu... 175 JModel... 210, 212, 216, 217, 244 _getlist... 217 loadobject... 212 model... 234 setquery... 212 JOberservable... 171 JObject... 171 JObserver... 172 Joomla Backend... 19, 72, 77, 88, 145, 164, 241 Benutzerrechte... 64 Core... 17 Datenbank... 17 Datenbank installieren... 65 Erweiterungen... 18 Execute... 208

Stichwortverzeichnis 329 Framework... 19 Frontend... 19, 72, 77, 88, 145,... 156, 162, 199, 253 installieren... 63 Komponente... 18 Komponenten-Manager... 81 Lizenz... 75 Modul... 18 Plug-In... 18 Sprachdatei... 87 Sprache... 18 Systemtabellen... 81 Template... 18 Vorlage... 18 Zugriffskontrolle... 316 jos_components... 201 jos_modules... 265, 272, 275 jos_mybooks... 200, 217, 229, 244, 259 jos_plugins... 294 JPagination... 172 JPaginationObject... 172 JPane... 172 JPaneSliders... 172 JPaneTabs... 172 JParameter... 172 JPath... 174 JPathway... 175 JPlugin... 176 JPluginHelper... 176 JProfiler... 172 JRecordSet... 173 JRegistry... 174, 182 getvalue... 182 setvalue... 182 JRegistryFormat... 174 JRequest... 173, 197, 215, 234 checktoken... 197 get... 198 getvar... 215 publish... 240 setvar... 234 JResponse... 173 JRoute... 186 _()... 186 JRouter... 175, 186 JRouterSite... 186 JSession... 175 JSessionStorage... 175 JSimpleCrypt... 172 JSimpleXML... 172 JSimpleXMLElement... 172 JString... 172 JTable... 151, 155, 208 JTemplate... 176 JText... 157, 158, 220, 229 _... 220 _()... 157 JToolBar... 172 JToolbarHelper... 219, 227 title... 219, 227 JTree... 172 JURI... 173 JUser... 176, 182 authorize... 183 JUserHelper... 176 JView... 219, 226, 247 assignref... 220 JView... 220 K Kapselung... 154, 304 Klasse... 153, 304, 305 BooksController... 231, 249 BooksControllerBook... 233 BooksModelBook... 210 BooksModelBooks... 216, 244 BooksViewBook... 226 BooksViewBooks... 219, 247 Eigenschaft... 154 erweitern... 149 JApplication... 175 JApplicationHelper... 175 JArchive... 173 JArrayHelper... 172, 236

330 Stichwortverzeichnis JAuthentication... 176 JAuthenticationResponse... 176 JAuthorization... 176, 317, 319 JBrowser... 173 JBuffer... 172 JCache... 174 JCacheStorage... 174 JClientHelper... 173 JConfig... 177 JController... 231, 233, 249 JDatabase... 151, 173 JDate... 172, 180 JDispatcher... 174 JDocument... 175 JDocumentRenderer... 175 JEditor... 172 JError... 172, 185 JEvent... 174 JException... 172 JFactory... 177, 239, 267 JFile... 174 JFilterOutput... 174 JFolder... 174 JFrameworkConfig... 177 JFTP... 173 JHelp... 176 JHTML... 172, 187, 190, 222 JHTMLBehavior... 190 JHTMLEMail... 196 JInstaller... 175 JInstallerHelper... 175 JLanguage... 176 JLanguageHelper... 176 JLDAP... 173 JLoader... 184 JLog... 172 JMail... 174 JMailHelper... 174 JMenu... 175 JModel... 210, 212, 216, 217, 244 JObject... 171 JObservable... 171 JObserver... 172 JPagination... 172 JPaginationObject... 172 JPane... 172 JPaneSliders... 172 JPaneTabs... 172 JParameter... 172 JPath... 174 JPathway... 175 JPlugin... 176 JPluginHelper... 176 JProfiler... 172 JRecordSet... 173 JRegistry... 174, 182 JRegistryFormat... 174 JRequest... 173, 197, 215, 234 JResponse... 173 JRoute... 186 JRouter... 175, 186 JRouterSite... 186 JSession... 175 JSessionStorage... 175 JSimpleCrypt... 172 JSimpleXML... 172 JSimpleXMLElement... 172 JString... 172 JTable... 151, 155, 208 JTemplate... 176 JText... 157, 158, 220, 229 JToolBar... 172 JToolbarHelper... 219, 227 JTree... 172 JURI... 173 JUser... 176, 182 JUserHelper... 176 JView... 219, 220, 226, 247 Kapselung... 154 Konstruktor... 209 Methode... 154 modbookshelper... 267 modweatherhelper... 278 parent... 220

Stichwortverzeichnis 331 stdclass... 212 TablemyBooks... 208 TablemyContact... 153, 155 Klassenkonstruktor... 209 Kollation... 80 Kommentare, PHP... 90 Komponente anpassen... 77 Contacts... 82 kopieren... 85 Metadaten... 255 mybooks... 200, 241 mycontact... 77 Sprachdatei... 148 Verzeichnisstruktur... 205 Komponenten-Manager... 81 Konfiguration, mycontact... 88 Konfigurationsdatei Eclipse... 314 PHP... 40, 44 PHPMyAdmin... 48 Webserver... 36 Konstante FILE... 269 _JEXEC... 208 DS... 240 JPATH_COMPONENT... 240 Konstruktor... 209, 310 Koppelung... 178, 311 lose... 311 L lcfirst... 252 LDAP... 173 logische Operatoren... 109 ltrim... 285 M Mac OS X Benutzer root... 40 Benutzerrechte... 64 MySQL installieren... 43 PHP aktivieren... 35 TextWrangler installieren... 33 Webserver... 22 Webserver aktivieren... 34 Webserver testen... 34 Mashup... 199, 273 MAX OS X phpmyadmin installieren... 43 Metadaten... 255, 273 Methode... 154, 306 _... 220 _()... 157, 181, 186 construct... 233, 310 _buildquery... 217 _getlist... 217 addincludepath... 188 assignref... 220 authorize... 183, 239 calendar... 188 cancel... 238 check... 214 checktoken... 197 date... 188 Default... 181 delete... 214 display... 219, 226, 231, 234, 247, 249 edit... 234 execute... 241 exists... 181 get... 198, 213 getbook... 267, 269 getconfig... 182 getdata... 211, 217 getdate... 180 getdbo... 267 getdefault... 181 geterror... 185 geterrormsg... 213 geterrors... 185 getknownlanguages... 181 getlanguage... 181 getoffset... 180

332 Stichwortverzeichnis getuser... 178, 182, 239 getvalue... 182 getvar... 215, 240 getweather... 279 iframe... 188 image... 189 jimport... 219, 231 link... 189 loadobject... 212 model... 234 publish... 235 query... 237 raiseerror... 186 raisenotice... 186 raisewarning... 186 redirect... 239 registerevent... 291 remove... 235 save... 234 script... 189 seterror... 213 setid... 210 setquery... 212 setredirect... 238 setvalue... 182 setvar... 234 store... 213 stylesheet... 189 title... 219, 227 toformat... 180 tointeger... 236 tooltip... 189 mod_mybooks, installieren... 271 modbookshelper... 267 getbook... 267, 269 Model... 309 modmybooks, Parameter... 268 Modul, mybooks... 265 Module, myweather... 273 modweatherhelper... 278 getweather... 279 MVC... 149 MVC-Entwurfsmuster... 231, 244, 308 mybooks... 200, 241 Controller... 231, 249 Installationspaket... 263 Model... 206, 244 Parameter... 271 Plug-In... 290 Verzeichnisstruktur... 253 View... 218, 246 mycontact... 77 MySQL... 17, 22 Benutzer root... 66 Datenbank installieren... 65 PHPMyAdmin... 21, 33 myweather... 273 installieren... 289 Metadaten... 273 Parameter... 274, 279 Verzeichnisstruktur... 273 N new... 212 NOT... 110 NULL... 102 O Object... 102 Objekt... 153, 304 Objektoperator... 158 Observer... 309 OOP... 116, 303 Abstraktion... 304 Begriffe... 304 Eigenschaft... 307 frühe Bindung... 305 Instanz... 305 Kapselung... 304 Klasse... 304, 305 Koppelung... 311 Methode... 306 Objekt... 304 Persistenz... 305

Stichwortverzeichnis 333 Polymorphie... 305 Prototype... 304 späte Bindung... 305 Vererbung... 305 Vielgestaltigkeit... 305 Open-Source... 16 Operator Block... 122 Gültigkeitsbereich... 158 logisch... 109, 122 Operator... 158 Punkt... 105 Referenz... 158, 178, 209 unitärer Dekrement... 130 unitäter Inkrement... 130 Vergleich... 107, 122 Zuweisung... 103 OR... 109 P Paket allgemein... 171 Anwendung... 175 application... 175 base... 171 cache... 174 client... 173 database... 173 document... 175 environment... 173 error... 172 event... 174 filesystem... 173 filter... 174 html... 172 installer... 175 language... 176 mail... 174 plugin... 176 registry... 174 session... 175 template... 176 unterstützend... 173 user... 176 utilities... 172 Parameter mybooks... 271 myweather... 274, 279 parent... 220 display... 234 Persistenz... 305 PHP... 21 $this... 220 autoload... 184 FILE... 269 array... 102, 132 Array... 132, 286 Ausgabe... 103 Blockoperator... 122 bool... 102 break... 137 case... 137 class... 116, 153 construct... 155 count... 215, 222 curl... 280 curl_close... 282 curl_exec... 281 curl_init... 280 curl_setopt... 280 Datumsformat... 315 default... 137 defined... 208 destruct... 156 die()... 208 dirname... 269 double... 102 echo... 103 else... 124 elseif... 124 empty... 212 endforeach... 134 endif... 125 endwhile... 127

334 Stichwortverzeichnis Entscheidung... 121, 137 explode... 237 extends... 158 file_exists... 250 float... 102 for... 223 foreach... 134 function... 113 Funktion... 112 if... 121 implode... 237 integer... 102 Interpreter... 99 Kommentare... 90 Konfigurationsdatei... 38, 44 lcfirst... 252 logische Operatoren... 109 ltrim... 285 new... 212 NULL... 102 object... 102 php.ini... 40, 44 phpinfo()... 100 printf... 105 Punkt-Operator... 105 require_once... 184, 219, 240, 250 return... 115 rtrim... 285 Schleife... 127, 135 Short-Tag... 98 simplexml_load_string... 283 str_replace... 281 string... 102 String verketten... 105 strtolower... 252 strtoupper... 252 switch... 137, 292 Syntax... 100 testen... 32, 40 trim... 285 ucfirst... 252 ucwords... 252 utf8_decode... 284 utf8_encode... 283 Variable... 101 Vergleichsoperatoren... 107 while... 127 Zeichenketten verketten... 105 Zeitformat... 315 Zuweisungsoperator... 103 php.ini... 40 phpmyadmin Datenbank installieren... 66 installieren... 45 konfigurieren... 45 testen... 48 PHPMyAdmin... 21, 43, 200,... 259, 265, 275, 294 Tabelle anlegen... 201 Tabelle kopieren... 78 Plug-In... 290 installieren... 294 search... 290 XML-Datei... 290 Polymorphie... 305 printf... 105 Programmierung Mashup... 199 objektorientiert... 116, 303 prozedural... 116 Projekt-Explorer... 95 Prototype... 304 Punkt-Operator... 105 Q Quellcode, Sicherung... 76 R Referenzoperator... 158, 178, 209 require_once... 184, 219, 240, 250 return... 115 RSS... 18 rtrim... 285 Run-Time... 305

Stichwortverzeichnis 335 S Schleife... 127, 135 endlos... 128 for... 223, 286, 287 foreach... 134, 215, 248, 268, 293 while... 127 setid... 210 SGML... 98 Short-Tag... 98 Sicherung... 76 Simple-XML... 282 simplexml_load_string... 283 Singleton-Entwurfsmuster... 311 Softwareentwicklung Konsequenzen... 75 Sprachdatei... 164 anpassen... 148 Standard Generalised Markup Language (SGML)... 98 stdclass... 212 str_replace... 281 String... 102 String verketten... 105 strtolower... 252 strtoupper... 252 switch... 137 T Tabelle Datenfeld hinzufügen... 79 Datensatz hinzufügen... 82 jos_components... 81, 201 jos_contact_details... 78 jos_contact_details_my... 78 jos_modules... 265, 272, 275 jos_mybooks... 200, 217, 229, 244, 259 jos_plugins... 294 kopieren... 78 neuanlegen... 201 TablemyBooks... 208 TablemyContact... 153, 155 Tag @access... 302 @throws... 302 a... 189 iframe... 188 img... 189, 268 li... 248, 268 param... 160 script... 189 ul... 268 Tag-img... 284 Template mybooks... 270 myweather... 278 TextWrangler... 23 this... 220 trim... 285 U Übergabe by Reference... 209 by Value... 209 ucfirst... 252 ucwords... 252 UML... 303 unitärer Dekrement... 130 Inkrement... 130 UTF-8... 19, 80, 263, 283, 302, 313 utf8_decode... 284 utf8_encode... 283 V Variable... 101 array... 102 bool... 102 Datentyp... 102 double... 102 float... 102 integer... 102 NULL... 102

336 Stichwortverzeichnis object... 102 string... 102 Vererbung... 305 Vergleichsoperatoren... 107 Verzeichnis administrator... 85 Books... 246 category... 146, 156 com_mybooks... 249, 250, 255 com_mycontact... 156 components... 85 controllers... 232, 241 language... 86 mod_mybooks... 264, 266, 269, 270 mod_myweather... 273, 277, 289 models... 146, 244 modules... 264 mycontact... 156 search... 290 tables... 145 tmpl... 147, 156, 221, 228,... 247, 264, 270, 273, 278 views... 146, 156 Verzeichnisstruktur, myweather... 273 Vielgestaltigkeit... 305 View... 309 W Webserver... 23 XAMPP... 22 while... 127 Windows Sicherheitsrichtlinien... 27 Webserver... 22 Webserver testen... 31 XAMPP installieren... 23 Workspace... 52, 92 X XAMPP... 22 Control Panel... 26, 30 Dienste... 26, 30 installieren... 26 XML... 88 Datei... 160 Daten... 280 default... 271 description... 271 files... 259, 274 folder... 258 Knoten... 259, 271, 274 label... 271 limit... 271 Objekt... 284 params... 271 photos... 271 Simple... 282 type... 271 XML-Datei... 165, 255, 256,... 257, 270, 274, 284, 290 items... 160 XOR... 110 Z Zeichencodierung ASCII... 302 UTF-8... 80, 263, 283, 302, 313 Zeichensatz ASCII... 101 ISO-8859-1... 284 Zugriffskontrolle... 316 Zuweisungsoperator... 103