Jardin / Foltyn | Joomla! 3 | E-Book | sack.de
E-Book

E-Book, Deutsch, 636 Seiten

Jardin / Foltyn Joomla! 3

Professionelle Webentwicklung. Aktuell zu Version 3.7
1. Auflage 2017
ISBN: 978-3-446-44088-3
Verlag: Carl Hanser
Format: PDF
Kopierschutz: 1 - PDF Watermark

Professionelle Webentwicklung. Aktuell zu Version 3.7

E-Book, Deutsch, 636 Seiten

ISBN: 978-3-446-44088-3
Verlag: Carl Hanser
Format: PDF
Kopierschutz: 1 - PDF Watermark



Dieses Praxisbuch bietet Ihnen einen Komplett-Einstieg in das Open Source Content Management System Joomla! 3.7. Von den Grundlagen bis zu fortgeschrittenen Techniken erfahren Sie alles, was für die tägliche Arbeit relevant ist.


Neben einer Einführung in die grundlegenden Strukturen von Joomla! liegt der Fokus des Buches auf Themen, die insbesondere beim professionellen Einsatz von Joomla! eine Rolle spielen. Dies alles ist garniert mit zahlreichen Tipps und Tricks, mit Beispielen und Best Practices vom Anfänger bis zum Entwickler.


Nach der Lektüre gehören Sie zu den Profis, die wissen, wie sie die Möglichkeiten von Joomla! ganz und gar ausschöpfen und das CMS für die Realisierung professioneller Webanwendungen nutzen und Lösungen damit umsetzen können.


Aus dem Inhalt: Umfassende Einführung in das CMS // Rechteverwaltung // Suchmaschinenoptimierung // Joomla!-Erweiterungen programmieren // Mehrsprachigkeit // Vom Shop-System bis zur Community-Lösung // Design-Patterns, Plug-Ins & CLI-Applikationen // Joomla Custom Fields // CCK-Systeme (Seblod) // Sicherheit; Update und Migration // Entwickeln Sie ein komplettes Template im Template-Workshop // Erweiterungsentwicklung und Rapid Prototyping mit Framework on Framework // Crashkurs Unit-Testing für Joomla-Erweiterungen.

Jardin / Foltyn Joomla! 3 jetzt bestellen!

Weitere Infos & Material


