Inhaltsverzeichnis
Inhaltsverzeichnis
Einleitung 1.1 Installation 1.2 Contao installieren 1.2.1 Den Safe Mode Hack verwenden 1.2.2 Manuelles Update 1.2.3 Live Update Service 1.2.4 Eine Installation umziehen 1.2.5 Den Live-Server konfigurieren 1.2.6 Administrationsbereich 1.3 Datensätze auflisten 1.3.1 Datensätze bearbeiten 1.3.2 Backend-Tastaturkürzel 1.3.3 Seiten verwalten 1.4 Komponenten 1.4.1 Themes 1.4.2 Stylesheets 1.4.3 Module 1.4.4 Seitenlayouts 1.4.5 Seitentypen 1.4.6 Inhalte verwalten 1.5 Artikel 1.5.1 Nachrichten 1.5.2 Termine 1.5.3 RSS-/Atom-Feed 1.5.4 Newsletter 1.5.5
Formulare 1.5.6
Kommentare 1.5.7 Templates 1.5.8
Markdown 1.5.9
Insert-Tags 1.5.10 Systemadministration 1.6
Benutzer und Gruppen 1.6.1 Erweiterungen 1.6.2
Systemwartung 1.6.3
1 2 Einleitung
Handbuch für Contao 3.5
Dies ist das offizielle Handbuch für Anwender und Entwickler. Die neuste Version ist unter docs.contao.org erhältlich.
Licence
The Contao documentation is licensed under a Creative Commons Attribution 3.0 License license (CC BY-NC-SA 3.0). If you want to redistribute a modified or unmodified version of the documentation, you can do so under the license terms.
If you contribute to the documentation, e.g. by creating pull requests, you grant us full usage rights of any content you create or upload. You also ensure that your content does not violate any third-party rights.
We are not claiming exclusive usage rights, therefore you are free to use your contributed content (e.g. texts or images) in any other project as well.
3 Installation
Installation
Die folgenden Abschnitte erklären die Installation und Aktualisierung von Contao. Sie lernen wie man das Contao-Installtool verwendet, wie man eine Installation per FTP synchronisiert, wie man den Safe Mode Hack einrichtet und wie man einen Webserver für Contao konfiguriert.
4 Contao installieren
Contao installieren
Laden Sie sich zunächst das aktuelle Contao-Archiv herunter und entpacken Sie es auf Ihrem lokalen Rechner. Verschieben Sie die Dateien in das htdocs -Verzeichnis Ihrer XAMPP-Installation oder kopieren Sie sie mit einem FTP-Programm (z.B. WinSCP) auf Ihren Server. Stellen Sie sicher dass auch die Datei .htaccess.default hochgeladen wird und benennen Sie diese danach auf .htaccess um. Der Basisordner heißt wahrscheinlich htdocs , httpdocs , html , public_html oder www .
Wenn Sie SSH-Zugriff auf den Server haben, können Sie Contao auch direkt über die Kommandozeile herunterladen, beispielsweise mit curl . Je nach gewünschter Version ist die URL anzupassen.
Neuste Version von Contao (4.x):
curl -L http://download.contao.org | tar -xzp
LTS-Version von Contao (3.5):
curl -L http://download.contao.org/lts | tar -xzp
Eine bestimmte Version (z.B. 3.5.2):
curl -L http://download.contao.org/3.5.2 | tar -xzp
Das Contao-Installtool
Um das Contao-Installtool aufzurufen, hängen Sie einfach /contao/install.php an die URL Ihrer Contao-Installation an. Beachten Sie, dass das Installtool mit einem Passwort gegen Brute Force-Attacken geschützt ist und gesperrt wird, wenn dreimal hintereinander ein falsches Passwort eingegeben wurde. Um diese Sperre aufzuheben, öffnen Sie die Datei system/config/localconfig.php in einem Texteditor, finden Sie die folgende Zeile und setzen Sie sie auf 0 .
$GLOBALS['TL_CONFIG']['installCount'] = 0; // Hebt die automatische Sperre auf
Datenbankverbindung herstellen
Melden Sie sich an der Administrationsoberfläche Ihres Servers (z.B. "Plesk" oder "cPanel") an und erstellen Sie eine neue Datenbank für Contao. Geben Sie die Zugangsdaten im Contao-Installtool ein und beachten Sie die abweichende Schreibweise UTF8 anstatt UTF-8 in MySQL!
Tabellen aktualisieren
Contao prüft bei der Installation die Tabellen der Datenbank und gibt eine Liste empfohlener Änderungen aus, wenn diese nicht aktuell sind. Lesen Sie diese Empfehlungen aufmerksam, denn Contao kennt nur seine eigenen Tabellen und wird versuchen, vermeintlich nicht benötigte Tabellen anderer Programme "aufzuräumen". Bestätigen Sie die Änderungen durch Anklicken der "Datenbank aktualisieren"-Schaltfläche.
Ein Template importieren
Ein Template ist eine vorkonfigurierte Webseite, die eine beispielhafte Seitenstruktur und verschiedene Stylesheets zur Formatierung der Contao Core-Module und -Inhaltselemente enthält.
5 Contao installieren
Seit Version 3.2.11 ist die Beispiel-Webseite nicht mehr im Downloadpaket enthalten. Abhängig von der eingesetzten Version kann die neue Contao Official Demo oder die alte Music Academy als Erweiterung installiert werden. Aufschluss über Kompatibilität gibt das Erweiterungsverzeichnis.
Vorgehen zur Installation der Demo:
1. Eine frische Contao Installation mit Admin-Account erstellen 2. Als Admin im Backend anmelden 3. Passende Erweiterung über das Extension Repository hinzufügen 4. Als Admin vom Backend abmelden 5. Installtool erneut aufrufen
Um ein Template zu importieren, wählen Sie den Eintrag aus dem Drop-Down-Menü und klicken Sie auf die "Template importieren"-Schaltfläche.
Achtung
Beim Import eines Templates werden bestehende Daten überschrieben!
Administrator-Konto erstellen
Wenn Sie kein Template importiert haben, müssen Sie ein Administrator-Konto erstellen, damit Sie sich am Contao-Backend anmelden können. Danach ist der Installationsprozess abgeschlossen. Der Link unten rechts leitet Sie zur Backend-Anmeldung weiter. Wenn Sie die Beispielwebseite importiert haben, können Sie sich dort als Benutzer "k.jones" mit dem Passwort "kevinjones" anmelden.
Contao Demo installieren
Siehe Vorgehen zur Installation der Demo im Abschnitt Ein Template importieren weiter oben.
Suchmaschinenfreundliche URLs verwenden
Wenn Sie einen Apache-Webserver haben und mod_rewrite verwenden dürfen, können Sie Contao dazu veranlassen, suchmaschinenfreundliche URLs zu generieren, die wie statische HTML-Seiten aussehen. Die dazu benötigten Rewrite-Regeln sind in der .htaccess.default -Datei im Contao-Verzeichnis gespeichert. Benennen Sie diese Datei um in .htaccess , damit sie vom Apache-Server erkannt wird, und rufen Sie anschließend das Modul "Einstellungen" im Contao-Backend auf. Wählen Sie die Option "URLs umschreiben" in der Gruppe "Frontend-Einstellungen" aus und speichern Sie Ihre Änderungen. Contao generiert jetzt statische URLs wie z.B. home.html anstatt index.php?id=12 .
6 Den Safe Mode Hack verwenden
Den Safe Mode Hack verwenden
Eventuell haben Sie beim Aufruf des Contao-Installtools die Mitteilung erhalten, dass die lokale Konfigurationsdatei nicht beschreibbar ist.
Dateizugriffsrechte
Die Bezeichnung "Safe Mode Hack" ist eigentlich nicht korrekt, da sie impliziert, dass das Problem durch den PHP safe_mode verursacht würde. Tatsächlich wird es jedoch von unzureichenden Dateizugriffsrechten verursacht und tritt auch bei deaktiviertem safe_mode auf, daher sollte es richtiger "File Permission Hack" heißen.
PHP als Apache-Modul läuft normalerweise als Benutzer wwwrun , www-data oder nobody , wohingegen die Dateien, die Sie per FTP hochgeladen haben, Ihrem Benutzer (z.B. web4 oder ab5678 ) gehören. Der Server verweigert Benutzern grundsätzlich den Zugriff auf fremde Dateien und macht auch für das PHP-Skript Contao keine Ausnahme.
FTP für Dateioperationen verwenden
Um das Rechteproblem zu umgehen, baut Contao eine FTP-Verbindung auf und legt die Ressourcen unter dem FTP-Benutzer an. Sie müssen dafür nur Ihre FTP-Zugangsdaten im Installtool eintragen. Achten Sie dabei besonders auf den korrekten relativen Pfad vom FTP-Basisordner zum Contao-Verzeichnis (z.B. html/ , public_html/ oder httpdocs/ ).
Ein paar wenige Verzeichnisse benötigen trotz Safe Mode Hack Schreibrechte, weil PHP direkt auf sie zugreift:
assets/images
assets/images/*
system/logs
7 Den Safe Mode Hack verwenden
system/tmp
Die Schreibrechte (CHMOD 777) werden vom Installtool automatisch gesetzt und müssen in der Regel nicht manuell nachgearbeitet werden. Falls dies doch einmal notwendig sein sollte, passen Sie bitte nur diese drei Verzeichnisse an – auch wenn Sie in einem Tutorial oder dem Contao-Forum etwas anderes gelesen haben sollten!
8 Manuelles Update
Manuelles Update
Bei der manuellen Aktualisierung einer Contao-Installation können Sie entweder das komplette Contao-Archiv auf den Server übertragen (Dateien ersetzen) oder nur die geänderten Dateien hochladen (Dateien synchronisieren). In jedem Fall sollten Sie vorher folgende Dateien und Ordner sichern - nur für den Fall, dass ein Fehler auftritt oder Sie sie versehentlich überschreiben:
files/*
system/config/dcaconfig.php
system/config/initconfig.php
system/config/langconfig.php
system/config/localconfig.php
system/config/pathconfig.php
templates/*
Dieses Backup umfasst Ihre lokale Konfiguration, eventuell angepasste Templates sowie die hochgeladenen Dateien.
Dateien ersetzen
Die Dateien einer Contao-Installation zu ersetzen ist relativ simpel. Übertragen Sie einfach das Contao-Archiv auf Ihren Server oder entpacken Sie es auf Ihrem lokalen Rechner und kopieren Sie die Dateien anschließend mit einem FTP-Programm (wir empfehlen WinSCP). Danach stellen Sie die Dateien aus dem Backup wieder her und entfernen eventuelle Überbleibsel vorheriger Contao-Versionen.
Achtung: Wenn Sie Third-Party-Erweiterungen installiert haben, müssen Sie diese ebenfalls sichern und nach dem Update wiederherstellen oder darauf achten, sie gar nicht erst zu überschreiben. Andernfalls müssen diese Module neu installiert werden, was bei einigen Erweiterungen zu Datenverlust führen kann!
Sollte der Composer-Client im Einsatz sein, muss das Verzeichnis /composer ebenfalls gesichert werden.
Dateien synchronisieren
Um eine Contao-Installation zu synchronisieren, können Sie entweder das Unix Diff-Programm oder einen FTP-Client verwenden. Unix-Utilities werden normalerweise nur von Serveradministratoren verwendet, daher werden sie hier nicht erklärt. Um Dateien per FTP zu synchronisieren, öffnen Sie WinSCP und verbinden Sie sich mit dem Server. Erstellen Sie ein Backup der oben genannten Dateien und navigieren Sie dann zum Contao-Verzeichnis und klicken Sie auf die "Dateien synchronisieren"- Schaltfläche.
9 Manuelles Update
Treffen Sie Ihre Auswahl wie in der Abbildung und wählen Sie unbedingt die Option "Änderungsvorschau" aus, damit Sie die zu aktualisierenden Dateien noch einmal prüfen können. Bestätigen Sie danach die Einstellungen im Vorschaufenster und achten Sie besonders auf die zu löschenden Ressourcen! Klicken Sie "OK", um den Synchronisationsvorgang zu starten.
Die Datenbank aktualisieren
Nachdem Sie die Contao-Dateien aktualisiert haben, müssen Sie noch die Datenbank auf den neuesten Stand bringen. Diese Arbeit übernimmt das Contao-Installtool für Sie. Geben Sie Ihr Passwort ein, scrollen Sie bis zum Datenbank-Abschnitt und bestätigen Sie die Änderungen.
Den internen Cache leeren
10 Manuelles Update
Zum Schluss muss noch der interne Cache (DCA- und Sprachdateien) geleert und neu angelegt werden. Gehen Sie im Backend zur "Systemwartung" und wählen unter "Daten bereinigen" den Punkt "Internen Cache leeren" aus. Bestätigen Sie die Aktion mit "Daten bereinigen".
Nun erscheint in der Kopfzeile vom Backend ein Hinweis, dass der interne Cache noch nicht aufgebaut wurde. Erstellen Sie den internen Cache in dem Sie in der Kopfzeile "Den Cache aufbauen" anklicken.
11 Live Update Service
Live Update Service
Der Contao Live Update-Service ist ein kommerzielles Contao Add-on von iNet Robots, der Firma des Contao-Gründers und Kernentwicklers, Leo Feyer. Es ermöglicht die Aktualisierung Ihrer Installation mit wenigen Klicks im Backend, ohne ein Contao-Archiv herunterzuladen oder die Dateien mit einem FTP-Programm zu synchronisieren.
Eine Contao Live Update ID bestellen
Das Live Update umfasst folgende Funktionen:
Beliebige Up- und Downgrades auf alle Contao-Versionen Automatisches Backup der Datenbank vor dem Update Individuelle Prüfung und Vervollständigung der Contao-Installation Vergleich der angepassten Templates mit den Originaldateien
Versionsauswahl
Template-Unterschiede
12 Live Update Service
Fehlersuche
99% aller Live Update-Probleme sind auf unzureichende Datei-Zugriffsrechte zurück zu führen. Contao benötigt Schreibrechte, um Dateien und Ordner zu verwalten, daher sollten Sie als erstes Ihre Serverkonfiguration prüfen und sicherstellen, dass der Safe Mode Hack so wie in diesem Handbuch beschrieben konfiguriert ist!
Hinweis
Wenn Sie Probleme bei der Aktivierung Ihrer Live Update ID haben, wenden Sie sich bitte an den iNet Robots-Support. Bei Problemen mit dem Safe Mode Hack oder der Benutzung von Contao, wählen Sie bitte eine passende Support-Option auf der Support-Seite.
13 Eine Installation umziehen
Eine Installation umziehen
Der Umzug einer Contao-Installation von einem lokalen Server auf einen Live-Server ist nicht viel anders als eine neue Installation, außer dass Sie die Dateien Ihrer lokalen Installation statt denen des Contao-Archivs sowie einen SQL-Dump Ihrer lokalen Datenbank verwenden.
Dateien kopieren
Öffnen Sie Ihr FTP-Programm, verbinden Sie sich mit dem Zielserver und übertragen Sie alle Dateien Ihrer lokalen Contao- Installation.
Datenbank exportieren
Ein MySQL-Dump lässt sich am einfachsten mit der Datenbankverwaltung "phpMyAdmin" erstellen. Als Serveradministrator können Sie natürlich auch das Programm mysqldump verwenden. Melden Sie sich an "phpMyAdmin" an, wählen Sie die zu exportierende Datenbank und klicken Sie auf die "Export"-Schaltfläche im oberen Menü. Um Kompatibilitätsprobleme zwischen verschiedenen MySQL-Versionen zu minimieren, ist es wichtig, die Einstellungen für den Export gemäß des folgenden Screenshots anzupassen:
Datenbank importieren
14 Eine Installation umziehen
Öffnen Sie "phpMyAdmin" auf dem Zielserver und erstellen Sie eine neue Datenbank für Contao. Je nach Serverkonfiguration ist das eventuell nur über die Verwaltungsoberfläche (z.B. "Plesk" oder "cPanel") möglich. Wählen Sie die neue leere Datenbank aus und klicken Sie auf die "Import"-Schaltfläche im oberen Menü. Laden Sie dann den SQL-Dump der lokalen Datenbank hoch und starten Sie den Import.
Datenbank-Konfiguration anpassen
Als Letztes öffnen Sie das Contao-Installtool der neuen Installation (das Passwort ist dasselbe wie für Ihre lokale Installation) und passen wenn nötig die Datenbank-Zugangsdaten an. Danach können Sie sich wie gewohnt mit Ihrem Benutzernamen im Backend anmelden.
15 Den Live-Server konfigurieren
Den Live-Server konfigurieren
In diesem Kapitel geht es nicht darum, den Apache-Dienst zu installieren oder PHP zu kompilieren, was auf einem Shared- Hosting-Server ohnehin nicht möglich ist. Stattdessen wird erklärt, wie man die Contao-Systemvoraussetzungen prüft und PHP 5 aktiviert.
Contao-Systemvoraussetzungen
Contao benötigt einen Webserver wie Apache oder IIS mit PHP- und MySQL-Support.
Software Version (min.)
PHP 5.4.0
MySQL 5.0.3
Außerdem benötigen Sie verschiedene PHP-Erweiterungen, um von allen Funktionen profitieren zu können.
PHP-Erweiterungen für Pflicht
GDlib Bildbearbeitung Ja
DOM XML-Dateien Ja
SOAP Extension Repository Nein
Phar Live Update Nein
mbstring internationale Zeichen Nein
mcrypt Verschlüsselung Nein
Hinweis
Je nach installierten Extensions kann es außerdem notwendig sein die PHP Variable max_input_vars zu erhöhen (bspw. auf 2000 oder höher). Andernfalls können zu lange Backend Formulare nicht komplett abgeschickt werden.
Contao wurde erfolgreich in allen modernen Browsern wie Firefox oder Internet Explorer (ab Version 9) getestet.
Der Contao-Check
Laden Sie den Contao-Check herunter und finden Sie heraus, ob Ihr Server die Contao-Systemvoraussetzungen erfüllt. Der Contao-Check prüft, ob Sie das Extension Repository und das Live Update nutzen können und ob Sie den Safe Mode Hack benötigen oder nicht. Je nach Systemkonfiguration können Sie mit Hilfe des Web-Installers eine neue Contao-Installation aufsetzen oder eine bestehende Installation prüfen.
16 Den Live-Server konfigurieren
Entpacken Sie die Zip-Datei, übertragen Sie den Ordner check in Ihr Contao-Verzeichnis und öffnen Sie ihn in einem Browser.
Den Contao-Check herunterladen | Zum Projekt auf GitHub
Provider-spezifische Einstellungen
Es gibt ein paar wenige große Internet Service Provider, die spezielle Einstellungen für den Betrieb von Contao erfordern. Zum Glück sind sie nur die Ausnahme von der Regel. Die Provider-spezifische Einstellungen finden Sie im Contao-Forum. Sorgenfreies Contao-Hosting erhalten Sie bei den Contao Hosting-Partnern.
17 Administrationsbereich
Administrationsbereich
Um den Administrationsbereich (Backend) aufzurufen, hängen Sie einfach /contao an die URL Ihrer Contao-Webseite an.
Hinweis
Die Konten sind gegen Brute Force-Attacken geschützt und werden für 5 Minuten gesperrt, wenn dreimal hintereinander ein falsches Passwort eingegeben wurde. Beachten Sie dass die Groß-/Kleinschreibung bei Benutzername und Passwort berücksichtigt wird.
18 Datensätze auflisten
Datensätze auflisten
Die Contao Core-Engine unterstützt drei Ansichten: eine einfache Liste ("list view"), eine nach der übergeordneten Tabelle gruppierte Liste ("parent view") und eine hierarchische Liste ("tree view"). Diese drei Ansichten werden zur Darstellung der Daten im Backend verwendet.
List View
Der "List View" listet die Datensätze einer Tabelle in einer bestimmten Reihenfolge auf, normalerweise gruppiert nach Anfangsbuchstabe.
Parent View
Der "Parent View" listet die Datensätze einer Kindtabelle auf, die sich auf einen Datensatz der Elterntabelle beziehen. Eltern- Kind-Relationen kommen häufig vor in Contao, z.B. bei Artikeln und Inhaltselementen, Archiven und Nachrichten oder Stylesheets und Formatdefinitionen.
19 Datensätze auflisten
Tree View
Der "Tree View" listet Datensätze auf, die in einer hierarchischen Struktur organisiert sind. Contao unterstützt sowohl hierarchische Beziehungen innerhalb einer Tabelle (z.B. Seitenstruktur) als auch Kindtabellen, die sich auf hierarchische Elterntabellen beziehen (z.B. Artikel und Seiten).
20 Datensätze auflisten
Daten sortieren und filtern
Contao bietet mehrere Möglichkeiten, Auflistungen zu sortieren und zu filtern, damit Sie auch bei mehreren tausend Datensätzen den Überblick behalten. Viele Listen können anhand eines oder mehrerer Felder eingeschränkt werden. Die meisten bieten zusätzlich eine Volltext-Suche an, die sogar reguläre Ausdrücke unterstützt. Um die Ladezeit zu optimieren, zeigt Contao immer nur 30 Datensätze auf einmal an.
21 Datensätze auflisten
22 Datensätze bearbeiten
Datensätze bearbeiten
Contao bietet etliche professionelle Funktionen, die das Bearbeiten von Daten so einfach und komfortabel wie möglich machen. Sie können zu früheren Versionen zurück gehen, gelöschte Datensätze wiederherstellen, Elemente via Clipboard verschieben und sogar mehrere Datensätze auf einmal bearbeiten. Die meisten dieser Funktionen sind über die Navigationssymbole aufrufbar.
Icons im List View
Der "List View" als einfachste Ansicht bietet nur die vier grundlegenden Befehle: bearbeiten, duplizieren, löschen und Info.
Icons im Parent View
Der "Parent View" bietet zwei zusätzliche Icons, um die Reihenfolge der Datensätze zu kontrollieren. Die Reihenfolge kann auch mittels Drag & Drop geändert werden. Dazu einfach auf das "Drag & Drop" Icon klicken und an die neue Position bewegen.
23 Datensätze bearbeiten
Icons im Tree View
Im "Tree View" werden weitere Icons benötigt, um die hierarchische Struktur abbilden zu können. Neben dem Kopieren eines einzelnen Datensatzes können auch ganze Teilbäume dupliziert und entweder in einen oder nach einem anderen Datensatz eingefügt werden.
24 Datensätze bearbeiten
Frühere Versionen wiederherstellen
Contao erstellt bei jedem Speichervorgang automatisch eine neue Version eines Datensatzes. Sobald es mehr als eine Version gibt, erscheint oberhalb des Formulars ein Drop-Down-Menü, mit dem Sie zu einer früheren Versionen zurück gehen können.
Durch Klick auf das Icon rechts des Drop-Down-Menüs werden die Unterschiede zwischen der aktuellen und der gewählten Version angezeigt.
25 Datensätze bearbeiten
Mehrere Datensätze bearbeiten
Die Möglichkeit, mehrere Datensätze auf einmal zu bearbeiten, hebt Contao klar von den Mitbewerbern ab. Wechseln Sie den Bearbeitungsmodus durch Anklicken der "Mehrere bearbeiten"-Schaltfläche und wählen Sie dann die zu bearbeitenden Datensätze und Felder aus.
26 Datensätze bearbeiten
27 Datensätze bearbeiten
28 Backend-Tastaturkürzel
Backend-Tastaturkürzel
Um den Workflow bei der Arbeit mit Contao zu beschleunigen, gibt es im Backend etliche Tastaturkürzel, mit denen sich bestimmte Befehle direkt aufrufen lassen. Zum Beispiel können Sie die Schaltfläche "Speichern" am Ende eines Eingabeformulars alternativ zur Bedienung mit der Maus auch mit dem Tastaturkürzel [Alt]+[s] ansteuern.
Allgemeine Tastaturkürzel
Tastaturkürzel Schaltfläche Erklärung
[Alt]+[h] Startseite Zur Startseite des Backend (Home).
[Alt]+[q] Abmelden Beendet die aktuelle Backend-Sitzung (Quit).
[Alt]+[t] Nach oben Springt zum Anfang der Seite (Top).
[Alt]+[b] Zurück Zurück zur vorherigen Seite (Back).
[Alt]+[n] Neuer Datensatz Legt einen neuen Datensatz an (New).
[Alt]+[e] Mehrere bearbeiten Wechselt in den "mehrere bearbeiten"-Modus (Edit multiple).
[Alt]+[f] Frontend-Vorschau Öffnet die Frontend-Vorschau in einem neuen Fenster (Front end preview).
Tastaturkürzel im Bearbeitungsmodus
Tastaturkürzel Schaltfläche Erklärung
[Alt]+[s] Speichern Speichert das aktuelle Eingabeformular (Save).
Speichern Speichert und schließt das aktuelle Eingabeformular (Save and close). Sie gelangen [Alt]+[c] und zurück zur vorherigen Seite. schließen
Speichert und schließt das aktuelle Eingabeformular (Save and go back). Sie Speichern [Alt]+[g] gelangen zurück zur übergeordneten Seite, z.B. von einem Inhaltselement direkt zur und zurück Artikelübersicht.
Speichern Speichert das aktuelle Eingabeformular (Save and edit) und wechselt zur Ansicht [Alt]+[e] und der Kind-Datensätze, z.B. beim Anlegen von Stylesheets. bearbeiten
[Alt]+[n] Speichern Speichert das aktuelle Eingabeformular und legt einen neuen Datensatz an (Save und neu and new).
Tastaturkürzel im Modus "mehrere bearbeiten"
Tastaturkürzel Schaltfläche Erklärung
Löscht alle ausgewählten Datensätze im Modus »mehrere [Alt]+[d] Mehrere löschen bearbeiten« (Delete).
Verschiebt alle ausgewählten Datensätze im Modus »mehrere [Alt]+[x] Mehrere verschieben bearbeiten«.
Kopiert alle ausgewählten Datensätze im Modus »mehrere [Alt]+[c] Mehrere kopieren bearbeiten« (Copy).
Überschreibt alle ausgewählten Datensätze im Modus »mehrere [Alt]+[v] Mehrere überschreiben bearbeiten«.
29 Backend-Tastaturkürzel
[Shift] Mehrere Checkboxen Wählt mehrere Checkboxen aus wenn die Shift-Taste gedrückt wird. auswählen
Die beschriebenen Tastaturkürzel funktionieren in dieser Form nur unter Windows. Mac-Nutzer müssen anstatt der [Alt] -Taste
[Ctrl]+[⌥ Opt] in Verbindung mit dem jeweiligen Kürzel verwenden. Zudem weicht Firefox unter Windows leider vom gewohnten Standard ab, dort müssen Sie [Alt]+[Umsch] in Verbindung mit dem gewünschten Kürzel drücken.
30 Seiten verwalten
Seiten verwalten
Die folgenden Kapitel erklären, wie man Seiten in Contao verwaltet. Da Contao ein Seiten-basiertes CMS ist, sind Seiten und die Seitenstruktur die zentralen Elemente Ihrer Webseite und jeder Inhalt, der nicht mit einer Seite assoziiert ist, erscheint auch niemals im Frontend.
31 Komponenten
Komponenten
Das Zusammenspiel von Seiten, Artikeln, Inhaltselementen und Modulen zu verstehen, ist der Schlüssel zum Erlernen von Contao. Wie bereits erwähnt, ist die Seitenstruktur das zentrale Element der Webseite. Besucher rufen grundsätzlich immer Seiten auf und niemals einzelne Artikel, wie es in einem Node-basierten Content Management System der Fall ist.
Das Diagramm verdeutlicht, dass Artikel und Layouts die beiden wichtigsten Komponenten einer Seite sind. Während Artikel die Inhalte einer Seite speichern, legt das Seitenlayout fest, wie diese auf der Webseite dargestellt werden. Layouts in Contao sind natürlich CSS-basiert und verwenden keine Layout-Tabellen. Auf den folgenden Seiten wird erklärt, wie man Stylesheets und Frontend-Module anlegt, sie zu einem Layout kombiniert und sie anschließend einer neu erstellten Seite zuweist.
32 Themes
Themes
Das Design einer Webseite besteht normalerweise aus Stylesheets, Frontendmodulen, Seitenlayouts, Dateien und Templates, die Sie im Contao-Backend verwalten können. Der Theme-Manager ändert diesen Ansatz nicht, er fügt lediglich eine Möglichkeit hinzu, die Ressourcen zu exportieren und wieder zu importieren (Video-Einführung ansehen).
Themes versus Frontend-Templates
Der Hauptunterschied zwischen Themes und Frontend-Templates ist, dass ein Frontend-Template eine vollständig vorkonfigurierte Beispielwebseite mit einer beispielhaften Seitenstruktur, Artikeln, Inhaltselementen und sogar Benutzern und Gruppen enthält. Ein Theme enthält dagegen nur das eigentliche Design der Webseite und kann deswegen importiert werden, ohne dass bestehende Daten verloren gehen.
Theme-Bestandteile
Ein Theme ist eine Gruppe von Stylesheets, Frontend-Modulen und Seitenlayouts, die alle in der Datenbank gespeichert sind und automatisch vom Theme Exporter erkannt werden. Sie werden diese Elemente in den nächsten Abschnitten näher kennenlernen. Ein Theme beinhaltet darüber hinaus meistens auch Bilder und andere Dateien aus dem Files-Verzeichnis sowie optional angepasste Templates aus dem Templates-Verzeichnis. Diese Ressourcen sind jedoch nicht automatisch mit dem Theme verlinkt und müssen deswegen in den Theme-Einstellungen hinzugefügt werden, damit sie beim Theme-Export berücksichtigt werden.
33 Themes
Theme-Export und -Import
Um ein Theme zu exportieren, klicken Sie einfach auf die Export-Schaltfläche und speichern Sie die .cto-Datei auf Ihrem lokalen Computer. Obwohl .cto eine proprietäre Dateiendung für Contao-Themes ist, handelt es sich dabei eigentlich um ZIP-Archive, die Sie mit jedem Programm entpacken können, das .zip-Dateien unterstützt. Um ein Theme zu reimportieren, übertragen Sie die .cto- Datei auf Ihren Webserver, öffnen Sie den Theme-Manager im Contao-Backend und klicken Sie auf "Theme importieren". Sie können mehrere Themes auf einmal importieren. Nachdem der Import abgeschlossen ist, können Sie das Seitenlayout des neuen Themes in der Seitenstruktur zuweisen.
34 Stylesheets
Stylesheets
Barrierefreie Webseiten sollten immer mit CSS formatiert werden, daher enthält Contao ein "Stylesheets"-Modul, mit dem Sie Formatdefinitionen bequem im Backend verwalten können. Um die verschiedenen Contao-Elemente und -Module in einem Stylesheet zu referenzieren, müssen Sie deren Klassennamen kennen. Inhaltselement-Klassen beginnen mit "ce_" (z.B. "ce_text") und Modul-Klassen mit "mod_" (z.B. "mod_search"). Falls Sie sich nicht sicher sind, sehen Sie einfach im Quelltext der Webseite nach.
Jedes Stylesheet kann auf einen oder mehrere Medientypen und/oder eine bestimmte Version des Internet Explorers beschränkt werden, falls Sie einen der vielen darin enthaltenen Fehler gesondert beheben müssen. Achten Sie dabei auf die Reihenfolge der Formatdefinitionen, da frühere Anweisungen von späteren überschrieben werden können.
/* Zuerst den generellen Abstand setzen */ .mod_search { margin:24px; }
/* Danach die spezielle IE7-Anweisung */ *:first-child+html .mod_search { margin:18px; }
35 Stylesheets
Wäre die Reihenfolge umgekehrt, würde der allgemeine Abstand den IE-spezifischen Wert überschreiben.
36 Module
Module
Mit Hilfe von Frontend-Modulen können Sie Ihre Webseite um fast jede erdenkliche Funktionalität erweitern. Der Contao-Core enthält Module, um verschiedene Navigationsmodule zu erstellen, die Benutzerregistrierung und -anmeldung zu ermöglichen, die Webseite zu durchsuchen, RSS-Feeds zu importieren und vieles mehr. Module können im Backend unter "Themes" -> "Frontend- Module" konfiguriert werden.
Modul CSS-Klasse Beschreibung
Navigationsmenü mod_navigation Erzeugt ein Navigationsmenü aus der Seitenstruktur.
Individuelle Navigation mod_customnav Erzeugt ein individuelles Navigationsmenü.
Navigationspfad mod_breadcrumb Erzeugt einen Navigationspfad.
Quicknavigation mod_quicknav Erzeugt ein Drop-Down-Menü aus der Seitenstruktur.
Quicklink mod_quicklink Erzeugt ein individuelles Drop-Down-Menü.
Buchnavigation mod_booknav Erzeugt ein Buchnavigationsmenü.
Artikelnavigation mod_article_nav Erzeugt ein Seitenumbruch-Menü zur Artikelnavigation.
Sitemap mod_sitemap Erzeugt eine Liste aller Seiten aus der Seitenstruktur.
Login-Formular mod_login Erzeugt ein Anmeldeformular (Login).
Automatischer Logout - Meldet einen Benutzer automatisch ab (Logout).
Persönliche Daten mod_personalData Erzeugt ein Formular zur Bearbeitung der Benutzerdaten.
Registrierung mod_registration Erzeugt ein Formular zur Benutzerregistrierung.
Passwort ändern mod_changePassword Erzeugt ein Formular zur Passwort-Änderung.
Passwort vergessen mod_password Erzeugt ein Formular zur Passwort-Anforderung.
Konto schließen mod_closeAccount Erzeugt ein Formular zur Löschung eines Benutzerkontos.
Nachrichtenliste mod_newslist Fügt der Seite eine Nachrichtenliste hinzu.
Nachrichtenleser mod_newsreader Stellt einen einzelnen Nachrichtenbeitrag dar.
Nachrichtenarchiv mod_newsarchive Fügt der Seite ein Nachrichtenarchiv hinzu.
Nachrichtenarchiv-Menü mod_newsmenu Erzeugt ein Menü zur Navigation des Nachrichtenarchivs.
Kalender mod_calendar Fügt der Seite einen Kalender hinzu.
Eventleser mod_eventreader Stellt ein einzelnes Event dar.
Eventliste mod_eventlist Listet alle Events eines bestimmten Zeitraums auf.
Eventliste-Menü mod_eventmenu Erzeugt ein Menü zur Navigation der Eventliste.
Abonnieren mod_subscribe Erzeugt ein Formular zum Abonnieren von Verteilern.
Kündigen mod_unsubscribe Erzeugt ein Formular zum Kündigen von Abonnements.
Newsletterliste mod_nl_list Fügt der Seite eine Newsletterliste hinzu.
Newsletterleser mod_nl_reader Stellt einen einzelnen Newsletter dar.
FAQ-Liste mod_faqlist Fügt der Seite eine Liste häufig gestellter Fragen hinzu.
FAQ-Leser mod_faqreader Stellt die Antwort zu einer häufig gestellten Frage dar.
37 Module
FAQ-Seite mod_faqpage Gibt die FAQ-Liste und den FAQ-Leser auf derselben Seite aus.
Formular mod_form Fügt der Seite ein Formular hinzu.
Suchmaschine mod_search Fügt der Seite ein Suchfomular hinzu.
Kommentare mod_comments Kommentare bzw. Gästebuch-Einträge verwalten.
Auflistung mod_listing Listet die Daten einer beliebigen Tabelle auf.
Flash-Film mod_flash Bindet einen Flash-Film in eine Seite ein.
Artikelliste mod_article_list Erzeugt eine Liste aller Artikel einer Spalte.
Zufallsbild mod_random_image Fügt der Seite ein zufällig ausgewähltes Bild hinzu.
Eigener HTML-Code - Erlaubt das Hinzufügen von eigenem HTML-Code.
RSS-Reader mod_rss_reader Fügt der Seite einen RSS-Feed hinzu.
Zugriffsschutz
Jedes Frontend-Modul kann geschützt werden, so dass es nur Gäste oder Benutzer einer bestimmten Mitgliedergruppe sehen können.
38 Seitenlayouts
Seitenlayouts
Seitenlayouts definieren den grundsätzlichen Aufbau einer Seite, wie z.B. die Anzahl der Spalten oder die Gesamtbreite, und sie legen fest, welche Frontend-Module in welcher Spalte angezeigt werden. Sie ermöglichen zudem das Einbinden von Stylesheets und RSS- bzw. Atom-Feeds sowie das Einfügen einer Google Analytics ID oder beliebigem JavaScript-Code, der für die Steuerung interaktiver Elemente und Plugins benötigt wird. Das Contao CSS-Framework teilt das Browserfenster automatisch in mehrere Layoutbereiche auf.
Das impliziert, dass Sie zum Zeitpunkt der Erstellung eines Seitenlayouts bereits die benötigten Stylesheets und Frondend-Module angelegt haben müssen. Daher wird folgende Reihenfolge beim Anlegen von Ressourcen empfohlen:
Erstellen der benötigten Stylesheets Erstellen der benötigten Frontend-Module Optionale Erstellung von Nachrichtenarchiven oder Kalendern Erstellen eines neuen Seitenlayouts und Einbindung der Komponenten
39 Seitenlayouts
40 Seitentypen
Seitentypen
Der Typ einer Seite legt fest, ob sie statische Inhalte ausgibt, zu einer anderen Seite weiterleitet oder den Startpunkt einer Webseite innerhalb der Seitenstruktur markiert. Contao unterstützt folgende 6 Seitentypen:
Seitentyp Beschreibung
Reguläre Eine reguläre Seite enthält Artikel und Inhaltselemente. Sie verhält sich wie eine statische HTML-Seite. Seite
Externe Diese Seite leitet Besucher automatisch zu einer externen Webseite um (entspricht einem Hyperlink). Weiterleitung
Interne Diese Seite leitet Besucher automatisch zu einer anderen Seite innerhalb der Seitenstruktur um. Weiterleitung
Startpunkt einer Diese Seite kennzeichnet den Startpunkt einer neuen Webseite innerhalb der Seitenstruktur. Webseite
403 Zugriff Beim Aufruf einer geschützten Seite ohne Zugriffsrechte wird stattdessen die 403-Fehlerseite geladen. verweigert Diese Seite muss direkt unterhalb des Startpunktes einer Webseite angelegt werden.
404 Seite Beim Aufruf einer nicht vorhandenen Seite wird stattdessen die 404-Fehlerseite geladen. Diese Seite nicht muss direkt unterhalb des Startpunktes einer Webseite angelegt werden. gefunden
Startseite
Wenn das Frontend mit einer leeren Request URL geöffnet wird (z.B. http://www.example.org/ ), zeigt Contao die erste veröffentlichte Seite im jeweiligen Startpunkt. Der Alias dieser Seite sollte auf index gesetzt werden. Nur dann wird die erzeugte URL für diese Seite auch ein leerer Request sein.
Ab Version 3.5.18 wird außerdem automatisch auf die Startseite weitergeleitet, falls deren Alias nicht index lautet. Die URL inkludiert dann den Alias und das global definierte Suffix (z.B. http://www.example.org/home.html ).
Multidomain-Betrieb
Contao unterstützt mehrere Webseiten innerhalb der Seitenstruktur und leitet Besucher je nach DNS- und Spracheinstellungen automatisch auf einen bestimmten Startpunkt einer Webseite weiter. Nehmen wir an, Sie betreiben eine zweisprachige Firmenwebseite unter "www.example.com" und eine kleine private Webseite unter der Domain "www.personal.example.org". Sie benötigen dafür drei Startpunkte:
Typ DNS Sprachenkürzel Fallback-Sprache
Deutsche Firmenseite keine de nein
Englische Firmenseite keine en ja
Private Webseite www.personal.example.org de ja
Die folgende Tabelle zeigt, zu welcher Seite ein Besucher abhängig von der Domain und seiner Browsersprache weitergeleitet wird.
Domain Browsersprache Weiterleitung
www.example.com Englisch Englische Firmenseite
www.example.com Deutsch Deutsche Firmenseite
41 Seitentypen
www.example.com Spanisch Englische Firmenseite
www.personal.example.org egal Persönliche Webseite
Beachten Sie, dass die persönliche Webseite ohne die Option "Sprachen-Fallback" nur für deutsche Benutzer sichtbar wäre!
Zugriffsrechte
Zugriffsrechte legen fest, was Backend-Benutzer mit einer Seite und ihren Artikeln machen dürfen. Sie haben nichts mit dem Zugriffsschutz zu tun, der den Zugriff auf eine Seite im Frontend limitiert! Ähnlich dem Unix-Rechtesystem gibt es drei Zugriffsebenen:
Zugriff als Besitzer einer Seite Zugriff als Mitglied der Gruppe einer Seite Zugriff als unprivilegierter Benutzer
Für jede Zugriffsebene können gesonderte Rechte vergeben werden. Standardmäßig darf der Besitzer einer Seite sowohl die Seite selbst, als auch die damit verbundenen Artikel bearbeiten. Ein Mitglied der Gruppe einer Seite darf hingegen nur die Artikel bearbeiten und ein unprivilegierter Benutzer hat überhaupt keine Schreibrechte.
42 Inhalte verwalten
Inhalte verwalten
Die folgenden Kapitel erklären, wie man Inhalte in Contao verwaltet. Der Contao-Core beinhaltet bereits die grundlegenden Inhaltstypen wie z.B. Artikel, Nachrichten, Events, Newsletter oder Formatdefinitionen. Weitere Inhaltstypen wie Banner, Tickets, Produkte oder Empfehlungen sind über das Extension Repository verfügbar. Inhalte können im Backend mit den entsprechenden Modulen angelegt werden.
43 Artikel
Artikel
Artikel sind Container für Inhaltselemente. Das Gruppieren zusammengehöriger Inhaltselemente macht es einfach, sie alle auf einmal zu verschieben, zu veröffentlichen, zu kopieren oder zu exportieren, anstatt jedes einzelne Element zu bearbeiten. Jeder Artikel ist mit einer bestimmten Seite und einem Layoutbereich assoziiert und hat daher eine feste Position innerhalb der Seitenstruktur und auf der Webseite.
Inhaltselemente
Inhaltselemente sind ein einfacher und intuitiver Weg, um Inhalte zuerstellen. Anstatt nur den Rich Text Editor zu verwenden, bietet Contao für jeden Inhaltstyp wie z.B. Texte, Listen, Tabellen, Hyperlinks, Bilder oder Downloads ein eigenes Element. Nachfolgend finden Sie eine Übersicht über die im Contao-Core enthaltenen Inhaltselemente.
Name CSS-Klasse Beschreibung
Überschrift ce_headline Erzeugt eine Überschrift (h1 - h6).
Erzeugt einen Rich Text, der mit TinyMCE formatiert werden Text ce_text kann.
HTML - Erlaubt das Hinzufügen von eigenem HTML-Code.
Aufzählung ce_list Erzeugt eine geordnete oder ungeordnete Liste.
Tabelle ce_table Erzeugt eine optional sortierbare Tabelle.
Code ce_code Gibt formatierten Programmcode auf dem Bildschirm aus.
Markdown ce_markdown Erzeugt HTML-Code aus einem Markdown-Text.
Akkordeon (Einzelelement) ce_accordion Erzeugt ein einzelnes Akkordeon-Element (Mit MooTools).
Akkordeon (Umschlag Anfang) ce_accordionStart Erzeugt den öffnenden Teil des Akkordeon-Umschlags.
Akkordeon (Umschlag Ende) - Erzeugt den schließenden Teil des Akkordeon-Umschlags.
Content-Slider (Umschlag ce_sliderStart Erzeugt den öffnenden Teil des Slider-Umschlags. Anfang)
Content-Slider (Umschlag Ende) - Erzeugt den schließenden Teil des Slider-Umschlags.
Hyperlink ce_hyperlink Erzeugt einen Verweis auf eine andere Webseite.
Top-Link ce_toplink Erzeugt einen Link zum Seitenanfang.
Bild ce_image Erzeugt ein einzelnes Bild.
Galerie ce_gallery Erzeugt eine lightbox Bildergalerie.
Video/Audio ce_player Erzeugt einen Video- bzw. Audio-Player.
YouTube ce_youtube Fügt ein YouTube-Video ein.
Download ce_download Erzeugt einen Link zum Download einer Datei.
Downloads ce_downloads Erzeugt mehrere Links zum Download von Dateien.
Artikel - Fügt einen anderen Artikel ein.
Inhaltselement (parent class) Fügt ein anderes Inhaltselement ein.
Formular ce_form Fügt ein Formular ein.
Modul (parent class) Fügt ein Frontend-Modul ein.
44 Artikel
Artikelteaser ce_teaser Zeigt den Teasertext eines Artikels an.
Kommentare ce_comments Fügt ein Kommentar-Formular ein.
Zugriffsschutz
Jedes Inhaltselement kann geschützt werden, so dass es nur Gäste oder Benutzer einer bestimmten Mitgliedergruppe sehen können.
Flash-Inhalte
Flash-Inhalte sind spezielle Inhalte, die nicht als Artikel auf der Webseite ausgegeben, sondern mittels loadVars() in einen dynamischen Flash-Film geladen werden. Fügen Sie folgendes Skript in Ihren Flash-Film ein, um die Kommunikation mit Contao zu ermöglichen:
TextField.prototype._loadArticle = function(flashID) { tf = this;
// HTML-Mode aktivieren tf.html = true; tf.htmlText = "";
// LoadVars-Objekt instantiieren lv = new LoadVars(); lv["flashID"] = flashID; lv.sendAndLoad(URL + "flash.php", lv, "POST");
lv.onLoad = function(success) { if (success) { tf.htmlText = lv["content"]; } } }
// Den Flash-Inhalt "myArticle" in das Textfeld "myTextBox" laden myTextBox._loadArticle("myArticle");
Ein Stylesheet importieren
Das folgende ActionScript erlaubt das Importieren eines Stylesheets zur Formatierung des Textfeldes:
45 Artikel
TextField.prototype._addCSS = function(style_sheet) { tf= this; tf.styleSheet = null;
// StyleSheet-Objekt instantiieren st = new TextField.StyleSheet(); st.load(URL + style_sheet);
st.onLoad = function(success) { if (success) { tf.styleSheet = st; } } }
// Das Stylesheet "basic.css" zum Textfeld "myTextBox" hinzufügen myTextBox._addCSS("basic.css");
Beachten Sie, dass Flash nur einen kleinen Teil der HTML-Tags unterstützt und manche Formatierungen daher nicht angezeigt werden können.
46 Nachrichten
Nachrichten
Die News/Blog-Erweiterung ermöglicht die Verwaltung von Nachrichten bzw. Blog-Einträgen und deren Darstellung im Frontend. Im Gegensatz zu Artikeln, die mit einer bestimmten Seite assoziiert sind, werden Nachrichten in Archiven organisiert und können so einfach gruppiert, kategorisiert oder als RSS- bzw. Atom-Feed exportiert werden.
Nachrichtenarchive
Archive werden zur Gruppierung und/oder Kategorisierung von Nachrichten verwendet. Jedes Archiv kann sich auf eine bestimmte Sprache oder ein bestimmtes Thema beziehen.
Frontend-Module
Mit den Frontend-Modulen der News/Blog-Erweiterung können Nachrichten auf der Webseite dargestellt werden. Module können im Backend unter "Layout" -> "Module" konfiguriert werden und müssen anschließend in einem Artikel oder Seitenlayout eingebunden werden.
Modul CSS-Klasse Beschreibung
Nachrichtenliste mod_newslist Fügt der Seite eine Nachrichtenliste hinzu.
Nachrichtenleser mod_newsreader Stellt einen einzelnen Nachrichtenbeitrag dar.
Nachrichtenarchiv mod_newsarchive Fügt der Seite ein Nachrichtenarchiv hinzu.
Nachrichtenarchiv-Menü mod_newsmenu Erzeugt ein Menü zur Navigation des Nachrichtenarchivs.
Permalinks
Jede Nachricht hat eine eindeutige URL (Permalink), die zur Referenzierung des Beitrags verwendet werden kann:
http://www.example.com/news/items/james-wilson-returns.html
Die oben genannte URL fordert den Beitrag "james-wilson-returns" auf der Seite "news" an. Denken sie daran, dass Contao ein Seiten-basiertes CMS ist; gäbe es die Seite "news" nicht oder enthielte sie nicht das Modul Nachrichtenleser, würde der Beitrag auch nicht angezeigt.
47 Termine
Termine
Die Kalender-Erweiterung ermöglicht die Verwaltung von Terminen und deren Darstellung als Kalender oder Eventliste im Frontend. Im Gegensatz zu Artikeln, die mit einer bestimmten Seite assoziiert sind, werden Termine in Kalendern organisiert und können so einfach gruppiert, kategorisiert oder als RSS- bzw. Atom-Feed exportiert werden.
Kalender
Kalender werden zur Gruppierung und/oder Kategorisierung von Terminen verwendet. Jeder Kalender kann sich auf eine bestimmte Sprache oder ein bestimmtes Thema beziehen.
Frontend-Module
Mit den Frontend-Modulen der Kalender-Erweiterung können Termine bzw. Events auf der Webseite dargestellt werden. Module können im Backend unter "Layout" -> "Module" konfiguriert werden und müssen anschließend in einem Artikel oder Seitenlayout eingebunden werden.
Modul CSS-Klasse Beschreibung
Kalender mod_calendar Fügt der Seite einen Kalender hinzu.
Eventleser mod_eventreader Stellt einen einzelnen Event dar.
Eventliste mod_eventlist Listet alle Events eines bestimmten Zeitraums auf.
Eventliste-Menü mod_eventmenu Erzeugt ein Menü zur Navigation der Eventliste.
Permalinks
Jeder Termin hat eine eindeutige URL (Permalink), die zur Referenzierung des Events verwendet werden kann:
http://www.example.com/event-reader/events/final-exams.html
Die oben genannte URL fordert den Event "final-exams" auf der Seite "events" an. Denken sie daran, dass Contao ein Seiten- basiertes CMS ist; gäbe es die Seite "events" nicht oder enthielte sie nicht das Modul Eventleser, würde der Beitrag auch nicht angezeigt.
48 RSS-/Atom-Feed
RSS-/Atom-Feed
Diese Funktion ist für News Archive und Kalender verfügbar. Hier ein Beispiel der Kalender-Liste.
Einstellungen
Ein oder mehrere Kalender können gruppiert und als RSS- bzw. Atom-Feed ausgegeben werden. Genau gleich funktioniert es bei News Archiven. Hier kann auch gewählt werden, ob nur der Teaser oder der komplette Artikel des Events bzw. der News ausgegeben werden soll.
49 RSS-/Atom-Feed
XML Dateien
Die XML Dateien werden automatisch generiert und im share Verzeichnis Ihrer Contao Installation abgelegt. In diesem Beispiel: share/events.xml .
50 Newsletter
Newsletter
Die Newsletter-Erweiterung ermöglicht das Versenden von Newslettern, die Verwaltung von Abonnements sowie die optionale Ausgabe versendeter Nachrichten im Frontend. Im Gegensatz zu Artikeln, die mit einer bestimmten Seite assoziiert sind, werden Newsletter in Verteilern organisiert und können so einfach gruppiert oder kategorisiert werden.
Abonnenten
Newsletter-Abonnements werden normalerweise automatisch über die entsprechenden Frontend-Module verwaltet, ohne dass Sie in den Prozess eingreifen müssten. Aus datenschutzrechtlichen Gründen muss das Abonnieren eines Verteilers mittels Double Opt-In erfolgen und es wird nur die E-Mail-Adresse des Abonnements gespeichert.
Falls Sie bereits einen Verteiler haben, können Sie die Abonnenten aus einer CSV-Datei in Contao importieren.
Newsletter personalisieren
Insofern Sie Newsletter an registrierte Mitglieder verschicken, können Sie diese mit Hilfe der sogenannten "Simple Tokens" personalisieren. Simple Tokens funktionieren ähnlich wie Insert-Tags und können sowohl im HTML- als auch im Text-Inhalt eines Newsletters verwendet werden.
Sehr geehrte(r) ##firstname## ##lastname##,
bitte prüfen und aktualisieren Sie Ihre Daten:
Anschrift: ##street## PLZ/Ort: ##postal## ##city## Telefon: ##phone## E-Mail: ##email##
Ihr Administrator
Im Gegensatz zu Insert-Tags können Sie mit Simple Tokens aber nicht nur auf die Daten der Mitgliedertabelle tl_member zugreifen, sondern auch einfache If-Else-Abfragen realisieren und so beispielsweise die Anrede präzisieren.
{if gender=="male"} Sehr geehrter Herr ##lastname##,
51 Newsletter
{elseif gender=="female"} Sehr geehrte Frau ##lastname##, {else} Sehr geehrte Damen und Herren, {endif}
[Inhalt des Newsletters]
{if phone==""} Bitte aktualisieren Sie Ihre Daten und geben Sie Ihre Telefonnummer an. {endif}
Ihr Administrator
Newsletter versenden
Speziell auf Shared-Hosting-Servern gibt es normalerweise Limits für die maximale Skriptlaufzeit und/oder die Anzahl der E- Mails, die pro Minute versendet werden dürfen. Contao versucht, diese beiden Probleme zu umgehen, indem der Versendungsprozess in mehreren Teilschritten mit einer bestimmten Wartezeit dazwischen erfolgt und so die Anzahl der E-Mails pro Minute kontrolliert werden kann.
Frontend-Module
Mit den Frontend-Modulen der Newsletter-Erweiterung können Abonnements verwaltet und optional Newsletter angezeigt werden. Module können im Backend unter "Layout" -> "Module" konfiguriert werden und müssen anschließend in einem Artikel oder Seitenlayout eingebunden werden.
Modul CSS-Klasse Beschreibung
52 Newsletter
Abonnieren mod_subscribe Erzeugt ein Formular zum Abonnieren von Verteilern.
Kündigen mod_unsubscribe Erzeugt ein Formular zum Kündigen von Abonnements.
Newsletterliste mod_nl_list Fügt der Seite eine Newsletterliste hinzu.
Newsletterleser mod_nl_reader Stellt einen einzelnen Newsletter dar.
Permalinks
Jeder Newsletter hat eine eindeutige URL (Permalink), die zur Referenzierung der Nachricht verwendet werden kann:
http://www.example.com/newsletters/items/james-wilson-returns.html
Die obige URL fordert den Newsletter "james-wilson-returns" auf der Seite "newsletters" an. Denken sie daran, dass Contao ein Seiten-basiertes CMS ist; gäbe es die Seite "newsletters" nicht oder enthielte sie nicht das Modul Newsletterleser, würde der Beitrag auch nicht angezeigt.
53 Formulare
Formulare
Mit dem Formulargenerator lassen sich interaktive Formulare erstellen, die per E-Mail verschickt oder in der Datenbank gespeichert werden können. Hochgeladene Dateien werden als Anhang versendet oder auf dem Server gespeichert. Folgende Datenformate werden unterstützt:
Format Beschreibung
Rohdaten Die Formulardaten werden als einfache Textnachricht mit einer Zeile pro Feld versendet.
XML file Die Formulardaten werden der E-Mail als XML-Datei angefügt.
CSV file Die Formulardaten werden der E-Mail als CSV-Datei angefügt.
Ignoriert alle Felder außer "email", "subject", "message" und "cc" (Carbon Copy) und verschickt die Daten E-mail als wären sie mit einem E-Mail-Programm versendet worden. Datei-Uploads sind erlaubt.
Formularfelder
Ähnlich wie bei Inhaltselementen, enthält Contao ein eigenes Element für jedes Formularfeld, wie z.B. Textfelder, Auswahlmenüs, Dateiuploads, versteckte Felder oder Schaltflächen. Folgende Formularfelder sind im Contao-Core enthalten:
Feld CSS-Klasse Beschreibung
Überschrift headline Ein individuelles Feld zum Einfügen einer Bereichsüberschrift.
Erklärung explanation Ein individuelles Feld zum Einfügen eines Erklärungstexts.
HTML - Ein individuelles Feld zum Einfügen von HTML-Code.
Fieldset - Ein Container für Formularfelder mit einer optionalen Legende.
Textfeld text Ein einzeiliges Eingabefeld für einen kurzen oder mittellangen Text.
Ein einzeiliges Eingabefeld für ein Passwort. Contao fügt automatisch ein Passwortfeld password Bestätigungsfeld hinzu.
Textarea textarea Ein mehrzeiliges Eingabefeld für einen mittellangen oder langen Text.
Select-Menü select/multiselect Ein ein- oder mehrzeiliges Drop-Down-Menü.
Radio-Button- radio Eine Liste mehrerer Optionen, von denen eine ausgewählt werden kann. Menü
Checkbox- Eine Liste mehrerer Optionen, von denen beliebig viele ausgewählt werden checkbox Menü können.
Datei-Upload upload Ein einzeiliges Eingabefeld zur Übertragung lokaler Dateien auf den Server.
Verstecktes - Ein einzeiliges Eingabefeld, das im Formular nicht sichtbar ist. Feld
Eine einfache Rechenaufgabe zur Prüfung ob das Formular von einem Sicherheitsfrage captcha Menschen abgesendet wurde (CAPTCHA).
Absendefeld submit Eine Absende-Schaltfläche zur Versendung des Formulars.
Frontend-Modul
Mit dem Frontend-Module des Formulargenerators können Formulare angezeigt werden. Module können im Backend unter "Layout" -> "Module" konfiguriert werden und müssen anschließend in einem Artikel oder Seitenlayout eingebunden werden.
54 Formulare
Modul CSS-Klasse Beschreibung
Formular mod_form Fügt ein Formular auf der Seite ein.
Inhaltselement
Das Inhaltselement bietet dieselben Funktionen wie das Modul, lässt sich aber direkt im Artikel einbinden und konfigurieren. Der Formulargenerator stellt ein Inhaltselement zur Verfügung:
Inhaltselement CSS-Klasse Beschreibung
Formular ce_form Fügt ein Formular ein.
55 Kommentare
Kommentare
Kommentare sind eine weitere Form von Inhalt, welcher über das Backend verwaltet werden kann. Kommentare können in Kalendern und News-Archiven aktiviert werden.
Frontend-Modul
Mit dem Frontend-Module der Kommentar-Erweiterung können Kommentare ein- und ausgegeben werden. Module können im Backend unter "Layout" -> "Module" konfiguriert werden und müssen anschließend in einem Artikel oder Seitenlayout eingebunden werden.
Modul CSS-Klasse Beschreibung
Kommentare mod_comments Bietet Kommentare oder eine Gästebuch-Funktion.
Inhaltselement
Das Inhaltselement bietet dieselben Funktionen wie das Modul, lässt sich aber direkt im Artikel einbinden und konfigurieren. Die Kommentar-Erweiterung stellt ein Inhaltselement zur Verfügung:
Inhaltselement CSS-Klasse Beschreibung
Kommentare ce_comments Fügt das Kommentar-Formular auf der Seite ein.
BBCode
Der Besucher kann ausserdem die BBCode Sprache verwenden. Contao versteht folgende Tags:
BBCode Beschreibung
[b][/b] Der enthaltene Text wird fett dargestellt.
[i][/i] Der enthaltene Text wird kursiv dargestellt.
[u][/u] Der enthaltene Text wird unterstrichen.
[img][/img] Ersetzen das Tag durch ein Bild (Bild-Pfad zwischen den Tags).
[code][/code] Der enthaltene Text wird in einer Schrift mit fester Laufweite dargestellt.
[color=#ff0000][/color] Der enthaltene Text wird in der entsprechenden Farbe dargestellt.
[quote][/quote] Stellt den entsprechenden Text als Zitat dar.
[quote=John]Hallo[/quote] Stellt den entsprechenden Text als Zitat eines Autors dar.
[url][/url] Die enthaltene URL wird als Link dargestellt.
[url=http://][/url] Der enthaltene Text wird mit der entsprechenden URL verlinkt.
[email][/email] Die enthaltene E-Mail-Adresse wird als Link dargestellt.
[[email protected]][/email] Der enthaltene Text wird mit der E-Mail-Adresse verknüpft.
56 Kommentare
57 Templates
Templates
Ein Template enthält meist HTML und PHP code. Es wird zur Ausgabe von Inhalten eines Moduls oder Inhaltelements etc. verwendet. Beispielsweise gibt das Template news_full.html5 eine vollständige Nachricht aus, während das Template news_short.html5 nur einen Teil davon anzeigt.
Templates befinden sich direkt in den dazugehören Modulen. Das news_full.html5 Template befindet sich beispielsweise in system/modules/news/templates/news .
Falls diese Datei direkt in diesem Ordner bearbeitet wird, gehen die Änderungen bei einem nächsten Update von Contao verloren. Um dies zu vermeiden, Templates können im Backend bearbeitet werden. Dabei wird die Datei kopiert um Änderungen während einem Update nicht zu verlieren.
Unter dem Menüpunkt Templates können die Dateien bearbeitet und in Ordnern abgelegt werden. Ordner müssen wie unter Theme-Bestandteile beschrieben einem Theme zugewiesen sein.
Ein Template gehört zu einem Modul, einem Inhaltselement, einem Formular oder anderen Komponenten. Sie werden zur einfacheren Erkennung deshalb meist mit einem Präfix versehen. Beispielsweise deutet j_ auf jQuery oder nl_ auf ein Newsletter-Template.
Template-Vererbung
Template-Vererbung erlaubt, ein Template basierend auf einem anderen Template aufzubauen. Dies bedeutet, ein Template (Kind) fügt Inhalt in ein zweites Template (Eltern) ein.
Damit Inhalte in einem Eltern-Template angepasst werden können, muss sich der Inhalt innerhalb eines block -Elements befinden.
Ein Block ist wie folgt aufgebaut:
block('name_des_blocks'); ?>
// Block-Inhalt
endblock(); ?>
Das folgende Beispiel zeigt ein Template bei welchem der head -Tag als eigener Block definiert wurde.
Template fe_page.html5 :
block('head'); ?>
58 Templates
Im Kindtemplate fe_custom.html wird zusätzlich zum bisherigen Inhalt noch ein CSS style sheet in das übergeordnete Template eingefügt.
Template fe_custom.html5 :
extend('fe_page'); ?>
block('head'); ?> parent(); ?> endblock(); ?>
Die Funktion extend() definiert das übergeordnete Template. Die Funktion parent() übernimmt den Inhalt des übergeordneten Template.
Die Ausgabe des fe_custom.html5 Template sieht danach so aus:
Templates mischen
Mit Hilfe der insert() -Funktion kann ein Template in ein anderes Template einfügt werden.
insert('template_name'); ?>
Die insert() -Funktion akzeptiert ausserdem auch die Übergabe von zusätzlichen Variablen als zweiten Parameter.
insert('template_name', array('key'=>'value')); ?>
// Übergibt alle Variablen aus dem aktuellen Template insert('template_name', $this->getData()); ?>
Im folgenden Beispiel fügen wir den Inhalt des Templates image-copyright.html5 in das Template image.html5 ein.
Das Template image.html5 enthält lediglich einen img -Tag und die insert() -Funktion.
Template image.html5 :
src; ?>" alt="alt; ?>" /> insert('image-copyright', array('name'=>'Donna Evans', 'license'=>'Creative Commons')); ?>
Das image-copyright.html5 Template enthält einen small -Tag welcher nach dem img -Tag im image.html5 Template eingefügt werden soll. Die Variabeln name und license werden durch die Parameter der insert() -Funktion ersetzt.
Template image-copyright.html5 :
59 Templates
Fotografiert von name; ?>, lizenziert als license; ?>
Die Ausgabe des image.html5 sieht danach folgendermassen aus:
Fotografiert von Donna Evans, lizenziert als Creative Commons
60 Markdown
Markdown
Markdown ist eine einfache Auszeichnungssprache, die es erlaubt, Text mittels einfachem Syntax zu formatieren. Markdown hat den Vorteil, einfach lesbar zu sein und automatisch in HTML konvertiert werden zu können.
Nachfolgend einige Beispiele für die Markdown-Syntax:
Syntax
Paragrafen
Absätze werden durch eine Leerzeile erstellt:
Erster Absatz
Zweiter Absatz
Überschriften
Es sind sechs Ebenen für Überschriften möglich:
# Überschrift 1 ## Überschrift 2 ### Überschrift 3 #### Überschrift 4 ##### Überschrift 5 ###### Überschrift 6
Wichtig
Um wichtigen Text zu markieren:
**strong** __strong__
Wird zu folgendem HTML-Code konvertiert: strong
Hervorhebung
Um Text hervor zu heben:
*emphasize* _emphasize_
Wird zu folgendem HTML-Code konvertiert: emphasize
Code
Um einen Text als Computercode zu markieren:
`monospaced font`
61 Markdown
Wird zu folgendem HTML-Code konvertiert: monospaced font
Code-Blöcke
Um einen ganzen Absatz in Code zu konvertieren, den Text mit vier Leerzeichen einrücken.
Schrift mit fester Laufweite ...... über mehrere Zeilen
Zitat-Block
Zitatblöcke können durch eine rechte spitze Klammer am Beginn der Zeile erstellt werden.
> Dies ist ein Zitat.
Zeilenumbruch
Durch zwei oder mehr Leerzeichen am Ende einer Zeile wird ein Umbruch erzeugt:
Contao ist ein barrierefreies Open Source content management system.
Links
Es gibt zwei Möglichkeiten für Links: inline und als Referenz.
Ein Inline-Link sieht wie folgt aus:
[Contao](https://contao.org/de) oder optional auch mit einem Titel:
[Contao](https://contao.org/de "Offizielle Contao-Webseite")
Ein Referenz-Link sieht wie folgt aus:
[Offizielle Contao-Webseite][1]
[1]:https://contao.org/de
Die Referenz kann an beliebiger Stelle im Dokument platziert werden.
Bilder
Wie für Links gibt es auch für Bilder zwei Syntax-Möglichkeiten.
Ein Inline-Bild sieht wie folgt aus:
![Alt text](/pfad/zum/bild.jpg "Optionaler Titel")
Ein Bild im Referenz-Stil wird durch folgende Syntax erreicht:
![Alternativer Text][id]
62 Markdown
[id]: /pfad/zum/bild.jpg "Optionaler Titel"
Die Referenz kann an beliebiger Stelle im Dokument platziert werden.
Aufzählungslisten
Unsortierte Listen
Unsortierte Listen verwenden Sternzeichen oder Trennstriche:
* Listeneintrag * Listeneintrag * Verschachtelter Listeneintrag * Verschachtelter Listeneintrag * Listeneintrag
- Listeneintrag - Listeneintrag - Listeneintrag
Sortierte Listen
Sortierte Listen verwenden Zahlen:
1. Listeneintrag 2. Listeneintrag 3. Listeneintrag
Erweiterter Syntax
Nicht alle HTML-Element wie beispielsweise Tabellen oder Fußnoten können mit normalem Markdown beschrieben werden. Aus diesem Grund gibt es ein Projekt für "Markdown Extra" um die Syntax zu erweitern.
Nachfolgend einige Beispiele für die erweiterte Syntax:
Tabellen
Eine Tabelle kann wie folgt erstellt werden:
Erste Kopfzeile | Zweite Kopfzeile | Dritte Kopfzeile ------| ------| ------Zelleninhalt | Zelleninhalt | Zelleninhalt Zelleninhalt | Zelleninhalt | Zelleninhalt
Die Textausrichtung kann durch Doppelpunkte gesteuert werden:
Erste Kopfzeile | Zweite Kopfzeile | Dritte Kopfzeile :------| :------: | ------: Linksbündig | Zentriert | Rechtsbündig Linksbündig | Zentriert | Rechtsbündig
Fußnoten
Fußnoten werden wie folgt erstellt:
Dies ist ein Text mit Fußnote.[^1]
63 Markdown
[^1]: Und dies ist die Fußnote.
Die Fußnoten-Definition kann an beliebiger Stelle im Dokument platziert werden.
Weitere Informationen
Für eine komplette Dokumentation zu Markdown, besuchen Sie die offizielle Webseite unter folgendem Link.
Für eine komplette Dokumentation zu Markdown Extra, besuchen Sie die offizielle Webseite unter folgendem Link.
64 Insert-Tags
Insert-Tags
Insert-Tags sind Platzhalter, die bei der Ausgabe einer Seite durch bestimmte Inhalte ersetzt werden. So kann beispielsweise das aktuelle Datum angezeigt oder ein Benutzer mit seinem Namen angesprochen werden. Insert-Tags können fast überall in Contao verwendet werden.
Link-Elemente
Mit den folgenden Insert-Tags können Seiten und Artikel anhand ihrer ID oder ihres Alias verlinkt werden.
Insert-Tag Beschreibung
{{link::*}} Dieses Tag wird mit einem Link zu einer internen Seite ersetzt (ersetzen Sie * mit der ID oder dem Alias).
Dieses Tag wird mit einem Link zur der zuletzt besuchte Seite ersetzt. Kann auch als {{link::back}} {{link_open::back}} , {{link_url::back}} und {{link_title::back}} verwendet werden.
{{link::login}} Dieses Tag wird mit einem Link zur Anmeldeseite des aktuellen Frontend-Benutzers (falls vorhanden) ersetzt.
{{link_open::*}} Wird mit dem öffnenden Tag eines Links zu einer internen Seite ersetzt: {{link_open::12}}Hier klicken{{link_close}} .
Hier {{link_url::*}} Dieses Tag wird mit der URL einer internen Seite ersetzt: klicken .
{{link_name::*}} Dieses Tag wird mit dem Namen einer internen Seite ersetzt: {{link_name::12}} .
{{link_close}} Wird mit dem schließenden Tag eines Links zu einer internen Seite ersetzt: {{link_open::12}}Hier klicken{{link_close}} .
{{article::*}} Dieses Tag wird mit einem Link zu einem Artikel ersetzt (ersetzen Sie * mit der ID oder dem Alias).
{{article_open::*}} Wird mit dem öffnenden Tag eines Links zu einem Artikel ersetzt: {{article_open::12}}Hier klicken{{link_close}} .
Hier {{article_url::*}} Dieses Tag wird mit der URL eines Artikels ersetzt: klicken .
{{news::*}} Dieses Tag wird mit einem Link zu einer Nachricht ersetzt (ersetzen Sie * mit der ID oder dem Alias).
{{news_open::12}}Hier {{news_open::*}} Wird mit dem öffnenden Tag eines Links zu einer Nachricht ersetzt: klicken{{link_close}} .
Hier {{news_url::*}} Dieses Tag wird mit der URL einer Nachricht ersetzt: klicken .
Dieses Tag wird mit dem Titel einer Nachricht ersetzt: Hier {{news_title::*}} klicken .
{{news_feed::*}} Dieser Tag wird mit der URL zu einem News-Feed ersetzen (ersetzen Sie * mit der ID).
{{event::*}} Dieses Tag wird mit einem Link zu einem Event ersetzt (ersetzen Sie * mit der ID oder dem Alias).
65 Insert-Tags
{{event_open::*}} Wird mit dem öffnenden Tag eines Links zu einem Event ersetzt: {{event_open::12}}Hier klicken{{link_close}} .
Hier {{event_url::*}} Dieses Tag wird mit der URL eines Events ersetzt: klicken .
Hier {{event_title::*}} Dieses Tag wird mit dem Titel eines Events ersetzt: klicken .
{{calendar_feed::*}} Dieser Tag wird mit der URL zu einem Kalender-Feed ersetzen (ersetzen Sie * mit der ID).
{{faq::*}} Dieses Tag wird mit einem Link zu einer häufig gestellten Frage ersetzt (ersetzen Sie * mit der ID oder dem Alias).
{{faq_open::12}}Hier {{faq_open::*}} Wird mit dem öffnenden Tag eines Links zu einer Frage ersetzt: klicken{{link_close}} .
Hier {{faq_url::*}} Dieses Tag wird mit der URL einer Frage ersetzt: klicken .
Hier {{faq_title::*}} Dieses Tag wird mit dem Titel einer Frage ersetzt: klicken .
Mitgliedereigenschaften
Mit den folgenden Insert-Tags können Eigenschaften des angemeldeten Mitglieds (Frontend-Benutzer) ausgebeben werden.
Insert-Tag Beschreibung
{{user::*}} Dieses Tag wird mit dem Inhalt eines Feldes von `tl_member` des angemeldeten Mitglieds ersetzt (ersetzen Sie * mit dem Feldnamen).
{{user::firstname}} Dieses Tag wird mit dem Vornamen des angemeldeten Mitglieds ersetzt.
{{user::lastname}} Dieses Tag wird mit dem Nachnamen des angemeldeten Mitglieds ersetzt.
{{user::company}} Dieses Tag wird mit dem Firmennamen des angemeldeten Mitglieds ersetzt.
{{user::phone}} Dieses Tag wird mit der Telefonnummer des angemeldeten Mitglieds ersetzt.
{{user::mobile}} Dieses Tag wird mit der Handynummer des angemeldeten Mitglieds ersetzt.
{{user::fax}} Dieses Tag wird mit der Faxnummer des angemeldeten Mitglieds ersetzt.
{{user::email}} Dieses Tag wird mit der E-Mail-Adresse des angemeldeten Mitglieds ersetzt.
{{user::website}} Dieses Tag wird mit der Internetadresse des angemeldeten Mitglieds ersetzt.
{{user::street}} Dieses Tag wird mit dem Staßennamen des angemeldeten Mitglieds ersetzt.
{{user::postal}} Dieses Tag wird mit der Postleitzahl des angemeldeten Mitglieds ersetzt.
{{user::city}} Dieses Tag wird mit der Stadt des angemeldeten Mitglieds ersetzt.
{{user::country}} Dieses Tag wird mit dem Land des angemeldeten Mitglieds ersetzt.
{{user::username}} Dieses Tag wird mit dem Benutzernamen des angemeldeten Mitglieds ersetzt.
Seiteneigenschaften
Mit den folgenden Insert-Tags können Seiteneigenschaften wie z.B. der Seitenname ausgegeben werden.
Insert-Tag Beschreibung
{{page::*}} Dieses Tag wird mit dem Inhalt eines Feldes von `tl_page` der aktuellen Seite ersetzt (ersetzen Sie * mit dem Feldnamen).
66 Insert-Tags
{{page::id}} Dieses Tag wird mit der ID der aktuellen Seite ersetzt.
{{page::alias}} Dieses Tag wird mit dem Alias der aktuellen Seite ersetzt.
{{page::title}} Dieses Tag wird mit dem Namen der aktuellen Seite ersetzt.
{{page::pageTitle}} Dieses Tag wird mit dem Titel der aktuellen Seite ersetzt.
{{page::language}} Dieses Tag wird mit der Sprache der aktuellen Seite ersetzt.
{{page::parentAlias}} Dieses Tag wird mit dem Alias der übergeordneten Seite ersetzt.
{{page::parentTitle}} Dieses Tag wird mit dem Namen der übergeordneten Seite ersetzt.
{{page::parentPageTitle}} Dieses Tag wird mit dem Titel der übergeordneten Seite ersetzt.
{{page::mainAlias}} Dieses Tag wird mit dem Alias der übergeordneten Hauptseite ersetzt.
{{page::mainTitle}} Dieses Tag wird mit dem Namen der übergeordneten Hauptseite ersetzt.
{{page::mainPageTitle}} Dieses Tag wird mit dem Titel der übergeordneten Hauptseite ersetzt.
{{page::rootTitle}} Dieses Tag wird mit dem Namen der Webseite ersetzt.
{{page::rootPageTitle}} Dieses Tag wird mit dem Titel der Webseite ersetzt.
Umgebungsvariablen
Mit den folgenden Insert-Tags können Umgebungsvariablen wie z.B. der Seitenname oder der Request-String ausgegeben werden.
Insert-Tag Beschreibung
{{env::host}} Dieses Tag wird mit dem aktuellen Hostnamen ersetzt.
{{env::url}} Dieses Tag wird mit dem Hostnamen und dem Protokoll ersetzt.
{{env::path}} Dieses Tag wird mit der aktuellen Basis-URL samt Pfad zum Contao-Verzeichnis ersetzt.
{{env::request}} Dieses Tag wird mit dem aktuellen Request-String ersetzt.
{{env::ip}} Dieses Tag wird mit der IP-Adresse des aktuellen Besuchers ersetzt.
{{env::referer}} Dieses Tag wird mit der URL der zuletzt besuchten Seite ersetzt.
{{env::files_url}} Dieses Tag wird mit der statischen URL des Uploadverzeichnis ersetzt.
{{env::assets_url}} Dieses Tag wird mit der statischen URL des Assets-Verzeichnis ersetzt.
Include-Elemente
Mit den folgenden Insert-Tags können Ressourcen wie z.B. Artikel, Module oder Dateien aus dem "templates"-Verzeichnis eingebunden werden.
Insert-Tag Beschreibung
{{insert_article::*}} Dieses Tag wird mit dem referenzierten Artikel ersetzt (ersetzen Sie * mit der ID oder dem Alias).
{{insert_content::*}} Dieses Tag wird mit dem referenzierten Inhaltselement ersetzt (ersetzen Sie * mit der ID des Elements).
{{insert_module::*}} Dieses Tag wird mit dem referenzierten Modul ersetzt (ersetzen Sie * mit der ID des Moduls).
{{insert_form::*}} Dieses Tag wird mit dem referenzierten Formular ersetzt (ersetzen Sie * mit der ID des Formulars).
67 Insert-Tags
{{article_teaser::*}} Dieses Tag wird mit dem Teaser eines Artikels ersetzt (ersetzen Sie * mit der ID des Artikels).
{{news_teaser::*}} Dieses Tag wird mit dem Teaser einer Nachricht ersetzt (ersetzen Sie * mit der ID der Nachricht).
{{event_teaser::*}} Dieses Tag wird mit dem Teaser eines Events ersetzt (ersetzen Sie * mit der ID des Events).
Dieses Tag wird mit dem Inhalt einer .php-, .tpl-, .xhtml- oder .html5-Datei aus dem "templates"-Verzeichnis ersetzt (ersetzen Sie * mit dem Namen). Bei Bedarf können Sie {{file::*}} Argumente übergeben: {{file::file.php?arg1=val}} . Mittels UUID kann außerdem der Pfad einer Datei aus der Datenbank abgefragt werden: {{file::6939a448-9b30-11e4-bcba- 079af1e9baea}} .
Verschiedenes
Mit den folgenden Insert-Tags können Sie verschiedene Aufgaben erledigen und z.B. das aktuelle Datum oder ein Lightbox-Bild einfügen.
Insert-Tag Beschreibung
{{date}} Dieses Tag wird mit dem aktuellen Datum gemäß des globalen Datumsformats ersetzt.
{{date::*}} Dieses Tag wird mit dem aktuellen Datum gemäß eines individuellen Datumsformats ersetzt.
{{last_update}} Dieses Tag wird mit dem Datum der letzten Aktualisierung gemäß des globalen Datumsformats ersetzt.
{{last_update::*}} Dieses Tag wird mit Datum der letzten Aktualisierung gemäß eines individuellen Datumsformats ersetzt.
{{email::*}} Dieses Tag wird mit einem verschlüsselten Link zu einer E-Mail-Adresse ersetzt.
{{email_open::*}} Dieses Tag wird mit einem verschlüsselten Link zu einer E-Mail-Adresse ersetzt. Allerdings wird das schließende nicht angefügt.
{{email_url::*}} Dieses Tag wird nur durch die verschlüsselte E-Mail-Adresse ersetzt.
{{post::*}} Mit diesem Tag kann eine angegebene Post-Variable ausgelesen und angezeigt werden. Kann z.B. genutzt werden, um auf einzelne Felder eines gesendeten Formulars zuzugreifen.
Mit diesem Tag können fremdsprachige Wörter in einem Text markiert werden: {{lang::*}} {{lang::fr}}Au revoir{{lang}} . Dies wird ersetzt mit Au revoir und fügt xml:lang="fr" hinzu falls das Seitenformat XHTML ist.
{{abbr::World Wide Web}}WWW{{abbr}} {{abbr::*}} Abkürzungen in einem Text markieren: . Dies wird ersetzt mit WWW .
Akronyme in einem Text markieren: {{acronym::Multipurpose Internet Mail {{acronym::*}} Extensions}}MIME{{acronym}} . Dies wird ersetzt mit MIME .
{{ua::browser}} {{ua::*}} Eigenschaften des Browsers (User Agent) ausgeben: . Dies wird beispielsweise ersetzt mit "chrome".
Dieses Tag wird komplett entfernt, wenn die Sprache der Seite nicht mit der Tag-Sprache {{iflng::*}} übereinstimmt. Sie können so sprachspezifische Bezeichnungen erstellen: {{iflng::en}}Your name{{iflng::de}}Ihr Name{{iflng}}
Dieses Tag wird komplett entfernt, wenn die Sprache der Seite mit der Tag-Sprache {{ifnlng::*}} übereinstimmt. Sie können so sprachspezifische Bezeichnungen erstellen: {{ifnlng::de}}Your name{{ifnlng}}{{iflng::de}}Ihr Name{{iflng}}
Dieses Tag wird mit der Vorschauansicht eines Bildes ersetzt (wobei * eine Datenbank ID, eine UUID oder ein Pfad aus dem Dateisystem sein kann): {{image::58ca4a90-2d30-11e4-8c21- 0800200c9a66?width=200&height=150}} . width: Breite des Vorschaubildes, {{image::*}} height: Höhe des Vorschaubildes,
68 Insert-Tags
alt: Alternativer Text, class: CSS-Klasse, rel: rel-Attribut (z.B. "lightbox"), mode: Modus ("proportional", "crop" oder "box").
Dieses Tag wird mit einem
{{picture::*}} height: Höhe des Vorschaubildes, alt: Alternativer Text, class: CSS-Klasse, rel: rel-Attribut (z.B. "lightbox"), mode: Modus ("proportional", "crop" oder "box"), size: ID einer Bildgrösse (siehe Themes -> Bildgrößen), template: Zu verwendendes Template (picture_default).
Dieses Tag wird mit einer Übersetzung ersetzt. Der erste Parameter ist der Name einer Sprachdatei oder einem Akronym (z.B. CNT für Länder oder LNG für Sprachen). Beispiele: {{label::*}} {{label::CNT:au}} wird zu "Australien" und {{label::tl_article:title:0}} wird zu "Titel". Beachten Sie, dass innerhalb des Pfads zur Bezeichnung nur einfache Doppelpunkte verwendet werden.
{{version}} Dieses Tag wird mit der verwendeten Contao-Version (z.B. 3.2.7) ersetzt.
{{request_token}} Dieses Tag wird mit dem zur aktuellen Session gehörenden Request-Token ersetzt.
{{toggle_view}} Dieses Tag wird mit einem Link ersetzt, welcher zwischen Mobile- und Desktop-Layout wechselt.
{{br}} Dieses Tag wird mit einem HTML
Element (Zeilenumbruch) ersetzt.
Insert-Tag-Flags
Mittels Flags können Sie Insert-Tags weiter verarbeiten. Der Wert kann damit z.B. einer PHP-Funktion übergeben werden. Beliebig viele Flags können miteinander kombiniert werden:
{{ua::browser|uncached}} {{page::title|decodeEntities|strtoupper}}
Verfügbare Flags:
Flag Beschreibung Weitere Informationen
uncached Erhält das Tag beim Schreiben der Cache-Datei.
refresh Erstellt die Ausgabe bei jeder Anfrage neu.
addslashes Stellt bestimmten Zeichen eines Strings ein "\" voran. PHP-Funktion
stripslashes Entfernt das "\" vor bestimmten Zeichen eines Strings. PHP-Funktion
standardize Standardisiert die Ausgabe (z.B. das Alias bei der Seitenstruktur).
ampersand Wandelt Und-Zeichen in Entities um.
specialchars Wandelt Sonderzeichen in Entities um.
Fügt vor allen Zeilenumbrüchen eines Strings HTML- nl2br PHP-Funktion Zeilenumbrüche ein.
nl2br_pre Erhält die Zeilenumbrüche innerhalb von
-Tags.strtolower Wandelt die Ausgabe in Kleinbuchstaben um. PHP-Funktion
69 Insert-Tags
utf8_strtolower Unicode-bewusste Umwandlung in Kleinbuchstaben
strtoupper Wandelt die Ausgabe in Großbuchstaben um. PHP-Funktion
utf8_strtoupper Unicode-bewusste Umwandlung in Großbuchstaben
ucfirst Wandelt das erste Zeichen in einen Großbuchstaben um. PHP-Funktion
lcfirst Wandelt das erste Zeichen in einen Kleinbuchstaben um. PHP-Funktion
Wandelt das erste Zeichen jedes Wortes in einen ucwords PHP-Funktion Großbuchstaben um.
trim Entfernt Leerzeichen vom Anfang und Ende der Ausgabe. PHP-Funktion
rtrim Entfernt Leerzeichen vom Anfang der Ausgabe. PHP-Funktion
ltrim Entfernt Leerzeichen vom Ende der Ausgabe. PHP-Funktion
utf8_romanize Romanisiert die Ausgabe.
strrev Dreht die Ausgabe um. PHP-Funktion
encodeEmail Kodiert E-Mail-Adressen in der Ausgabe. siehe String::encodeEmail
decodeEntities Dekodiert Entities in der Ausgabe. siehe String::decodeEntities()
number_format Formatiert eine Zahl (keine Dezimalstellen). siehe System::getFormattedNumber()
currency_format Formatiert eine Währung (zwei Dezimalstellen). siehe System::getFormattedNumber()
readable_size Wandelt die Ausgabe in ein menschenlesbares Format um. siehe System::getReadableSize()
urlencode URL-kodiert einen String. PHP-Funktion
rawurlencode URL-Kodierung nach RFC 3986. PHP-Funktion
70 Systemadministration
Systemadministration
Die folgenden Kapitel erklären, wie man Contao administriert. Neben der Installation und Aktualisierung des Systems ist der Administrator auch für das Anlegen von Benutzern und Gruppen, die Erweiterungsverwaltung und die Wartung der Applikation zuständig.
71 Benutzer und Gruppen
Benutzer und Gruppen
Contao unterscheidet zwischen Backend-Benutzern ("Benutzer"), die sich am Administrationsbereich anmelden können, und Frontend-Benutzern ("Mitglieder"), die sich auf der Webseite anmelden können. Im Gegensatz zu Administratoren, die standardmäßig alle Seiten und Elemente bearbeiten dürfen ("allow all"), können reguläre Benutzer nur auf die Ressourcen zugreifen, die explizit in ihrem Profil oder dem Profil einer der Gruppen, denen sie angehören, freigeschaltet wurden ("deny all").
Benutzer
Jeder Benutzer kann mehreren Gruppen angehören und erbt automatisch deren Rechte. Zugriffsrechte sind additiv, das heißt ein Benutzer erbt die Summe der Rechte aller seiner Gruppen. Wird ein bestimmtes Recht in Gruppe A vergeben, kann es nicht in Gruppe B widerrufen werden.
Pagemounts
Pagemounts legen fest, welche Seiten ein Benutzer in der Seitenstruktur sehen kann. Der nachfolgende Screenshot zeigt die Seitenstruktur aus Sicht von Helen Lewis. Obwohl die Webseite wesentlich mehr Seiten enthält, kann sie nur drei davon sehen, denn nur die "Courses"-Seite wurde in in der "Editors"-Gruppe gemountet. Beachten Sie außerdem, dass Helen Lewis nur eine der drei Seiten bearbeiten kann!
Eine Seite sehen zu können, beinhaltet noch nicht das Recht, sie zu bearbeiten. Erinnern Sie sich, dass Zugriffsrechte in der Seitenstruktur vergeben werden, daher muss eine Seite sowohl im Benutzerprofil gemountet, als auch in der Seitenstruktur freigeschaltet werden.
Filemounts
Filemounts legen fest, welche Verzeichnisse ein Benutzer in der Dateiverwaltung sehen kann. Der nachfolgende Screenshot zeigt den Dateimanager aus Sicht von Helen Lewis, die im Gegensatz zum Administrator nur auf den campus -Ordner zugreifen darf.
72 Benutzer und Gruppen
Erlaubte Felder
Wie oben erwähnt, haben reguläre Benutzer standardmäßig überhaupt keine Rechte ("deny all"), dürfen also auch nicht auf Formularfelder zugreifen. Selbst wenn sie also beispielsweise das Nachrichten-Modul aufrufen könnten, wäre das Formular zum Anlegen eines Beitrags solange leer, bis der Administrator in den Gruppenrechten eines oder mehrere Felder der Tabelle tl_news freigeschaltet hat.
Mitglieder
73 Benutzer und Gruppen
Die Verwaltung von Mitgliedern (Frontend-Benutzern) ist viel simpler als die von Backend-Benutzern, weil es keine Pagemounts oder erlaubte Felder gibt. Die Mitgliederverwaltung wird hauptsächlich benötigt, um den auf Gruppenebene implementierten Zugriffsschutz für Seiten zu kontrollieren. Je nach Konfiguration können registrierte Mitglieder geschützte Seiten oder Downloads aufrufen, die für Gäste nicht erreichbar sind.
Frontend-Vorschau
Als Administrator können Sie sich als jedes Mitglied anmelden und die Webseite mit den entsprechenden Berechtigungen prüfen. Diese Option ist in der Mitgliederliste verfügbar.
Das Frontend erscheint mit der Vorschau-Toolbar, in welcher zwischen den Mitgliedern gewechselt werden kann. Ausserdem können durch die entsprechende Option alle unveröffentlichten Elemente der angezeigt werden.
74 Erweiterungen
Erweiterungen
Erweiterungen sind ein wichtiger Bestandteil von Contao, weil sie das Hinzufügen weiterer Funktionalität ermöglichen. Momentan befinden sich 1.400 Erweiterungen im Extension Repository, die Sie direkt im Backend aufrufen können. Beachten Sie dabei, dass das Extension Repository 2.0 nur noch solche Erweiterungen anzeigt, die zu Ihrer Contao-Version kompatibel sind. Die Anzahl der Erweiterungen in Ihrem Erweiterungskatalog wird daher je nach Version wahrscheinlich deutlich unter 1.400 liegen. Die Kommunikation mit dem Repository-Server erfolgt mittels SOAP, daher benötigen Sie die PHP SOAP-Erweiterungen, um den Service zu nutzen.
Erweiterungskatalog
Mit dem "Erweiterungskatalog"-Modul können Sie die Erweiterungsliste durchsuchen und Erweiterungen auf Knopfdruck installieren. Nutzen Sie die Filter- und Sortieroptionen zum Auffinden eines Moduls und klicken Sie auf dessen Namen, um die Beschreibung zu lesen oder es zu installieren.
Die Detailseite enthält die Beschreibung der Erweiterung sowie wichtige Informationen zu Systemvoraussetzungen, Versionen und Abhängigkeiten von anderen Modulen. Klicken Sie auf die "Installieren"-Schaltfläche, um die Erweiterung herunterzuladen und zu installieren.
75 Erweiterungen
Contao lädt die Erweiterung automatisch herunter, kopiert die Dateien und aktualisiert wenn nötig die Datenbank.
76 Erweiterungen
Erweiterungsverwaltung
Mit dem Modul "Erweiterungsverwaltung" können Erweiterungen aktualisiert oder deinstalliert werden. Es wird automatisch auf Updates geprüft und auf neue Versionen hingewiesen. Viele Erweiterungen enthalten außerdem einen Support-Link zur Dokumentation und/oder zum Forum.
Um eine Erweiterung zu deinstallieren, klicken Sie auf das entsprechende Icon und folgen Sie den Anweisungen. Es werden alle Dateien entfernt und falls nötig die Datenbank aktualisiert. Beachten Sie, dass diese Aktion nicht rückgängig gemacht werden kann!
77 Erweiterungen
Manuelle Installation
Falls die PHP SOAP-Erweiterung auf Ihrem Server nicht verfügbar ist, können Sie Extensions auch manuell installieren. Finden Sie das entsprechende Modul in der Erweiterungsliste und laden Sie das .zip-Archiv des aktuellen Release herunter. Entpacken Sie die Dateien und kopieren Sie sie in Ihr lokales oder entferntes Contao-Verzeichnis. Abschließend prüfen Sie die Datenbank mit dem Contao-Installtool.
78 Systemwartung
Systemwartung
Die meisten Wartungsaufgaben in Contao sind automatisiert, so dass Sie sich auf Ihre eigentliche Arbeit konzentrieren können. Manchmal kann es jedoch notwendig sein, die sonst automatisch ausgeführten Aufgaben der Systemwartung manuell zu starten.
Daten bereinigen
Neben den Benutzer-generierten Inhalten speichert Contao verschiedene Systemdaten, die für die Suche oder das Wiederherstellen gelöschter Datensätze oder früherer Versionen verwendet werden. Sie können diese Daten manuell bereinigen, um z.B. alte Vorschaubilder zu entfernen oder die XML-Sitemaps nach einer Änderung an der Seitenstruktur zu aktualisieren.
Suchindex neu aufbauen
Seiten werden automatisch beim Aufruf im Frontend indiziert (es sei denn Sie sind parallel im Backend angemeldet), daher müssen Sie sich um den Suchindex normalerweise keine Gedanken machen. Wenn Sie allerdings viele Seiten auf einmal aktualisiert haben, ist es bequemer, den Suchindex manuell neu aufzubauen, als alle geänderten Seiten einzeln im Browser aufzurufen.
79 Systemwartung
80