Contao CMS

Contao 5

  • Contao 2024: Root wurde von /web auf /public geändert, alte Variante geht aber noch
  • Contao4: Root muss(te) auf httpdocs/contao4/web/ zeigen
  • /system/config/localconfig.php wird abgelöst durch /app/Resources/dcaconfig.php
  • ab Contao 4.4 gibt es den Contao Manager und nur noch die Managed Edition
  • Contao 4 -> Contao 5:
    - immer erst auf die höchste Major Version updaten!
  • Contao5:
    .env.local -> Datenbank-Zugangsdaten
    /files/ und /templates/ -> Userdaten
  • Backend Zugangsdaten vergessen:
    - SQL Datenbank "tl_user" suchen
    - Spalte "admin": Wert=1 löschen
    - Install-Tool (Contao4) bzw. contao_manager (Contao5) öffnen -> neues Admin-Konto anlegen

Bausteine wie Kopf / Fuß / Menue auf alle Seiten einblenden:

  • Artikel: Seite Ressourcen anlegen, Seite nicht veröffentlichen
  • Artikel für Kopf usw. hier anlegen, Artikel (kopf) veröffentlichen, ID merken
  • Themes / Frontend-Module: gleichlautendes Modul wie Artikel (mod_kopf) anlegen, Typ: eigener HTML-Code
  • Code: "<div>

    Der Eintrag "423" existiert leider nicht.

    </div>"  -> ID des Artikel aus Punkt 2
  • Themes / Seitenlayout anpassen: statt Modul= Artikel das neue Modul (mod_kopf) zuordnen

Folderstruktur von Contao4:

├── app
│   ├── AppKernel.php
│   ├── cache
│   ├── config
│   └── logs
├── assets
├── files
├── system
│   ├── config
│   │   └── localconfig.php
│   └── modules
├── templates
├── vendor
│   ├── contao
│   └── symfony
└── web
    ├── .htaccess (hidden file)
    ├── app_dev.php
    ├── app.php
    ├── install.php
    └── share


Neuinstallation bei Netcup:
- /httpsdocs/ muss leer sein, Default-index.php o.ä. löschen
- Hosting/PHP: open_basedir (legt fest, auf welche Verzeichnisse PHP zugreifen kann)
  -> zweite Wahlmöglichkeit auswählen, die mit {WEBSPACEROOT} anfängt und NICHT die Defaulteinstellung mit {DOCROOT}..

SSH-Console:

  • vendor/bin/contao-console list   - Contao Manager, Version und Befehle
  • vendor/bin/contao-console contao:setup   - Contao Manager, installiert Contao
  • vendor/bin/contao-setup   - wie oben
  • php vendor/bin/contao-console contao:migrate  - migriere DB
  • php composer.phar create-project contao/managed-edition example 4.11 -
  • php vendor/bin/contao-console contao:user:create  - erstellt Backend-User
  • chmod 0755 public  - /public soll Rights 755 haben

Klar strukturiertes Backend.
Gute Benutzer- und Gruppenverwaltung. (Frontend= Mitglieder, Backend= Benutzer)
Administratoren= "allow-all" per Default, Nutzer= "deny-all" per Default.
Benutzer können mehreren Gruppen angehören, die additiv wirken.
Rechte werden auf Unterseiten vererbt, können aber pro Seite individuell gesetzt werden.
Bis 2010 als TypoLight bekannt.
MySQL-Datenbank fängt immer mit TL_ an.

Bedientips:

Insert Tags: http://de.contaowiki.org/Insert-Tags

Menue, Submenue: http://de.contaowiki.org/ModulNavigation

Ausgabe aller Systemvariablen in PHP:
<?php echo '<pre>' . print_r($GLOBALS) . '</pre>'; ?>

Templates erklärt:
https://docs.contao.org/books/manual/4.0/de/04-inhalte-verwalten/templates.html

Responsive Images in HTML und Contao
• in Themes: neuer Punkt "Bildgröße", Bildgröße definieren.
  Diese vordefinierten Größen erscheinen im Artikel unter vordefinierte Bildgröße.
• Bsp: Bildgröße "Picture (wichtigster Teil)", Zoom 0- ganzes Bild, 100- wichtigster Ausschnitt, Zwischenwerte sind möglich.
• je Picture-Set lassen sich belibig viele Media Querys anlegen, in denen je nach Bildgröße, Pixeldichte usw. verschiedene Zoomstufen definiert werden können.
Video: https://www.youtube.com/watch?v=ub8yROSQyQ4

Inegriertes Suchmodul:

  • in SEITEN steuern per Robots-Tag (Index) und Suchindexer
  • per Script steuern:
    <!-- indexer::stop -->
    ......
    <!-- indexer::continue -->

CSS

  • CLASS benutzen, keine IDs verwenden
    - IDs dürfen nur einmalig pro Seite vorkommen, Code kann nicht wieder verwendet werden
    - IDs haben höhere Priorität und erschweren bei Kombination den Überblick
  • unnötige CSS-Verschachtelungen vermeiden (max. 3 Ebenen)
    - CLASS direkt ansprechen. Statt .teaser .image lieber zweite Klasse: .teaser-image
  • modular schreiben