1;Inhalt;6
2;1 Einleitung;18
3;2 Über Joomla!;20
3.1;2.1 Content-Management-Systeme;20
3.2;2.2 Geschichte;21
3.3;2.3 Organisation;21
3.4;2.4 Release-Strategie;24
4;3 Einrichten der Arbeitsumgebung;26
4.1;3.1 Lokaler Webserver;26
4.1.1;3.1.1 Windows;27
4.1.2;3.1.2 Linux;29
4.1.3;3.1.3 Mac OS X;32
4.1.4;3.1.4 Vagrant;35
4.2;3.2 Entwicklungstools;36
4.2.1;3.2.1 Texteditor;37
4.2.1.1;3.2.1.1 Windows: Notepad++;37
4.2.1.2;3.2.1.2 Alle Systeme: Sublime Text;37
4.2.2;3.2.2 Entwicklungsumgebung;38
4.2.2.1;3.2.2.1 Eclipse;38
4.2.2.2;3.2.2.2 PhpStorm;39
4.3;3.3 Wahl des Browsers;40
4.3.1;3.3.1 Nutzung der Chrome-Entwicklertools;41
4.4;3.4 FTP-Client;45
4.5;3.5 Passwort-Manager;46
5;4 Installation;48
5.1;4.1 Installation in der lokalen Umgebung;48
5.1.1;4.1.1 Sonderfall 1: der FTP-Modus;57
5.1.2;4.1.2 Sonderfall 2: mehrsprachige Installation;59
5.2;4.2 Installation auf dem Webspace des Hosters;61
5.3;4.3 Erste Handgriffe nach der Installation;62
5.3.1;4.3.1 Anpassung der robots.txt;62
5.3.2;4.3.2 Leeren des Verzeichnisses/images;63
6;5 Grundlegende Begriffe und Architektur;66
6.1;5.1 Grundlegende Begriffe;66
6.1.1;5.1.1 Backend/Frontend;66
6.1.2;5.1.2 Komponenten, Module, Plug-ins und Templates;67
6.1.3;5.1.3 Beiträge, Kategorien, Menüs;68
6.2;5.2 Architektur;69
6.2.1;5.2.1 Joomla!-Framework;70
6.2.2;5.2.2 Joomla!-CMS;70
6.2.3;5.2.3 Erweiterungen;71
7;6 Das Backend;72
7.1;6.1 Login;72
7.2;6.2 Grundaufbau und Kontrollzentrum;73
7.3;6.3 Allgemeine Konfiguration;75
7.4;6.4 Massenmail;82
7.5;6.5 Menü: Menüs und Inhalte;84
7.6;6.6 Medienverwaltung;84
7.7;6.7 Menü: Komponenten;88
7.8;6.8 Menü: Erweiterungen;89
7.9;6.9 Menü: Hilfe;90
8;7 Inhalte verwalten;92
8.1;7.1 Kategoriensystem anlegen;93
8.1.1;7.1.1 Kategorienübersicht;93
8.1.2;7.1.2 Kategorie anlegen;96
8.1.3;7.1.3 Anlegen einer untergeordneten Kategorie;100
8.1.4;7.1.4 Bestehende Kategorien ändern;101
8.1.5;7.1.5 Kategorien entfernen und wiederherstellen;103
8.1.6;7.1.6 Kategorien veröffentlichen und verstecken;104
8.1.7;7.1.7 Kategorie-Reihenfolge ändern;105
8.1.8;7.1.8 Freigeben von Kategorien;106
8.1.9;7.1.9 Wiederherstellen der Kategorienstruktur;107
8.1.10;7.1.10 Kategorienoptionen;108
8.1.11;7.1.11 Anwenden von Änderungen auf mehrere Kategorien;108
8.2;7.2 Inhalte erstellen;109
8.2.1;7.2.1 Beitragsübersicht;109
8.2.2;7.2.2 Neuen Beitrag anlegen;110
8.2.2.1;7.2.2.1 Der WYSIWYG-Editor TinyMCE;111
8.2.2.2;7.2.2.2 Bilder einfügen;119
8.2.2.3;7.2.2.3 Verlinkungen zu anderen Beiträgen einfügen;121
8.2.2.4;7.2.2.4 Seitenumbruch;123
8.2.2.5;7.2.2.5 Weiterlesen-Funktion;126
8.2.2.6;7.2.2.6 Module einfügen;127
8.2.2.7;7.2.2.7 WYSIWYG-Editor deaktivieren;128
8.2.2.8;7.2.2.8 Beitragsparameter;128
8.2.3;7.2.3 Allgemeine Optionen der Beitragskomponente;132
8.3;7.3 Haupteinträge;136
8.4;7.4 Versionierung;136
8.5;7.5 Verschlagwortung;138
8.5.1;7.5.1 Schlagworte anlegen;139
8.5.2;7.5.2 Schlagworte im Frontend;140
9;8 Navigationsstruktur anlegen;142
9.1;8.1 Das Menüsystem;142
9.1.1;8.1.1 Die Menübereiche;142
9.1.2;8.1.2 Die Menüeinträge;143
9.2;8.2 Menüeinträge anlegen;144
9.2.1;8.2.1 Menütypen;144
9.2.2;8.2.2 Menüeintrags-Parameter;148
9.2.3;8.2.3 Kategorienauflistungen;152
9.2.4;8.2.4 Kategorienblogs;155
9.3;8.3 Split-Navigationen anlegen;160
10;9 Das Template-System;162
10.1;9.1 Was ist ein Template?;162
10.1.1;9.1.1 Backend- und Frontend-Templates;163
10.1.2;9.1.2 Modulpositionen;163
10.2;9.2 Template-Übersicht;164
10.2.1;9.2.1 Template-Stile;165
10.2.2;9.2.2 Installierte Templates;165
10.3;9.3 Editieren der installierten Templates;166
10.4;9.4 Template-Stil wechseln;167
10.5;9.5 Template-Zuweisung;168
10.6;9.6 Parameter ändern;169
10.7;9.7 Manuelle Template-Anpassungen;170
10.8;9.8 Andere Templates nutzen;173
10.8.1;9.8.1 Template-Verzeichnisse;173
10.8.2;9.8.2 Template-Clubs;174
10.8.3;9.8.3 Installation;175
11;10 Joomla!-Erweiterungen;176
11.1;10.1 Integrierte Erweiterungen;176
11.1.1;10.1.1 Komponenten: Nutzung der Kontakt-Komponente;176
11.1.2;10.1.2 Komponenten: Nutzung des Suchindex;180
11.1.3;10.1.3 Module: Das RSS-Feed-Modul einbinden;181
11.1.3.1;10.1.3.1 Administrator-Module;188
11.1.4;10.1.4 Plug-ins;188
11.1.5;10.1.5 Sprachen;190
11.1.6;10.1.6 Templates;191
11.1.7;10.1.7 Bibliotheken;191
11.1.8;10.1.8 Überblick über die Standarderweiterungen;191
11.2;10.2 Erweiterungen verwalten;196
11.2.1;10.2.1 Erweiterungen finden;196
11.2.1.1;10.2.1.1 extensions.joomla.org;196
11.2.1.2;10.2.1.2 Checkliste für die Auswahl der passenden Erweiterung;199
11.2.1.3;10.2.1.3 Deutschsprachige Erweiterungsverzeichnisse;199
11.2.2;10.2.2 Erweiterungen installieren;200
11.2.2.1;10.2.2.1 Aus Webkatalog installieren;203
11.2.3;10.2.3 Erweiterungsmanager;205
11.2.3.1;10.2.3.1 Erweiterungen verwalten;205
11.2.3.2;10.2.3.2 Erweiterungen überprüfen;206
11.2.3.3;10.2.3.3 Erweiterungen aktualisieren;207
11.2.3.4;10.2.3.4 Datenbank;207
11.2.3.5;10.2.3.5 Warnungen;208
11.2.3.6;10.2.3.6 Sprachen installieren;209
11.2.3.7;10.2.3.7 Aktualisierungsquellen;210
12;11 Benutzer- und Rechteverwaltung;212
12.1;11.1 Benutzerverwaltung;212
12.2;11.2 Gruppen;214
12.3;11.3 Zugriffsebene;217
12.4;11.4 Berechtigungen;219
12.4.1;11.4.1 System-Berechtigungen;220
12.4.2;11.4.2 Komponenten-Berechtigungen;222
12.4.3;11.4.3 Kategorie-Berechtigungen;222
12.4.4;11.4.4 Eintragsberechtigungen;223
12.5;11.5 Parameter der Benutzerverwaltung;224
13;12 Overrides/Template Workshop;226
13.1;12.1 Overrides und Alternative Layouts;226
13.1.1;12.1.1 Einleitung;226
13.1.2;12.1.2 MVC;227
13.1.3;12.1.3 Ausgabe von Komponenten überschreiben;227
13.1.3.1;12.1.3.1 Struktur;227
13.1.3.2;12.1.3.2 Override erstellen;228
13.1.3.3;12.1.3.3 Alternatives Layout erstellen;229
13.1.3.4;12.1.3.4 Überblick über Joomla!-Komponenten;230
13.1.3.5;12.1.3.5 Auswahl der Alternativen Layouts im Backend;231
13.1.4;12.1.4 Menütypen für Alternative Layouts anlegen;234
13.1.4.1;12.1.4.1 Struktur;235
13.1.5;12.1.5 Ausgabe von Modulen überschreiben;237
13.1.5.1;12.1.5.1 Struktur;237
13.1.5.2;12.1.5.2 Overrides anlegen;237
13.1.5.3;12.1.5.3 Alternative Layouts anlegen;238
13.1.5.4;12.1.5.4 Auswahl im Backend;239
13.1.6;12.1.6 Modul Chrome;240
13.1.6.1;12.1.6.1 Aufruf;240
13.1.6.2;12.1.6.2 Definition;240
13.1.6.3;12.1.6.3 Eigenen Chrome anlegen;242
13.1.6.4;12.1.6.4 Verwendung Modul Overrides vs. Chrome Stile;243
13.1.7;12.1.7 Ausgabe von jLayouts überschreiben;243
13.1.7.1;12.1.7.1 Struktur;243
13.1.7.2;12.1.7.2 Override anlegen;244
13.1.7.3;12.1.7.3 Eigene jLayouts anlegen;244
13.1.8;12.1.8 Overrides über den Template-Manager erstellen;244
13.1.9;12.1.9 Ausgabe von Plug-ins überschreiben;245
13.1.9.1;12.1.9.1 Struktur;245
13.1.9.2;12.1.9.2 Overrides anlegen;245
13.1.10;12.1.10 Ausgabe der Paginierung überschreiben;246
13.1.11;12.1.11 Media-Dateien überschreiben;247
13.1.11.1;12.1.11.1 Der Media-Ordner;247
13.1.11.2;12.1.11.2 Skripte überschreiben;247
13.1.11.3;12.1.11.3 Bilder überschreiben;248
13.1.11.4;12.1.11.4 Stile überschreiben;249
13.1.11.5;12.1.11.5 Dateien außerhalb des Media-Ordners;249
13.1.12;12.1.12 Ausgabe von Sprachdateien überschreiben;250
13.2;12.2 Joomla!-Template-Workshop;254
13.2.1;12.2.1 Download der Beispieldateien;255
13.2.2;12.2.2 Aufbau eines Joomla!-Templates;258
13.2.3;12.2.3 Bearbeitung der templateDetails.xml;263
13.2.4;12.2.4 Basisangaben in der index.php;272
13.2.4.1;12.2.4.1 Joomla!-spezifische PHP-Anweisungen;272
13.2.4.2;12.2.4.2 Stylesheet-Dateien einbinden;273
13.2.4.3;12.2.4.3 Skript-Dateien einbinden;274
13.2.4.4;12.2.4.4 Head laden – Jdoc-Anweisung;277
13.2.4.5;12.2.4.5 Template-Parameter;278
13.2.5;12.2.5 Module in der index.php laden;283
13.2.5.1;12.2.5.1 Jdoc-Anweisung;283
13.2.5.2;12.2.5.2 Menü;283
13.2.5.3;12.2.5.3 Seitenheader;287
13.2.5.4;12.2.5.4 Teaser;293
13.2.5.5;12.2.5.5 Icon-Modul;296
13.2.5.6;12.2.5.6 Portfolio-Modul;302
13.2.5.7;12.2.5.7 Call-to-Action-Bereich;308
13.2.5.8;12.2.5.8 Kontaktbereich im Footer;309
13.2.6;12.2.6 Verweise korrigieren;313
13.2.7;12.2.7 Weitere Jdoc-Anweisungen;313
13.2.8;12.2.8 Inhaltsbereich/Komponente;314
13.3;12.3 Weitere Joomla!-Template-Dateien;320
13.3.1;12.3.1 component.php;320
13.3.2;12.3.2 offline.php;320
13.3.3;12.3.3 error.php;321
13.3.4;12.3.4 pagination.php;322
13.4;12.4 Übersicht Joomla!-Befehle;322
13.5;12.5 Template-Frameworks und Template-Generatoren;324
13.6;12.6 CSS-Frameworks;325
13.7;12.7 Taskrunner;326
13.8;12.8 Barrierefreiheit;327
13.9;12.9 Backend-Template;328
14;13 Suchmaschinenoptimierung;330
14.1;13.1 Meta-Daten;330
14.2;13.2 SEF URLs;333
14.2.1;13.2.1 URL-Rewriting;335
14.2.2;13.2.2 Das Duplicate-Content-Problem;337
14.3;13.3 Umleitungen;337
14.4;13.4 Erweiterungen;339
14.4.1;13.4.1 sh404SEF;339
14.4.2;13.4.2 OSMap;340
14.4.3;13.4.3 Easy Frontend SEO;340
15;14 Mehrsprachigkeit;342
15.1;14.1 Integrierte Mehrsprachigkeit;342
15.1.1;14.1.1 Prinzip;342
15.1.2;14.1.2 Aktivierung der Sprachen;343
15.1.3;14.1.3 Aktivierung des Plug-ins;343
15.1.4;14.1.4 Aktivierung des Moduls;345
15.1.5;14.1.5 Sprachzuweisung der Beiträge;347
15.1.6;14.1.6 Sprachzuweisung der Menüeinträge;348
15.1.7;14.1.7 Sprachzuweisung der Module;352
15.1.8;14.1.8 Sprachverknüpfungen;354
15.2;14.2 FaLang;356
15.2.1;14.2.1 Prinzip;356
16;15 Spezialisierte Erweiterungen;358
16.1;15.1 Shop-Systeme;358
16.1.1;15.1.1 VirtueMart;359
16.1.2;15.1.2 HikaShop;359
16.1.3;15.1.3 J2Store;360
16.1.4;15.1.4 JoomShopping;360
16.2;15.2 Formulare;360
16.2.1;15.2.1 RSForm Pro;361
16.2.2;15.2.2 FlexForms;361
16.3;15.3 Dokumentenmanagement;362
16.3.1;15.3.1 jDownloads;362
16.4;15.4 Kalender;363
16.4.1;15.4.1 JEvents;363
16.4.2;15.4.2 DPCalendar;363
16.5;15.5 Galerien;363
16.5.1;15.5.1 Komponente: PhocaGallery;363
16.5.2;15.5.2 Plug-in: Simple Image Gallery;364
16.6;15.6 Community-Lösungen;364
16.6.1;15.6.1 JomSocial;365
16.6.2;15.6.2 Community Builder;366
16.6.3;15.6.3 Kunena;366
17;16 Eigene Felder/SEBLOD®;368
17.1;16.1 Eigene Felder;368
17.1.1;16.1.1 Diese Joomla!-Komponenten unterstützen „Eigene Felder“;368
17.1.2;16.1.2 Feldtypen;369
17.1.2.1;16.1.2.1 Gemeinsame Grundeinstellungen;369
17.1.2.2;16.1.2.2 Gemeinsame Feldoptionen;371
17.1.2.3;16.1.2.3 Beschreibung der einzelnen Feldtypen;373
17.1.3;16.1.3 Felder anlegen – so geht es!;376
17.1.3.1;16.1.3.1 Anlegen einer Feldgruppe;376
17.1.3.2;16.1.3.2 Neues Feld anlegen;377
17.1.3.3;16.1.3.3 Feld-Reihenfolge ändern;377
17.1.3.4;16.1.3.4 Mehrsprachigkeit;378
17.1.4;16.1.4 Override der Eingabefelder;378
17.1.5;16.1.5 Felder ausgeben – so geht es!;378
17.1.5.1;16.1.5.1 Automatische Anzeige;378
17.1.5.2;16.1.5.2 Benutzerprofil;379
17.1.5.3;16.1.5.3 Im Beitrag;380
17.1.5.4;16.1.5.4 Im Kontakt;383
17.1.5.5;16.1.5.5 Im Kontaktformular;384
17.1.5.6;16.1.5.6 Override der Feldausgabe;387
17.1.6;16.1.6 Zugriff und Berechtigungen für „Eigene Felder“;388
17.1.7;16.1.7 Weitere Funktionen und ihre Grenzen;389
17.1.8;16.1.8 Beispielprojekt: Jobportal;390
17.1.8.1;16.1.8.1 Aufgabenstellung;390
17.1.8.2;16.1.8.2 Arbeitgeberinformationen;391
17.1.8.3;16.1.8.3 Stellenanzeigen;394
17.1.8.4;16.1.8.4 Bewerbungsformular;396
17.1.8.5;16.1.8.5 Frontend konfigurieren;397
17.1.8.6;16.1.8.6 Ausgabe im Frontend;399
17.2;16.2 SEBLOD®;405
17.2.1;16.2.1 Was ist SEBLOD®?;405
17.2.2;16.2.2 SEBLOD® installieren;405
17.2.3;16.2.3 Erste Orientierung;408
17.2.4;16.2.4 Globale Konfiguration;410
17.2.5;16.2.5 Der App-Ordner Manager;419
17.2.5.1;16.2.5.1 Struktur;419
17.2.5.2;16.2.5.2 Die eigene App;420
17.2.6;16.2.6 Formular- und Inhaltstypen;422
17.2.6.1;16.2.6.1 Orientierung;422
17.2.6.2;16.2.6.2 Formular- und Inhaltstyp erstellen;426
17.2.6.3;16.2.6.3 Formular- und Inhaltstypen im Frontend darstellen;427
17.2.7;16.2.7 Listen- und Suchtypen anlegen;427
17.2.7.1;16.2.7.1 Orientierung;427
17.2.7.2;16.2.7.2 Listen- und Suchtypen erstellen;432
17.2.7.3;16.2.7.3 Listen- und Suchtypen im Frontend darstellen;433
17.2.8;16.2.8 Felder hinzufügen;433
17.2.8.1;16.2.8.1 Vorhandene Eingabefelder hinzufügen;433
17.2.8.2;16.2.8.2 Eigene Felder hinzufügen;434
17.2.8.3;16.2.8.3 Ausgabefelder festlegen;438
17.2.8.4;16.2.8.4 Feld-Manager;438
17.2.9;16.2.9 Feldtypen/Feldgruppen;438
17.2.9.1;16.2.9.1 Auswahl;438
17.2.9.2;16.2.9.2 Button;441
17.2.9.3;16.2.9.3 Formular;441
17.2.9.4;16.2.9.4 HTML;443
17.2.9.5;16.2.9.5 Inhalt;444
17.2.9.6;16.2.9.6 Joomla!-Bibliothek (JForm);445
17.2.9.7;16.2.9.7 Joomla!;447
17.2.9.8;16.2.9.8 Kollektion;447
17.2.9.9;16.2.9.9 Suche;447
17.2.9.10;16.2.9.10 Textbereich;448
17.2.9.11;16.2.9.11 Upload;448
17.2.9.12;16.2.9.12 Wähler;450
17.2.9.13;16.2.9.13 #Core;450
17.2.10;16.2.10 Feld-Zusatzoptionen;451
17.2.10.1;16.2.10.1 Beschriftung und Variation;451
17.2.10.2;16.2.10.2 Live + Live Wert;451
17.2.10.3;16.2.10.3 Erforderlich/Validierung + Stufe;452
17.2.10.4;16.2.10.4 Zugriffsebene und Beschränkung;453
17.2.10.5;16.2.10.5 Abhängige Status (+ Berechnung);454
17.2.10.6;16.2.10.6 Markup + Markup-Klassen;456
17.2.10.7;16.2.10.7 Link + Typografie;457
17.2.10.8;16.2.10.8 Treffer + Stufen;459
17.2.10.9;16.2.10.9 Positionen;459
17.2.10.10;16.2.10.10 Der Zuweisen-Button;459
17.2.11;16.2.11 Templates;460
17.2.11.1;16.2.11.1 Templates installieren;461
17.2.11.2;16.2.11.2 Template-Overrides;461
17.2.11.3;16.2.11.3 Eigenes Template erstellen;465
17.2.12;16.2.12 Seiten-Manager (Joomla!-Multidomain);466
17.2.13;16.2.13 SEBLOD® Module;471
17.2.14;16.2.14 Backend-Menü erstellen;471
17.2.15;16.2.15 SEBLOD® Erweiterungen;472
17.2.16;16.2.16 Beispielprojekt: Jobportal;473
17.2.16.1;16.2.16.1 App-Ordner anlegen;473
17.2.16.2;16.2.16.2 Arbeitgeberinformationen;473
17.2.16.3;16.2.16.3 Stellenanzeigen;479
17.2.16.4;16.2.16.4 Jobsuche konfigurieren;487
17.2.16.5;16.2.16.5 Bewerbungsformular anlegen;488
17.2.17;16.2.17 Weitere CCK;491
18;17 Eigene Erweiterungen;494
18.1;17.1 Die Joomla!-API;494
18.2;17.2 Das MVC-Pattern;495
18.3;17.3 Wichtige Klassen;496
18.3.1;17.3.1 JFactory;496
18.3.2;17.3.2 JDatabase;497
18.3.3;17.3.3 JDatabaseQuery;498
18.3.4;17.3.4 JInput;499
18.3.5;17.3.5 JDocument;500
18.3.6;17.3.6 JFile/JFolder;501
18.3.7;17.3.7 JControllerLegacy;502
18.3.7.1;17.3.7.1 JControllerAdmin;503
18.3.7.2;17.3.7.2 JControllerForm;503
18.3.8;17.3.8 JModelLegacy;503
18.3.8.1;17.3.8.1 JModelAdmin;503
18.3.8.2;17.3.8.2 JModelForm;504
18.3.9;17.3.9 JViewLegacy;504
18.3.10;17.3.10 JForm;504
18.3.10.1;17.3.10.1 Verfügbare Feldtypen;504
18.3.11;17.3.11 JLayout;507
18.3.12;17.3.12 Weitere Klassen in der Kurzübersicht;507
18.3.13;17.3.13 Zur Verfügung stehende Konstanten;508
18.4;17.4 Tutorial: Wir programmieren eine Komponente für Stellenanzeigen;508
18.4.1;17.4.1 Anlegen der Verzeichnisstruktur;509
18.4.2;17.4.2 Anlegen der XML-Definition;509
18.4.3;17.4.3 Anlegen des Installationsskripts;512
18.4.4;17.4.4 Anlegen der SQL-Dateien für Installation, Deinstallation und Update;515
18.4.5;17.4.5 Anlegen des MVC-Patterns im Backend;517
18.4.5.1;17.4.5.1 Dispatcher;517
18.4.5.2;17.4.5.2 Die Backend-Controller;519
18.4.5.3;17.4.5.3 Die Backend-Models;521
18.4.5.4;17.4.5.4 Das Backend-Formular;526
18.4.5.5;17.4.5.5 Anlegen der Table-Klasse;528
18.4.5.6;17.4.5.6 Anlegen der View für die Listenansicht;530
18.4.5.7;17.4.5.7 Anlegen des Konfigurationsdialogs;539
18.4.5.8;17.4.5.8 Anlegen der Helper-Klasse;540
18.4.6;17.4.6 Anlegen der Backend-Sprachdateien;541
18.4.7;17.4.7 Anlegen der benötigten Medien-Dateien;543
18.4.8;17.4.8 Anlegen des MVC-Patterns im Frontend;544
18.4.8.1;17.4.8.1 Anlegen des Dispatchers;544
18.4.8.2;17.4.8.2 Anlegen des Controllers;545
18.4.8.3;17.4.8.3 Anlegen des Models;545
18.4.8.4;17.4.8.4 Anlegen der View;547
18.4.9;17.4.9 Anlegen der Frontend-Sprachdateien;550
18.4.10;17.4.10 Installieren der fertigen Erweiterung;550
18.5;17.5 Plug-ins entwickeln;551
18.5.1;17.5.1 Grundprinzip;551
18.5.2;17.5.2 Beispiel-Plug-in;552
18.5.3;17.5.3 Verfügbare Plug-in-Events;553
18.6;17.6 CLI-Applikationen entwickeln;560
18.7;17.7 Das FOF-Framework;562
18.7.1;17.7.1 Zentrale Konzepte;563
18.7.2;17.7.2 Nachteile des FOF-Frameworks;564
18.7.3;17.7.3 Vorteile des Frameworks;564
19;18 Best Practices;566
19.1;18.1 Sinnvolle Erweiterungen im professionellen Umfeld;566
19.1.1;18.1.1 OSMap;566
19.1.2;18.1.2 JCE;569
19.1.2.1;18.1.2.1 Installation und Konfiguration;569
19.1.2.2;18.1.2.2 Kostenpflichtige Zusatz-Plug-ins;577
19.1.2.3;18.1.2.3 Nutzung;577
19.1.3;18.1.3 ACL Manager;581
19.1.4;18.1.4 Advanced Module Manager;584
19.1.5;18.1.5 Akeeba Backup;586
19.1.5.1;18.1.5.1 Nutzung von Cloud-Storage;588
19.2;18.2 Einstellungen;589
19.2.1;18.2.1 Erweiterungen verstecken;589
19.2.2;18.2.2 Administrationsgestaltung;590
19.3;18.3 Administrationsenüs;591
19.4;18.4 Management-Tools;593
19.5;18.5 Standard-Paket;594
19.6;18.6 Fortbildungsmöglichkeiten;594
19.6.1;18.6.1 Joomla!-Events;594
19.6.2;18.6.2 Zertifizierung;595
20;19 Übertragung Offline > Online;596
20.1;19.1 Die Auswahl des richtiges Hosters;596
20.1.1;19.1.1 Das „www-run“-Problem;597
20.2;19.2 Transfer mittels FTP und phpMyAdmin;601
20.3;19.3 Transfer mit Akeeba Backup;607
20.4;19.4 Fallstricke nach dem Transfer;611
20.5;19.5 Online-Checkliste;611
21;20 Performance-Optimierungen;612
21.1;20.1 Optimierung der Generierungszeit;615
21.1.1;20.1.1 MySQL Query Caching;615
21.1.2;20.1.2 Opcode-Caches für PHP;615
21.1.3;20.1.3 Integriertes Joomla!-Caching;616
21.1.3.1;20.1.3.1 Seiten-Caching;618
21.1.3.2;20.1.3.2 Modul- und Komponenten-Caching;618
21.1.3.3;20.1.3.3 Erweitertes Caching;619
21.1.3.4;20.1.3.4 Leeren des Caches;619
21.2;20.2 Optimierung des HTML-Codes;620
21.3;20.3 Optimierung der Auslieferung;621
21.3.1;20.3.1 Aktivierung der GZIP-Komprimierung;621
21.3.2;20.3.2 Content Delivery Networks;622
22;21 Sicherheit;624
22.1;21.1 Motivation der Angreifer;624
22.2;21.2 Angriffstypen und Gegenmaßnahmen;626
22.2.1;21.2.1 SQL Injections;626
22.2.2;21.2.2 Directory Traversal;628
22.2.3;21.2.3 Remote Code Execution;630
22.2.4;21.2.4 Cross-Site-Scripting;630
22.2.5;21.2.5 Cross-Site Request Forgery;632
22.3;21.3 Sicherheitsmaßnahmen;633
22.3.1;21.3.1 Zwei-Faktor-Authentifizierung;634
22.4;21.4 Wie erkenne ich einen Hack?;636
22.5;21.5 Was tun nach dem Hack?;636
23;22 Update und Migration;640
23.1;22.1 Migrationen: theoretischer Ablauf;640
23.2;22.2 Schritt 1: Kopie erstellen;641
23.3;22.3 Schritt 2: Erweiterungen prüfen;642
23.3.1;22.3.1 Sonderfall Templates;643
23.4;22.4 Schritt 3: Backup!;644
23.5;22.5 Schritt 4: Migration;644
23.6;22.6 Schritt 5: Übertragen der Seite;646
23.7;22.7 Migration eigener Erweiterungen;646
24;Index;648







