Einstellungen

Die Systemeinstellungen verabschieden sich langsam aber sicher aus dem Backend. Grundlegende Systemeinstellungen beeinflussen Contao als Applikation und somit besteht auch die Chance, dass durch eine falsche Einstellung das System in einen funktionsuntüchtigen Zustand gebracht wird. Sollte dies geschehen, hast du keine Möglichkeit mehr, die Einstellungen rückgängig zu machen und das System wiederherzustellen, da du dich nicht mehr einloggen kannst. Aus diesem Grund werden die meisten Einstellungen außerhalb von Contao über die config.yml vorgenommen bzw. können zukünftig über den Contao Manager vorgenommen werden.

Einstellungen

Globale Einstellungen

E-Mail-Adresse des Systemadministrators: An diese Adresse werden z. B. Benachrichtigungen über gesperrte Konten oder neu registrierte Benutzer geschickt. Du kannst auch folgende Notation verwenden, um einen Namen zur E-Mail-Adresse hinzuzufügen:

Kevin Jones [kevin.jones@example.com]

Datum und Zeit

Datums- und Zeitformat: Alle Datums- und Zeitformate müssen wie in der PHP-Funktion date eingegeben werden. Contao verarbeitet im Backend ausschließlich numerische Formate, also die Buchstaben j, d, m, n, y, Y, g, G, h, H, i und s.

Hier sind einige Beispiele gültiger Datums- und Zeitangaben:

Angaben Erklärung
Y-m-d JJJJ-MM-TT, international ISO-8601, z. B. 2005-01-28
m/d/Y MM/TT/JJJJ, Englisches Format, z. B. 01/28/2005
d.m.Y TT.MM.JJJJ, Deutsches Format, z. B. 28.01.2005
y-n-j JJ-M-T, ohne führende Nullen, z. B. 05-1-28
Ymd JJJJMMTT, Zeitstempel, z. B. 20050128
H:i:s 24 Stunden, Minuten und Sekunden, z. B. 20:36:59
g:i 12 Stunden ohne führende Nullen sowie Minuten, z. B. 8:36

Zeitzone: Die Zeitzone solltest du unbedingt vor dem Erstellen deiner Webseite einstellen, da Contao alle Zeitangaben als Unix-Zeitstempel speichert und Contao diese Zeitstempel bei einer Änderung der Zeitzone nicht automatisch anpasst.

Backend-Einstellungen

Elemente nicht verkürzen: Im »Parent View« stellt Contao die Elemente aus Gründen der Übersichtlichkeit verkürzt dar, wobei einzelne Elemente über ein Navigationsicon bei Bedarf ausgeklappt werden können. Wähle diese Option, um das Feature komplett zu deaktivieren.

Elemente pro Seite: Im Abschnitt Datensätze auflisten hast du gelernt, dass Contao die Anzahl der Datensätze pro Seite standardmäßig auf 30 begrenzt. Diesen Wert kannst du hier beliebig anpassen. Höhere Werte bedeuten jedoch eine längere Ladezeit.

Maximum Datensätze pro Seite: Um zu verhindern, dass ein unbedarfter Benutzer sich 5000 Datensätze auf einmal anzeigen lässt und damit das PHP Memory Limit überschreitet, kannst du festlegen, wie viele Datensätze maximal pro Seite angezeigt werden dürfen.

Frontend-Einstellungen

Ordner-URLs verwenden: Hier kannst du Ordnerstrukturen in Seitenaliasen aktivieren. Damit werden die in der Seitenhierarchie vorhandenen Aliase in den Alias mit übernommen z. B. die Seite »Download« im Seitenpfad »Docs > Install« zu docs/install/download.html anstatt nur download.html.

Leere URLs nicht umleiten: Bei einer leeren URL die Webseite anzeigen anstatt auf den Startpunkt der Sprache weiterzuleiten (nicht empfohlen).

Den Command-Scheduler deaktivieren: Hier kannst du den Periodic Command Scheduler deaktivieren und die _contao/cron-Route mittels eines echten Cronjobs (den du selbst einrichten musst) ausführen. Seit Contao 4.9 kann auch folgendes Kommando benutzt werden:

php vendor/bin/contao-console contao:cron