CSS Prioritäten:

  •     Inline Styles: 1000
  •     IDs: 100  ( #header )
  •     Klassen: 10  ( .header )
  •     Attribute: 10  ( [id="header"], [class="header"] )
  •     Element: 1  ( li, div )

Bsp:
.nav li ︃{...︃}  ergibt CSS Score = 11
#navi li ︃︃{︃...}  ergibt CSS-Score = 101
[id="header"] {︃...}  ergibt CSS-Score = 10

• Contao setzt oft auf ID (header, footer), man kommt schwer darum herum.
  - Lösung: Template bearbeiten (ggf. Kompatibilitätsprobleme bei Updates)
  - Header als Attribut ansprechen, nicht als ID.

Klassen nach dem Schema (von oben nach unten) anlegen:

  • [group] - Gruppenname, falls Element so oder in ähnlicher Form auf der Seite vorhanden
  • [identifier] - Die eigentliche Bezeichnung der Klasse
  • [child] - Ergänzung, falls es sich um ein Kindelement handelt
  • [modifier] - Status eines Elements

Bindestrich oder Tiefstrich ist möglich (.nav__link).

Bsp:
.nav-main [group][identifier]
.logo-small [identifier][modifier]
.highlight-headline-big [identifier][child][modifier]

Contao nutzt bereits Klassen: Navigationsmenü (.mod_navigation), News-Liste (.mod_newslist), normaler Artikel (.mod_article) und jedes Element (z.B. .ce_text).
Besser sind eigene Klassen.
Jedes Element kann mehrere Klassen besitzen (class="mod_navigation nav nav--main block").

CSS kaskadieren:

p, ul, ol {
  margin: 1rem 0;

  &:first-child {
    margin-block-start: 0;
  }

  &:last-child {
    margin-block-end: 0;
  }
}

 

Quelle: erdmann-freunde.de

PHP in Contao

PHP einbinden per HTML-Code:

File muß unter /templates/ liegen.

Variablen

<?php $this->dumpTemplateVars() ?> - alle verfügbaren Variablen ausgeben:
<?php echo $variable; ?>: Gibt den Wert einer einzelnen Variablen aus (z. B. <?php echo $headline; ?>).
<?php print_r($variable); ?>: Zeigt eine lesbare Darstellung eines Arrays oder Objekts an.
<?php var_dump($variable); ?>: Gibt detailliertere Informationen über eine Variable aus (Typ und Wert).

News-Modul:

Datenbank:
- tl_news_archive enthält die DB-Archive (id)
- tl_news enthält headline und teaser (pid= id von tl_news_archive)
- tl_content enthält "text" (ptable= tl_news, pid= id von tl_news, Datensätze sortiert nach 'sorting')

The singleSRC field in tl_news (and also tl_content and tl_calendar_events for example) is a binary field containing an UUID that relates to the tl_files.uuid field.

Contao 4

Contao nutzt seit Contao 4.0 binär-Werte für Bilder-Felder, was für maschinen-lesen sehr performant ist und weniger Speicherplatz in der DB benötigt.
Die Uuid ist die direkte Referenz in der Dateiverwaltung und ist quasi "lesbar".

Contao 4.4 (neu) installieren
- Verzeichnis projekt/web/ einrichten und (Sub)Domain darauf einrichten
- Contao Manager (contao-manager.phar) laden
- Datei in o.g. Verzeichnis kopieren und in contao-manager.phar.php umbenennen
- mit http://domain/contao-manager.phar.php Installation starten. Der Contao-Manager stürzt beim ersten Mal immer mit Fehlermeldungen ab, nach Refresh läuft er aber.
- Benutzerkonto erstellen
- Systemprüfung und Konfiguration, die meisten Hosting Provider sind vorkonfiguriert
- Setup starten, Version auswählen
- der Installer zieht die Installation direkt von Contao in den Webspace.
- Datenbankverbindung einrichten
- ich mußte app/config/config.yml manuell anlegen, den Inhalt gibt der Installer an
  (oder MySQL Version ab 5.7.7)
- Browser-Cache und Cache unter /var/cache/prod/ leeren

Links:

Contao 3

Contao 3 Support endete 07/2019

  • Third-Party-Erweiterungen müssen ebenfalls gesichert und nach dem Update wieder hergestellt oder gar nicht erst überschreiben werden. 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 <code>/composer</code> ebenfalls gesichert werden.
  • Nach dem Update Installationstool: contao/install.php aufrufen (Installationspasswort!) und Datenbank updaten.
  • Passwort für das Installtool vergessen?
    In diesem Fall lokale Konfigurationsdatei system/config/localconfig.php öffnen und folgende Zeile löschen:<br />$GLOBALS['TL_CONFIG']['installPassword']<br />Danach fragt Sie das InstallTool nach einem neuen Passwort.
  • Google Sitemap: befindet sich unter <a href="https://domain.tld/share/[blabla].xml">https://domain.tld/share/[blabla].xml</a>
    In Seitenstruktur/ Startseite diesen Button nicht vergessen: <img src="https://uwe-kernchen.de/phpmyfaq/images/1767047786blobid1.png"
  • Contao Umzug
    /system/config/localconfig.php - MySQL Zugangsdaten<br />Bei Verzeichniswechsel:  $GLOBALS['TL_CONFIG']['websitePath'] = ‘http://host/blog/’; in localconfig.php und Pfad in pathconfig.php ändern.</p>
  • Quelle: https://erdmann-freunde.de/ressourcen.html

von Uwe Kernchen

Kommentare

Einen Kommentar schreiben

Was ist die Summe aus 6 und 9?