2
Über Joomla!









2.1
Content-Management-Systeme



Am Anfang dieses Buchs sollten wir uns zunächst einmal mit folgender Frage beschäftigen: Was ist eigentlich ein Content-Management-System (kurz CMS)? Die deutsche Übersetzung „Inhaltsverwaltungssystem“ hilft uns ein wenig weiter: Ein CMS ist eine Software zur Erstellung, Bearbeitung und Verwaltung von Informationen, die aus simplen Texten, aber auch aus komplexen Multimediaelementen (Bilder, Videos, Dokumente etc.) bestehen können. Dabei ist wichtig, dass die entsprechenden Inhalte im Regelfall ohne Programmierkenntnisse eingepflegt werden können.
Obwohl auch sog. Document-Management-Systeme (z.?B. Alfresco) oder Offline-CMS wie Jekyll im weitesten Sinne zu den Content-Management-Systemen gehören, bezieht sich der Begriff des CMS i.?d.?R. auf Web-Content-Management-Systeme, die ausschließlich als Webanwendungen arbeiten, also über den Webbrowser administriert werden.
Diese WCMS erlauben es mehreren Benutzern, gemeinschaftlich an den hinterlegten Informationen zu arbeiten, und sind medienneutral in ihrer Ausgabe. Medienneutral bedeutet dabei, dass die hinterlegten Informationen unabhängig vom Ausgabeformat (HTML, PDF, XLS) bzw. der Gestaltung der Ausgabe (einfaches Wechseln von Designs) hinterlegt sind und so aus einem „Inhaltspool“ verschiedene Arten von Dokumenten erzeugt werden können. Dies wird dadurch ermöglicht, dass die Inhalte erst beim Aufruf durch den Nutzer dynamisch in ihr finales Ausgabeformat gebracht werden. Das unterscheidet Web-CMS vom klassischen Vorgehen mit HTML-Editor und FTP-Programm, bei dem die einzelnen Inhalte statisch, also schon in ihrer endgültigen Form, auf dem Server hinterlegt sind.
Zu den bekanntesten Open-Source-CMS gehören das Blogsystem Wordpress, die Enterprise-Systeme Drupal und Typo3 sowie Joomla!.





