David Jardin, Elisa Foltyn
Joomla! 3
Professionelle Webentwicklung. Aktuell zu Version 3.7
Inhalt
6
1 Einleitung
18
2 Über Joomla!
20
2.1 Content-Management-Systeme
20
2.2 Geschichte
21
2.3 Organisation
21
2.4 Release-Strategie
24
3 Einrichten der Arbeitsumgebung
26
3.1 Lokaler Webserver
26
3.1.1 Windows
27
3.1.2 Linux
29
3.1.3 Mac OS X
32
3.1.4 Vagrant
35
3.2 Entwicklungstools
36
3.2.1 Texteditor
37
3.2.1.1 Windows: Notepad++
37
3.2.1.2 Alle Systeme: Sublime Text
37
3.2.2 Entwicklungsumgebung
38
3.2.2.1 Eclipse
38
3.2.2.2 PhpStorm
39
3.3 Wahl des Browsers
40
3.3.1 Nutzung der Chrome-Entwicklertools
41
3.4 FTP-Client
45
3.5 Passwort-Manager
46
4 Installation
48
4.1 Installation in der lokalen Umgebung
48
4.1.1 Sonderfall 1: der FTP-Modus
57
4.1.2 Sonderfall 2: mehrsprachige Installation
59
4.2 Installation auf dem Webspace des Hosters
61
4.3 Erste Handgriffe nach der Installation
62
4.3.1 Anpassung der robots.txt
62
4.3.2 Leeren des Verzeichnisses/images
63
5 Grundlegende Begriffe und Architektur
66
5.1 Grundlegende Begriffe
66
5.1.1 Backend/Frontend
66
5.1.2 Komponenten, Module, Plug-ins und Templates
67
5.1.3 Beiträge, Kategorien, Menüs
68
5.2 Architektur
69
5.2.1 Joomla!-Framework
70
5.2.2 Joomla!-CMS
70
5.2.3 Erweiterungen
71
6 Das Backend
72
6.1 Login
72
6.2 Grundaufbau und Kontrollzentrum
73
6.3 Allgemeine Konfiguration
75
6.4 Massenmail
82
6.5 Menü: Menüs und Inhalte
84
6.6 Medienverwaltung
84
6.7 Menü: Komponenten
88
6.8 Menü: Erweiterungen
89
6.9 Menü: Hilfe
90
7 Inhalte verwalten
92
7.1 Kategoriensystem anlegen
93
7.1.1 Kategorienübersicht
93
7.1.2 Kategorie anlegen
96
7.1.3 Anlegen einer untergeordneten Kategorie
100
7.1.4 Bestehende Kategorien ändern
101
7.1.5 Kategorien entfernen und wiederherstellen
103
7.1.6 Kategorien veröffentlichen und verstecken
104
7.1.7 Kategorie-Reihenfolge ändern
105
7.1.8 Freigeben von Kategorien
106
7.1.9 Wiederherstellen der Kategorienstruktur
107
7.1.10 Kategorienoptionen
108
7.1.11 Anwenden von Änderungen auf mehrere Kategorien
108
7.2 Inhalte erstellen
109
7.2.1 Beitragsübersicht
109
7.2.2 Neuen Beitrag anlegen
110
7.2.2.1 Der WYSIWYG-Editor TinyMCE
111
7.2.2.2 Bilder einfügen
119
7.2.2.3 Verlinkungen zu anderen Beiträgen einfügen
121
7.2.2.4 Seitenumbruch
123
7.2.2.5 Weiterlesen-Funktion
126
7.2.2.6 Module einfügen
127
7.2.2.7 WYSIWYG-Editor deaktivieren
128
7.2.2.8 Beitragsparameter
128
7.2.3 Allgemeine Optionen der Beitragskomponente
132
7.3 Haupteinträge
136
7.4 Versionierung
136
7.5 Verschlagwortung
138
7.5.1 Schlagworte anlegen
139
7.5.2 Schlagworte im Frontend
140
8 Navigationsstruktur anlegen
142
8.1 Das Menüsystem
142
8.1.1 Die Menübereiche
142
8.1.2 Die Menüeinträge
143
8.2 Menüeinträge anlegen
144
8.2.1 Menütypen
144
8.2.2 Menüeintrags-Parameter
148
8.2.3 Kategorienauflistungen
152
8.2.4 Kategorienblogs
155
8.3 Split-Navigationen anlegen
160
9 Das Template-System
162
9.1 Was ist ein Template?
162
9.1.1 Backend- und Frontend-Templates
163
9.1.2 Modulpositionen
163
9.2 Template-Übersicht
164
9.2.1 Template-Stile
165
9.2.2 Installierte Templates
165
9.3 Editieren der installierten Templates
166
9.4 Template-Stil wechseln
167
9.5 Template-Zuweisung
168
9.6 Parameter ändern
169
9.7 Manuelle Template-Anpassungen
170
9.8 Andere Templates nutzen
173
9.8.1 Template-Verzeichnisse
173
9.8.2 Template-Clubs
174
9.8.3 Installation
175
10 Joomla!-Erweiterungen
176
10.1 Integrierte Erweiterungen
176
10.1.1 Komponenten: Nutzung der Kontakt-Komponente
176
10.1.2 Komponenten: Nutzung des Suchindex
180
10.1.3 Module: Das RSS-Feed-Modul einbinden
181
10.1.3.1 Administrator-Module
188
10.1.4 Plug-ins
188
10.1.5 Sprachen
190
10.1.6 Templates
191
10.1.7 Bibliotheken
191
10.1.8 Überblick über die Standarderweiterungen
191
10.2 Erweiterungen verwalten
196
10.2.1 Erweiterungen finden
196
10.2.1.1 extensions.joomla.org
196
10.2.1.2 Checkliste für die Auswahl der passenden Erweiterung
199
10.2.1.3 Deutschsprachige Erweiterungsverzeichnisse
199
10.2.2 Erweiterungen installieren
200
10.2.2.1 Aus Webkatalog installieren
203
10.2.3 Erweiterungsmanager
205
10.2.3.1 Erweiterungen verwalten
205
10.2.3.2 Erweiterungen überprüfen
206
10.2.3.3 Erweiterungen aktualisieren
207
10.2.3.4 Datenbank
207
10.2.3.5 Warnungen
208
10.2.3.6 Sprachen installieren
209
10.2.3.7 Aktualisierungsquellen
210
11 Benutzer- und Rechteverwaltung
212
11.1 Benutzerverwaltung
212
11.2 Gruppen
214
11.3 Zugriffsebene
217
11.4 Berechtigungen
219
11.4.1 System-Berechtigungen
220
11.4.2 Komponenten-Berechtigungen
222
11.4.3 Kategorie-Berechtigungen
222
11.4.4 Eintragsberechtigungen
223
11.5 Parameter der Benutzerverwaltung
224
12 Overrides/Template Workshop
226
12.1 Overrides und Alternative Layouts
226
12.1.1 Einleitung
226
12.1.2 MVC
227
12.1.3 Ausgabe von Komponenten überschreiben
227
12.1.3.1 Struktur
227
12.1.3.2 Override erstellen
228
12.1.3.3 Alternatives Layout erstellen
229
12.1.3.4 Überblick über Joomla!-Komponenten
230
12.1.3.5 Auswahl der Alternativen Layouts im Backend
231
12.1.4 Menütypen für Alternative Layouts anlegen
234
12.1.4.1 Struktur
235
12.1.5 Ausgabe von Modulen überschreiben
237
12.1.5.1 Struktur
237
12.1.5.2 Overrides anlegen
237
12.1.5.3 Alternative Layouts anlegen
238
12.1.5.4 Auswahl im Backend
239
12.1.6 Modul Chrome
240
12.1.6.1 Aufruf
240
12.1.6.2 Definition
240
12.1.6.3 Eigenen Chrome anlegen
242
12.1.6.4 Verwendung Modul Overrides vs. Chrome Stile
243
12.1.7 Ausgabe von jLayouts überschreiben
243
12.1.7.1 Struktur
243
12.1.7.2 Override anlegen
244
12.1.7.3 Eigene jLayouts anlegen
244
12.1.8 Overrides über den Template-Manager erstellen
244
12.1.9 Ausgabe von Plug-ins überschreiben
245
12.1.9.1 Struktur
245
12.1.9.2 Overrides anlegen
245
12.1.10 Ausgabe der Paginierung überschreiben
246
12.1.11 Media-Dateien überschreiben
247
12.1.11.1 Der Media-Ordner
247
12.1.11.2 Skripte überschreiben
247
12.1.11.3 Bilder überschreiben
248
12.1.11.4 Stile überschreiben
249
12.1.11.5 Dateien außerhalb des Media-Ordners
249
12.1.12 Ausgabe von Sprachdateien überschreiben
250
12.2 Joomla!-Template-Workshop
254
12.2.1 Download der Beispieldateien
255
12.2.2 Aufbau eines Joomla!-Templates
258
12.2.3 Bearbeitung der templateDetails.xml
263
12.2.4 Basisangaben in der index.php
272
12.2.4.1 Joomla!-spezifische PHP-Anweisungen
272
12.2.4.2 Stylesheet-Dateien einbinden
273
12.2.4.3 Skript-Dateien einbinden
274
12.2.4.4 Head laden – Jdoc-Anweisung
277
12.2.4.5 Template-Parameter
278
12.2.5 Module in der index.php laden
283
12.2.5.1 Jdoc-Anweisung
283
12.2.5.2 Menü
283
12.2.5.3 Seitenheader
287
12.2.5.4 Teaser
293
12.2.5.5 Icon-Modul
296
12.2.5.6 Portfolio-Modul
302
12.2.5.7 Call-to-Action-Bereich
308
12.2.5.8 Kontaktbereich im Footer
309
12.2.6 Verweise korrigieren
313
12.2.7 Weitere Jdoc-Anweisungen
313
12.2.8 Inhaltsbereich/Komponente
314
12.3 Weitere Joomla!-Template-Dateien
320
12.3.1 component.php
320
12.3.2 offline.php
320
12.3.3 error.php
321
12.3.4 pagination.php
322
12.4 Übersicht Joomla!-Befehle
322
12.5 Template-Frameworks und Template-Generatoren
324
12.6 CSS-Frameworks
325
12.7 Taskrunner
326
12.8 Barrierefreiheit
327
12.9 Backend-Template
328
13 Suchmaschinenoptimierung
330
13.1 Meta-Daten
330
13.2 SEF URLs
333
13.2.1 URL-Rewriting
335
13.2.2 Das Duplicate-Content-Problem
337
13.3 Umleitungen
337
13.4 Erweiterungen
339
13.4.1 sh404SEF
339
13.4.2 OSMap
340
13.4.3 Easy Frontend SEO
340
14 Mehrsprachigkeit
342
14.1 Integrierte Mehrsprachigkeit
342
14.1.1 Prinzip
342
14.1.2 Aktivierung der Sprachen
343
14.1.3 Aktivierung des Plug-ins
343
14.1.4 Aktivierung des Moduls
345
14.1.5 Sprachzuweisung der Beiträge
347
14.1.6 Sprachzuweisung der Menüeinträge
348
14.1.7 Sprachzuweisung der Module
352
14.1.8 Sprachverknüpfungen
354
14.2 FaLang
356
14.2.1 Prinzip
356
15 Spezialisierte Erweiterungen
358
15.1 Shop-Systeme
358
15.1.1 VirtueMart
359
15.1.2 HikaShop
359
15.1.3 J2Store
360
15.1.4 JoomShopping
360
15.2 Formulare
360
15.2.1 RSForm Pro
361
15.2.2 FlexForms
361
15.3 Dokumentenmanagement
362
15.3.1 jDownloads
362
15.4 Kalender
363
15.4.1 JEvents
363
15.4.2 DPCalendar
363
15.5 Galerien
363
15.5.1 Komponente: PhocaGallery
363
15.5.2 Plug-in: Simple Image Gallery
364
15.6 Community-Lösungen
364
15.6.1 JomSocial
365
15.6.2 Community Builder
366
15.6.3 Kunena
366
16 Eigene Felder/SEBLOD®
368
16.1 Eigene Felder
368
16.1.1 Diese Joomla!-Komponenten unterstützen „Eigene Felder“
368
16.1.2 Feldtypen
369
16.1.2.1 Gemeinsame Grundeinstellungen
369
16.1.2.2 Gemeinsame Feldoptionen
371
16.1.2.3 Beschreibung der einzelnen Feldtypen
373
16.1.3 Felder anlegen – so geht es!
376
16.1.3.1 Anlegen einer Feldgruppe
376
16.1.3.2 Neues Feld anlegen
377
16.1.3.3 Feld-Reihenfolge ändern
377
16.1.3.4 Mehrsprachigkeit
378
16.1.4 Override der Eingabefelder
378
16.1.5 Felder ausgeben – so geht es!
378
16.1.5.1 Automatische Anzeige
378
16.1.5.2 Benutzerprofil
379
16.1.5.3 Im Beitrag
380
16.1.5.4 Im Kontakt
383
16.1.5.5 Im Kontaktformular
384
16.1.5.6 Override der Feldausgabe
387
16.1.6 Zugriff und Berechtigungen für „Eigene Felder“
388
16.1.7 Weitere Funktionen und ihre Grenzen
389
16.1.8 Beispielprojekt: Jobportal
390
16.1.8.1 Aufgabenstellung
390
16.1.8.2 Arbeitgeberinformationen
391
16.1.8.3 Stellenanzeigen
394
16.1.8.4 Bewerbungsformular
396
16.1.8.5 Frontend konfigurieren
397
16.1.8.6 Ausgabe im Frontend
399
16.2 SEBLOD®
405
16.2.1 Was ist SEBLOD®?
405
16.2.2 SEBLOD® installieren
405
16.2.3 Erste Orientierung
408
16.2.4 Globale Konfiguration
410
16.2.5 Der App-Ordner Manager
419
16.2.5.1 Struktur
419
16.2.5.2 Die eigene App
420
16.2.6 Formular- und Inhaltstypen
422
16.2.6.1 Orientierung
422
16.2.6.2 Formular- und Inhaltstyp erstellen
426
16.2.6.3 Formular- und Inhaltstypen im Frontend darstellen
427
16.2.7 Listen- und Suchtypen anlegen
427
16.2.7.1 Orientierung
427
16.2.7.2 Listen- und Suchtypen erstellen
432
16.2.7.3 Listen- und Suchtypen im Frontend darstellen
433
16.2.8 Felder hinzufügen
433
16.2.8.1 Vorhandene Eingabefelder hinzufügen
433
16.2.8.2 Eigene Felder hinzufügen
434
16.2.8.3 Ausgabefelder festlegen
438
16.2.8.4 Feld-Manager
438
16.2.9 Feldtypen/Feldgruppen
438
16.2.9.1 Auswahl
438
16.2.9.2 Button
441
16.2.9.3 Formular
441
16.2.9.4 HTML
443
16.2.9.5 Inhalt
444
16.2.9.6 Joomla!-Bibliothek (JForm)
445
16.2.9.7 Joomla!
447
16.2.9.8 Kollektion
447
16.2.9.9 Suche
447
16.2.9.10 Textbereich
448
16.2.9.11 Upload
448
16.2.9.12 Wähler
450
16.2.9.13 #Core
450
16.2.10 Feld-Zusatzoptionen
451
16.2.10.1 Beschriftung und Variation
451
16.2.10.2 Live + Live Wert
451
16.2.10.3 Erforderlich/Validierung + Stufe
452
16.2.10.4 Zugriffsebene und Beschränkung
453
16.2.10.5 Abhängige Status (+ Berechnung)
454
16.2.10.6 Markup + Markup-Klassen
456
16.2.10.7 Link + Typografie
457
16.2.10.8 Treffer + Stufen
459
16.2.10.9 Positionen
459
16.2.10.10 Der Zuweisen-Button
459
16.2.11 Templates
460
16.2.11.1 Templates installieren
461
16.2.11.2 Template-Overrides
461
16.2.11.3 Eigenes Template erstellen
465
16.2.12 Seiten-Manager (Joomla!-Multidomain)
466
16.2.13 SEBLOD® Module
471
16.2.14 Backend-Menü erstellen
471
16.2.15 SEBLOD® Erweiterungen
472
16.2.16 Beispielprojekt: Jobportal
473
16.2.16.1 App-Ordner anlegen
473
16.2.16.2 Arbeitgeberinformationen
473
16.2.16.3 Stellenanzeigen
479
16.2.16.4 Jobsuche konfigurieren
487
16.2.16.5 Bewerbungsformular anlegen
488
16.2.17 Weitere CCK
491
17 Eigene Erweiterungen
494
17.1 Die Joomla!-API
494
17.2 Das MVC-Pattern
495
17.3 Wichtige Klassen
496
17.3.1 JFactory
496
17.3.2 JDatabase
497
17.3.3 JDatabaseQuery
498
17.3.4 JInput
499
17.3.5 JDocument
500
17.3.6 JFile/JFolder
501
17.3.7 JControllerLegacy
502
17.3.7.1 JControllerAdmin
503
17.3.7.2 JControllerForm
503
17.3.8 JModelLegacy
503
17.3.8.1 JModelAdmin
503
17.3.8.2 JModelForm
504
17.3.9 JViewLegacy
504
17.3.10 JForm
504
17.3.10.1 Verfügbare Feldtypen
504
17.3.11 JLayout
507
17.3.12 Weitere Klassen in der Kurzübersicht
507
17.3.13 Zur Verfügung stehende Konstanten
508
17.4 Tutorial: Wir programmieren eine Komponente für Stellenanzeigen
508
17.4.1 Anlegen der Verzeichnisstruktur
509
17.4.2 Anlegen der XML-Definition
509
17.4.3 Anlegen des Installationsskripts
512
17.4.4 Anlegen der SQL-Dateien für Installation, Deinstallation und Update
515
17.4.5 Anlegen des MVC-Patterns im Backend
517
17.4.5.1 Dispatcher
517
17.4.5.2 Die Backend-Controller
519
17.4.5.3 Die Backend-Models
521
17.4.5.4 Das Backend-Formular
526
17.4.5.5 Anlegen der Table-Klasse
528
17.4.5.6 Anlegen der View für die Listenansicht
530
17.4.5.7 Anlegen des Konfigurationsdialogs
539
17.4.5.8 Anlegen der Helper-Klasse
540
17.4.6 Anlegen der Backend-Sprachdateien
541
17.4.7 Anlegen der benötigten Medien-Dateien
543
17.4.8 Anlegen des MVC-Patterns im Frontend
544
17.4.8.1 Anlegen des Dispatchers
544
17.4.8.2 Anlegen des Controllers
545
17.4.8.3 Anlegen des Models
545
17.4.8.4 Anlegen der View
547
17.4.9 Anlegen der Frontend-Sprachdateien
550
17.4.10 Installieren der fertigen Erweiterung
550
17.5 Plug-ins entwickeln
551
17.5.1 Grundprinzip
551
17.5.2 Beispiel-Plug-in
552
17.5.3 Verfügbare Plug-in-Events
553
17.6 CLI-Applikationen entwickeln
560
17.7 Das FOF-Framework
562
17.7.1 Zentrale Konzepte
563
17.7.2 Nachteile des FOF-Frameworks
564
17.7.3 Vorteile des Frameworks
564
18 Best Practices
566
18.1 Sinnvolle Erweiterungen im professionellen Umfeld
566
18.1.1 OSMap
566
18.1.2 JCE
569
18.1.2.1 Installation und Konfiguration
569
18.1.2.2 Kostenpflichtige Zusatz-Plug-ins
577
18.1.2.3 Nutzung
577
18.1.3 ACL Manager
581
18.1.4 Advanced Module Manager
584
18.1.5 Akeeba Backup
586
18.1.5.1 Nutzung von Cloud-Storage
588
18.2 Einstellungen
589
18.2.1 Erweiterungen verstecken
589
18.2.2 Administrationsgestaltung
590
18.3 Administrationsenüs
591
18.4 Management-Tools
593
18.5 Standard-Paket
594
18.6 Fortbildungsmöglichkeiten
594
18.6.1 Joomla!-Events
594
18.6.2 Zertifizierung
595
19 Übertragung Offline > Online
596
19.1 Die Auswahl des richtiges Hosters
596
19.1.1 Das „www-run“-Problem
597
19.2 Transfer mittels FTP und phpMyAdmin
601
19.3 Transfer mit Akeeba Backup
607
19.4 Fallstricke nach dem Transfer
611
19.5 Online-Checkliste
611
20 Performance-Optimierungen
612
20.1 Optimierung der Generierungszeit
615
20.1.1 MySQL Query Caching
615
20.1.2 Opcode-Caches für PHP
615
20.1.3 Integriertes Joomla!-Caching
616
20.1.3.1 Seiten-Caching
618
20.1.3.2 Modul- und Komponenten-Caching
618
20.1.3.3 Erweitertes Caching
619
20.1.3.4 Leeren des Caches
619
20.2 Optimierung des HTML-Codes
620
20.3 Optimierung der Auslieferung
621
20.3.1 Aktivierung der GZIP-Komprimierung
621
20.3.2 Content Delivery Networks
622
21 Sicherheit
624
21.1 Motivation der Angreifer
624
21.2 Angriffstypen und Gegenmaßnahmen
626
21.2.1 SQL Injections
626
21.2.2 Directory Traversal
628
21.2.3 Remote Code Execution
630
21.2.4 Cross-Site-Scripting
630
21.2.5 Cross-Site Request Forgery
632
21.3 Sicherheitsmaßnahmen
633
21.3.1 Zwei-Faktor-Authentifizierung
634
21.4 Wie erkenne ich einen Hack?
636
21.5 Was tun nach dem Hack?
636
22 Update und Migration
640
22.1 Migrationen: theoretischer Ablauf
640
22.2 Schritt 1: Kopie erstellen
641
22.3 Schritt 2: Erweiterungen prüfen
642
22.3.1 Sonderfall Templates
643
22.4 Schritt 3: Backup!
644
22.5 Schritt 4: Migration
644
22.6 Schritt 5: Übertragen der Seite
646
22.7 Migration eigener Erweiterungen
646
Index
648
© 2009-2024 ciando GmbH