Sicherheitseinstellungen

Anfrage-Tokens deaktivieren: Hier kannst du aktivieren, dass die Anfrage-Token beim Absenden eines Formulars nicht geprüft werden (unsicher!).

Erlaubte HTML-Tags: Standardmäßig erlaubt Contao keine HTML-Tags in Formularen und entfernt diese beim Speichern automatisch. Für Eingabefelder, bei denen die Nutzung von HTML erwünscht ist, kannst du hier eine Liste erlaubter HTML-Tags festlegen.

Dateien und Bilder

Erlaubte Download-Dateitypen: Hier kannst du festlegen, welche Dateitypen von deinem Server heruntergeladen werden dürfen (Download).

Maximale GD-Bildbreite: Hier kannst du festlegen, wie breit Bilder sein dürfen, damit sie von der GD Bildbearbeitungs-Bibliothek noch verarbeitet werden können. Jegliche Bilder, die diesen Wert übersteigen, werden nicht verarbeitet.

Maximale GD-Bildhöhe: Hier kannst du festlegen, wie hoch Bilder sein dürften, damit sie von der GD Bildbearbeitungs-Bibliothek noch verarbeitet werden können. Jegliche Bilder, die diesen Wert übersteigen, werden nicht verarbeitet.

Datei-Uploads

Erlaubte Upload-Dateitypen: Hier kannst du festlegen, welche Dateitypen auf deinen Server übertragen werden dürfen (Upload).

Maximale Upload-Dateigröße: Hier kannst du festlegen, wie groß eine mit der Dateiverwaltung auf deinen Server übertragene Datei maximal sein darf. Die Eingabe erfolgt in Bytes (1 MiB = 1024 KiB = 1.048.567 Bytes). Größere Dateien werden abgelehnt.

Maximale Bildbreite: Beim Upload von Bildern prüft die Dateiverwaltung automatisch deren Breite und vergleicht diese Werte mit deiner hier festgelegten Vorgabe. Überschreitet ein Bild die maximale Breite, wird es automatisch verkleinert.

Maximale Bildhöhe: Beim Upload von Bildern prüft die Dateiverwaltung automatisch deren Höhe und vergleicht diese Werte mit deiner hier festgelegten Vorgabe. Überschreitet ein Bild die maximale Höhe, wird es automatisch verkleinert.

Website-Suche

Suche aktivieren: Wenn du diese Option auswählst, indiziert Contao die fertigen Seiten deiner Webseite und erstellt daraus einen Suchindex. Mit dem Frontend-Modul »Suchmaschine« kannst du diesen Index dann durchsuchen.

Geschützte Seiten indizieren: Wähle diese Option, um auch geschützte Seiten für die Suche zu indizieren. Nutze dieses Feature mit Bedacht, und achte darauf, personalisierte Seiten grundsätzlich von der Suche auszuschließen.

Ab Version 4.9 kommt ein neuer Such-Indexer zum Einsatz. Die Einstellungen Suche aktivieren und Geschützte Seiten indizieren werden nun über die config/config.yml konfiguriert:

contao:
    search:
        default_indexer:
            enable: true
        index_protected: false

Standard-Zugriffsrechte

Standardbesitzer: Hier kannst du vorgeben, welchem Benutzer standardmäßig die Seiten gehören, für die keine Zugriffsrechte definiert wurden. Weitere Informationen dazu findest du im Abschnitt Zugriffsrechte.

Standardgruppe: Hier kannst du festlegen, welcher Gruppe standardmäßig die Seiten gehören, für die keine Zugriffsrechte definiert wurden. Weitere Informationen dazu findest du im Abschnitt Zugriffsrechte.

Standardzugriffsrechte: Hier kannst du festlegen, welche Zugriffsrechte standardmäßig für die Seiten gelten, für die keine speziellen Zugriffsrechte definiert wurden. Weitere Informationen dazu findest du im Abschnitt Zugriffsrechte.

parameters.yml

In der Contao Managed Edition werden die Parameter (z. B. Datenbankdaten) in der parameters.yml abgelegt. Auf diese Daten greift auch das Contao-Installtool zurück. Diese Datei wird normalerweise von der Versionierung ausgenommen und kann auch zusätzliche Einträge wie z. B. die Angaben für den E-Mail-Versand über SMTP enthalten.