2.2
Geschichte



Die Wurzeln von Joomla! liegen im CMS Mambo, das seit der Jahrtausendwende vom australischen Unternehmen Miro entwickelt und im Jahr 2002 als Open-Source-Software veröffentlicht wurde. Mambo entwickelte sich schnell zu einem sehr beliebten System und wurde so z.?B. im Jahr 2004 von der Zeitschrift Linux User and Developer als „Best Linux or Open Source Software“ ausgezeichnet. Im August 2005 entschied sich Miro dazu, die Mambo Foundation, einen gemeinnützigen Verein, zu gründen, um das Mambo-Projekt von Miro zu lösen und so zu gewährleisten, dass die Weiterentwicklung unabhängig vom Schicksal der Firma erfolgen kann.
Einige Tage später kam es jedoch zum Bruch zwischen dem aus Freiwilligen bestehenden Entwicklerteam und Miro, woraufhin das gesamte Entwicklerteam das Mambo-Projekt verließ, um sich unter dem Namen „Open Source Matters“ neu zu gruppieren. Als Grund für diesen Schritt gab das Entwicklerteam an, dass die Mambo Foundation ohne Beteiligung der Community gegründet worden sei und Miro weiterhin eine starke Kontrollfunktion ausübe, die mit einem Open-Source-Projekt nicht vereinbar wäre – so ließ sich z.?B. der Geschäftsführer von Miro zum Vorsitzenden der Foundation wählen.
Das Entwicklerteam entschloss sich daraufhin, einen eigenen Ableger von Mambo auf den Markt zu bringen, der im September 2005 unter dem Namen Joomla! in der Version 1.0 erschien. Joomla! leitet sich vom Suaheli-Wort „Jumla“ ab, das in der Übersetzung „Alle zusammen“ bedeutet. Joomla! 1.0 war zu diesem Zeitpunkt im Wesentlichen nur eine leicht fehlerbereinigte Version von Mambo 4.5.2.3, zog jedoch aufgrund des Wechsels des gesamten Entwicklerteams große Teile der Mambo-Community mit sich.
Nach der Veröffentlichung von Joomla! 1.0 und der Stabilisierung des Projekts entschloss sich das Entwicklerteam, den alten Code, der teilweise noch aus dem Jahr 2000 stammte, über Bord zu werfen und eine von Grund auf neu geschriebene Joomla!-Version 1.5 zu erstellen, die im Januar 2008 erschien und dem Projekt nochmals einen enormen Aufwind gab. In den aktuellen Versionen findet sich dadurch kein Code des Vorgängers Mambo mehr.





