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. 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 oder (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." 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. 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'); ?> <?php echo $this->title; ?> endblock(); ?> ...

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:

A title ...

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 .

Hier 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 .

Hier 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-, .- 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 -Element und verschiedenen Bildgrössen ersetzt, abhängig von der verwendeten Bildgrößen-Konfiguration (wobei * eine Datenbank ID, eine UUID oder ein Pfad aus dem Dateisystem sein kann): {{picture::58ca4a90-2d30-11e4-8c21- 0800200c9a66?size=1&template=picture_default}} . width: Breite des Vorschaubildes,

{{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