Die Datei parameters.yml findest du im Ordner app/config/ und wird bei der Installation von Contao automatisch angelegt.

Ab der Version 4.8 von Contao befindet sich die Datei direkt im Wurzelverzeichnis der Installation unter config/.

Die parameters.yml nach der Installation von Contao:

# This file has been auto-generated during installation
parameters:
    database_host: 
    database_port: 
    database_user: 
    database_password: 
    database_name: 
    secret: 

config.yml

Die normale Bundle Config gehört in die config.yml und befindet sich im Ordner app/config/. Falls die Datei noch nicht vorhanden ist, muss diese angelegt werden. Contao lädt automatisch die config_prod.yml bzw. config_dev.yml und falls nicht vorhanden die config.yml.

Damit kannst du unterschiedliche Konfigurationen für deine Test- bzw. Produktionsumgebung (dev/prod) realisieren (z. B. mehr Logging im Debug Modus). Außerdem committest du die config.yml im Gegensatz zur parameters.yml in dein Repository. Ein Repository kannst du verwenden, um deine Projekt-Versionen abzulegen, z. B. mit Git.

Ab der Version 4.8 von Contao befindet sich die Datei direkt im Wurzelverzeichnis der Installation unter config/.

Über die Kommandozeile kommst du an die Standard-Konfiguration für Contao:

php vendor/bin/contao-console config:dump-reference contao

Informationen zur aktuelle Konfiguration erhältst du so:

php vendor/bin/contao-console debug:config contao
# Default configuration for extension with alias: "contao"
contao:
    csrf_cookie_prefix:   csrf_
    csrf_token_name:      contao_csrf_token
    encryption_key:       '%kernel.secret%'

    # The error reporting level set when the framework is initialized. Defaults to E_ALL & ~E_NOTICE & ~E_DEPRECATED & ~E_USER_DEPRECATED.
    error_level:          8183

    # Allows to set TL_CONFIG variables, overriding settings stored in localconfig.php. Changes in the Contao back end will not have any effect.
    localconfig:          ~

    # Allows to configure which languages can be used within Contao. Defaults to all languages for which a translation exists.
    locales:

        # Defaults:
        - en
        - cs
        - de
        - es
        - fa
        - fr
        - it
        - ja
        - lv
        - nl
        - pl
        - pt
        - ru
        - sr
        - zh

    # Whether or not to add the page language to the URL.
    prepend_locale:       false

    # Show customizable, pretty error screens instead of the default PHP error messages.
    pretty_error_screens: false

    # An optional entry point script that bypasses the front end cache for previewing changes (e.g. preview.php).
    preview_script:       ''

    # The folder used by the file manager.
    upload_path:          files
    editable_files:       'css,csv,html,ini,js,json,less,md,scss,svg,svgz,txt,xliff,xml,yml,yaml'
    url_suffix:           .html

    # Absolute path to the web directory. Defaults to %kernel.project_dir%/web.
    web_dir:              '%kernel.project_dir%/web'
    image:

        # Bypass the image cache and always regenerate images when requested. This also disables deferred image resizing.
        bypass_cache:         false
        imagine_options:
            jpeg_quality:         80
            jpeg_sampling_factors:

                # Defaults:
                - 2
                - 1
                - 1
            png_compression_level: ~
            png_compression_filter: ~
            webp_quality:         ~
            webp_lossless:        ~
            interlace:            plane

        # Contao automatically uses an Imagine service out of Gmagick, Imagick and Gd (in this order). Set a service ID here to override.
        imagine_service:      null

        # Reject uploaded images exceeding the localconfig.gdMaxImgWidth and localconfig.gdMaxImgHeight dimensions.
        reject_large_uploads: false

        # Allows to define image sizes in the configuration file in addition to in the Contao back end.
        sizes:

            # Prototype
            name:
                width:                ~
                height:               ~
                resize_mode:          ~ # One of "crop"; "box"; "proportional"
                zoom:                 ~
                css_class:            ~
                lazy_loading:         ~
                densities:            ~
                sizes:                ~

                # If the output dimensions match the source dimensions, the image will not be processed. Instead, the original file will be used.
                skip_if_dimensions_match: ~

                # Allows to convert one image format to another or to provide additional image formats for an image (e.g. WebP).
                formats:

                    # Examples:
                    jpg:
                        - webp
                        - jpg
                    gif:
                        - png

                    # Prototype
                    source:               []
                items:

                    # Prototype
                    -
                        width:                ~
                        height:               ~
                        resize_mode:          ~ # One of "crop"; "box"; "proportional"
                        zoom:                 ~
                        media:                ~
                        densities:            ~
                        sizes:                ~
                        resizeMode:           ~ # One of "crop"; "box"; "proportional", Deprecated (Using contao.image.sizes.*.items.resizeMode is deprecated. Please use contao.image.sizes.*.items.resize_mode instead.)
                resizeMode:           ~ # One of "crop"; "box"; "proportional", Deprecated (Using contao.image.sizes.*.resizeMode is deprecated. Please use contao.image.sizes.*.resize_mode instead.)
                cssClass:             ~ # Deprecated (Using contao.image.sizes.*.cssClass is deprecated. Please use contao.image.sizes.*.css_class instead.)
                lazyLoading:          ~ # Deprecated (Using contao.image.sizes.*.lazyLoading is deprecated. Please use contao.image.sizes.*.lazy_loading instead.)
                skipIfDimensionsMatch: ~ # Deprecated (Using contao.image.sizes.*.skipIfDimensionsMatch is deprecated. Please use contao.image.sizes.*.skip_if_dimensions_match instead.)

        # The target directory for the cached images processed by Contao.
        target_dir:           '%kernel.project_dir%/assets/images' # Example: %kernel.project_dir%/assets/images
        target_path:          null # Deprecated (Use the "contao.image.target_dir" parameter instead.)
        valid_extensions:

            # Defaults:
            - jpg
            - jpeg
            - gif
            - png
            - tif
            - tiff
            - bmp
            - svg
            - svgz
            - webp
    security:
        two_factor:
            enforce_backend:      false
    search:

        # The default search indexer, which indexes pages in the database.
        default_indexer:
            enable:               true

        # Enables indexing of protected pages.
        index_protected:      false

        # The search index listener can index valid and delete invalid responses upon every request. You may limit it to one of the features or disable it completely.
        listener:

            # Enables indexing successful responses.
            index:                true

            # Enables deleting unsuccessful responses from the index.
            delete:               true
    crawl:

        # Additional URIs to crawl. By default, only the ones defined in the root pages are crawled.
        additional_uris:      []

        # Allows to configure the default HttpClient options (useful for proxy settings, SSL certificate validation and more).
        default_http_client_options: []