2.3
Organisation



Das Joomla!-Projekt ist in den letzten Jahren massiv gewachsen und musste dabei seine Strukturen mehrfach an die veränderten Anforderungen anpassen. Die aktuelle Organisationsstruktur befindet sich zum Zeitpunkt des Erscheinens dieses Buchs in einem Übergangsprozess, ist also noch nicht vollständig umgesetzt worden.
Die Grundstruktur des Projekts entspricht auf den ersten Blick der eines klassischen Unternehmens (siehe Bild 2.1).

Bild 2.1 Neue Organisationstruktur des Joomla!-Projekts

Basis des Projekts ist die juristische Person hinter Joomla!, nämlich die bereits erwähnte not-for-profit-Organisation „OpenSourceMatters Inc“ mit Sitz in New York.
OpenSourceMatters hat einen Vorstand, bestehend aus den Sonderrollen „Präsident/in“, „Vize-Präsident/in“, „Generalsekretär/in“ und „Schatzmeister/in“ sowie den Abteilungsleiter/innen der sieben Abteilungen, im Projektjargon als „Department Coordinator“ bezeichnet.
Derzeit sind die folgenden Abteilungen im Projekt vorgesehen:


Production: zuständig für die technische Entwicklung des eigenen Kernprodukts „Joomla! CMS“.