E-Mail Versand Konfiguration

Um den E-Mail Versand über einen SMTP-Server einzurichten, brauchst du folgende Angaben von deinem Hoster:

  • Den Hostnamen des SMTP-Servers.
  • Den Benutzernamen für den SMTP-Server.
  • Das Passwort für den SMTP-Server.
  • Die Portnummer des SMTP-Servers (587 / 465).
  • Die Verschlüsselungsmethode für den SMTP-Server (tls / ssl).

Diese fügst du dann unterhalb der bereits bestehenden Daten in die parameters.yml ein:

# This file has been auto-generated during installation
parameters:
    
    mailer_transport: smtp
    mailer_host: host.example.com
    mailer_user: mail@example.com
    mailer_password: 'mein-passwort'
    mailer_port: 465
    mailer_encryption: ssl

Cache leeren
Damit die Änderungen aktiv werden, muss am Ende der Anwendungs-Cache über den Contao Manager (»Systemwartung« > »Prod.-Cache erneuern«) oder alternativ über die Kommandozeile geleert werden. Dazu muss man sich im Contao Installationsverzeichnis befinden.

php vendor/bin/contao-console cache:clear --env=prod --no-warmup

Danach kannst du den Mailversand auf der Kommandozeile testen.

php vendor/bin/contao-console swiftmailer:email:send --from=absender@example.com --to=empfaenger@example.com --subject=testmail --body=testmail

Dieses Kommando steht ab Contao 4.10 nicht mehr zur Verfügung.

Verschiedene E-Mail Konfigurationen und Absenderadressen

Diese Funktion ist erst ab Contao 4.10 verfügbar.

In vielen Fällen erlauben SMTP-Server nicht den Versand von beliebigen Absenderadressen. Meist muss die Absenderadresse zu den verwendeten SMTP-Server Zugangsdaten passen. Vor allem in Multidomain-Installationen von Contao kann es jedoch wichtig sein, dass die Absenderadresse der E-Mails, die Contao verschickt, zur jeweiligen Domain passt.

Ab Contao 4.10 besteht daher die Möglichkeit, mehrere E-Mail Konfigurationen in Contao zu benutzen. Diese Konfigurationen können dann pro Webseiten-Startpunkt, pro Formular und pro Newsletter-Kanal ausgewählt werden. Pro E-Mail Konfiguration kann dann außerdem auch der Absender gesetzt werden, welcher dann für jede E-Mail benutzt wird, die über die ausgewählte E-Mail Konfiguration gesendet wird.

Die Konfiguration benötigt zwei Schritte. Zuerst müssen die verfügbaren E-Mail Versandmethoden über die Symfony Framework Konfiguration in der config.yml als sogenannte »Transports« eingestellt werden. Dabei können bspw. ein oder mehrere SMTP-Server über die sogenannte »DSN«-Syntax definiert werden. Diese Syntax ist grundsätzlich sehr einfach aufgebaut:

smtp://<BENUTZERNAME>:<PASSWORT>@<HOSTNAME>:<PORT>

Man ersetzt die <PLATZHALTER> mit den Angaben des verwendeten SMTP-Servers, oder entfernt sie dementsprechend. Siehe dazu auch die Informationen in der offiziellen Symfony Dokumentation.

Falls der Benutzername oder das Passwort Sonderzeichen verwendet, müssen diese “URL enkodiert” werden. Es gibt verschiedene Online-Services, mit denen man auf einfache Weise eine beliebige Zeichenfolgen URL-encoden kann, z. B. urlencoder.org. Enkodiere den Benutzernamen und das Passwort separat, nicht gemeinsam mit dem Doppelpunkt.

Anstatt smtp:// kann auch smtps:// verwendet werden, um automatisch SSL Verschlüsselung über Port 465 zu verwenden.

# config/config.yml
framework:
    mailer:
        transports:
            application: smtps://exampleuser:examplepassword@example.com
            website1: smtps://email@example.org:foobar@example.org
            website2: smtps://email@example.de:foobar@example.de

Im zweiten Schritt können die konfigurierten Transports über die Contao Framework Konfiguration im Backend verfügbar gemacht werden. Im folgenden Beispiel werden die Transports website1 und website2 verfügbar gemacht:

# config/config.yml
contao:
    mailer:
        transports:
            website1: ~
            website2: ~

Wenn danach der Symfony Application Cache erneuert wurde, stehen diese E-Mail Konfigurationen zur Selektion im Contao Backend zur Verfügung.

Wird kein Transport konfiguriert, gelten nach wie vor die Informationen aus der parameters.yml. Werden Transports konfiguriert, aber es wird kein Transport im Contao Backend ausgewählt, wird automatisch der erste definierte Transport verwendet.

Optional kann man nun pro Transport auch die Absenderadresse überschreiben:

# config/config.yml
contao:
    mailer:
        transports:
            website1:
                from: email@example.org
            website2:
                from: Lorem Ipsum <email@example.de>

Es besteht außerdem die Möglichkeit, für die Beschreibungen der Optionen für die Selektion im Backend über Übersetzungen pro Sprache zu definieren:

# translations/mailer_transports.en.yml
website1: 'SMTP for Website 1'
website2: 'SMTP for Website 2'
# translations/mailer_transports.de.yml
website1: 'SMTP für Webseite 1'
website2: 'SMTP für Webseite 2'

Cache leeren
Damit die Änderungen im Backend sichtbar werden, muss am Ende der Anwendungs-Cache über den Contao Manager (»Systemwartung« > »Prod.-Cache erneuern«) oder alternativ über die Kommandozeile geleert werden. Dazu muss man sich im Contao Installationsverzeichnis befinden.

php vendor/bin/contao-console cache:clear --env=prod --no-warmup