Legal: verteidigt die rechtlichen Interessen des Gesamtprojekts, insbesondere in Bezug auf die Marke „Joomla!“.


Marketing & Communication: koordiniert die interne und externe Kommunikation des Projekts und versucht die Verbreitung von Joomla! zu erhöhen.


Events: zuständig für alle Fragen rund um Veranstaltungen und Meetups.


Operations: kümmert sich um den Betrieb der Infrastruktur, den das Projekt benötigt, wie zum Beispiel die Website joomla.org.


Programs: betreut die verschiedenen Programme und Initiativen, an denen Joomla! beteiligt ist. Hierzu gehört zum Beispiel das „Google Summer of Code“-Programm oder das geplante Zertifizierungs-Programm für Joomla!-Administratoren und Dienstleister.


Local Communities: repräsentiert die lokalen Communities wie Usergroups oder nationale Vereine.


Jedes Department kann wiederum aus beliebig vielen Teams bestehen, die für jeweils einen bestimmten Aspekt zuständig sind. Im Department „Production“ könnte es hier z.?B. ein Team für die Übersetzung von Joomla! in andere Sprachen geben, ein Team für die Entwicklung von Joomla! 4.x sowie ein Team für die Dokumentation. Die Anzahl der Teams unterliegt dabei keiner Begrenzung, sondern kann frei gewählt werden.
Auf der Ebene der Teams angekommen besteht jedes Team aus den Positionen „Teamleiter/in“ und „stellv. Teamleiter/in“ sowie einer beliebigen Anzahl von Teammitgliedern. Die Aufnahme in ein Team erfolgt über ein Bewerbungsverfahren, das die Teams individuell gestalten können. Ein Team wiederum wählt dann den Teamleiter sowie seinen Stellvertreter, die Teamleiter eines Departments wählen den Department Coordinator und alle Department Coordinators wählen die passenden Personen für die vier genannten Sonderposten auf Vorstandsebene.
Die Projektstruktur verfügt somit über einige bemerkenswerte Merkmale:
Absolut alle Mitarbeiter im Projekt, ganz egal auf welcher Ebene, arbeiten unbezahlt und ehrenamtlich.
Es gibt nicht „die Firma“ hinter dem Projekt, die die Entwicklung steuert, sondern die Richtungsfindung und Entwicklung erfolgt im Rahmen von demokratischen Prozessen.
Es gibt klare Prozesse für Abstimmungen, Teamgründungen und -auflösungen sowie die Aufnahme neuer Mitarbeiter.
An dieser Stelle sollte jedoch nicht verschwiegen werden, dass die neue Struktur in der Community nicht unumstritten ist. Die Abstimmung über den Wechsel zum neuen Aufbau ging denkbar knapp aus und der derzeit stattfindende Wechsel von der alten auf die neue Struktur ist massiv hinter dem aufgestellten Zeitplan. Kritiker äußern dabei vor allem die folgenden Kritikpunkte:
Die neue Struktur ist zu bürokratisch. Langatmige Prozesse verlangsamen die Entscheidungsfindung und nehmen allen Beteiligten die nötige Flexibilität.
In der neuen Struktur konzentriert sich zu viel „Macht“ auf einige wenige Menschen, nämlich den Vorstand von OpenSourceMatters. Ein System der gegenseitigen Prüfung von mehreren gleichberechtigten Instanzen, wie es in der alten Struktur der Fall war, fehlt.
Der Wechsel zur neuen Struktur würde das Projekt über Monate beschäftigen und lähmen.
Zum jetzigen Zeitpunkt (Februar 2017) ist noch nicht...




Ihre Fragen, Wünsche oder Anmerkungen
Vorname*
Nachname*
Ihre E-Mail-Adresse*
Kundennr.
Ihre Nachricht*
Lediglich mit * gekennzeichnete Felder sind Pflichtfelder.
Wenn Sie die im Kontaktformular eingegebenen Daten durch Klick auf den nachfolgenden Button übersenden, erklären Sie sich damit einverstanden, dass wir Ihr Angaben für die Beantwortung Ihrer Anfrage verwenden. Selbstverständlich werden Ihre Daten vertraulich behandelt und nicht an Dritte weitergegeben. Sie können der Verwendung Ihrer Daten jederzeit widersprechen. Das Datenhandling bei Sack Fachmedien erklären wir Ihnen in unserer Datenschutzerklärung.