Contao dcaconfig-editor
Einsatz
Der dcaconfig-editor ist für alle, die die Konfigurationsdatei dcaconfig.php direkt aus dem Backend anpassen wollen und nicht den Weg über z.B. einen "FTP-Download-Edit-Upload" gehen wollen.
Der dcaconfig-editor ist aufgrund seines sensiblen Umfeldes nur für Administratoren frei gegeben.
Mit dem dcaconfig-editor wird die Datei dcaconfig.php im Ordner /sytem/config wie mit jedem anderen lokalen Editor verändert.
Die unten stehenden Beispiele per "Copy&Paste" in den Editor übertragen.
Installation
Der dcaconfig-editor kann über das "Extension Repository" (ER) installiert werden - in der Erweiterungsverwaltung "e-spin_dcaconfig-editor" eingeben und den Anweisungen folgen.
Anschließend ist unter System der Menüpunkt "DCA Config Editor" zu sehen. Der Menüpunkt ist aus Sicherheitsgründen nur für die Benutzer mit Admin-Status erreichbar.
Alternativ kann das Erweiterungspaket manuell per FTP in Contao auf dem üblichen Weg installiert werden. Die aktuellen Resourcen sind bei Github unter https://github.com/e-spin/contao_dcaconfig-editor zu finden.
Wenn was schief geht...
... die Datei /system/config/dcaconfig.php lokal editieren.
Contao 4
Unter Contao 4 kann man die Datei /system/config/dcaconfig.php kopieren - sofern schon vorhanden - oder neu erstellen. Die Arbeit unter /systems/config/... ist "deprecated" - also wird spätestens in Contao 5 abgeschaltet.
Alternativ kann man die Änderungen in /app/Resources/contao/dca/ ablegen, man muss aber die Anpassungen in die dafür zuständigen Dateien einarbeiten. Zum Beispiel
$GLOBALS['TL_DCA']['tl_content']['fields']['headline']['options']= array ('h2', 'h3');
muss in die datei tl_content.php.
Beispiele
Folgend einige Beispiele für die Anpassungen von Contao über die dcaconfig. Informationen über den Aufbau und mögliche Einstellungen sind im Contao-Handbuch > DCA zu finden.
Für eigene Ideen oder Fragen, bitte die Kommentarfunktion nutzen oder eine E-Mail an contao@e-spin.de
... alle Beispiele lassen sich natürlich auch "konventionell" in die dcaconfig einfügen ;-)
Achtung! bitte das "<?php ... ?> in der Datei nicht löschen!
HTML-Tags in Überschriften u.a. Feldern
# ermöglicht die Eingabe von HTML-Code in Titel # preserveTags: _alle_ HTML-Tags vs. # allowHtml: die in Systemsteuerung erlaubten HTML-Tags // Contentelemente $GLOBALS['TL_DCA']['tl_content']['fields']['headline']['eval']['allowHtml'] = true; // Module $GLOBALS['TL_DCA']['tl_module']['fields']['headline']['eval']['allowHtml'] = true; // News $GLOBALS['TL_DCA']['tl_news']['fields']['headline']['eval']['preserveTags'] = true; // Bildunterschriften $GLOBALS['TL_DCA']['tl_content']['fields']['caption']['eval']['allowHtml'] = true; // Seitenname (auch für Navigation) $GLOBALS['TL_DCA']['tl_page']['fields']['title']['eval']['allowHtml'] = true; // Seitentitel $GLOBALS['TL_DCA']['tl_page']['fields']['pageTitle']['eval']['allowHtml'] = true; // in Feld-Beschriftungen $GLOBALS['TL_DCA']['tl_form_field']['fields']['label']['eval']['allowHtml'] = true;
h-Tag in Überschriften einschränken
# h-Tag in Überschriften einschränken - z.B. h2 und h3 $GLOBALS['TL_DCA']['tl_content']['fields']['headline']['options']= array ('h2', 'h3'); # Im Inhaltselement Text die Überschrift per Standard auf H2 - aber nur bei News if (Input::get('do') == 'news') { $GLOBALS['TL_DCA']['tl_content']['fields']['headline']['default'] = array('unit' => 'h2', 'value' => ''); }
HTML-Tags in Übersetzungs-Feld von Isotope
# Einstellungen für Isotope # HTML in Übersetzungs-Feld $GLOBALS['TL_DCA']['tl_iso_labels']['fields']['replacement']['eval']['allowHtml'] = true; $GLOBALS['TL_DCA']['tl_iso_labels']['fields']['replacement']['eval']['decodeEntities'] = true;
IDs der Seiten-/Artikel-Baum anzeigen
# Anzeige IDs in BE-Tree # Seiten-ID anzeigen p = page $GLOBALS['TL_DCA']['tl_page']['list']['label']['fields'][] = 'id'; $GLOBALS['TL_DCA']['tl_page']['list']['label']['format'] = '%s <span style="font-weight:normal; padding-left: 3px;">(IDp: %s)</span>'; # Artikel-ID anzeigen a = article $GLOBALS['TL_DCA']['tl_article']['list']['label']['fields'][] = 'id'; $GLOBALS['TL_DCA']['tl_article']['list']['label']['format'] = '%s <span style="font-weight:normal; padding-left: 3px;">(%s, IDa: %s)</span>';
IDs der Module anzeigen
# Anzeige IDs in BE-Listing # ab Contao 3.2.0 - siehe https://docs.contao.org/books/api/dca/callbacks.html $GLOBALS['TL_DCA']['tl_module']['list']['sorting']['child_record_callback'] = function($row) { return '<div style="float:left;">'. $row['name'] .' <span style="color:#b3b3b3; padding-left:3px;">[' .$GLOBALS['TL_LANG']['FMD'][$row['type']][0] .'] (IDm:' .$row['id']. ")</span></div>\n"; };
Werte beim Duplizieren übernehmen / ausschließen
# Autor beim Duplizieren eines Artikels mit kopieren $GLOBALS['TL_DCA']['tl_article']['fields']['author']['eval']['doNotCopy'] = false; # Veröffentlicht beim Duplizieren eines Artikels mit kopieren $GLOBALS['TL_DCA']['tl_article']['fields']['published']['eval']['doNotCopy'] = false; # Veröffentlicht beim Duplizieren einer Seite mit kopieren $GLOBALS['TL_DCA']['tl_page']['fields']['published']['eval']['doNotCopy'] = false; # abschalten von "(Kopie)" beim Duplizieren $GLOBALS['TL_LANG']['MSC']['copyOf'] = '%s';
Werte Vorbelegen: Artikel und Seite
# Werte Vorbelegen: Artikel und Seite // Veröffentlich bei Artikel "ja" $GLOBALS['TL_DCA']['tl_article']['fields']['published']['default'] = true; // Bildergröße (150 x 100 Pixel) bei einem Bild vorbelegen $GLOBALS['TL_DCA']['tl_content']['fields']['size']['default'] = array(150,100); // Veröffentlich bei Seite "ja" $GLOBALS['TL_DCA']['tl_page']['fields']['published']['default'] = true;
Werte Vorbelegen: Events
# Werte Vorbelegen: Events $GLOBALS['TL_DCA']['tl_calendar_events']['fields']['details']['default'] = '<p>Event Text<br /> als Absatz und mit Zeilenumbruch.</p>'; $GLOBALS['TL_DCA']['tl_calendar_events']['fields']['alt']['default'] = 'Alternativer Text'; # Alternativer Text bei Bildern $GLOBALS['TL_DCA']['tl_calendar_events']['fields']['size']['default'] = array(150,); # Bildbreite von 150 px $GLOBALS['TL_DCA']['tl_calendar_events']['fields']['fullsize']['default'] = true; # Großansicht/Neues Fenster $GLOBALS['TL_DCA']['tl_calendar_events']['fields']['floating']['default'] = array('left'); # Bildausrichtung links
Verwendung von Elementen nur für Admins, Gruppen, User
# Verwendung von Elementen nur für Admins // z.B. nur Administratoren dürfen Include-Elemente verwenden // für alle anderen wird der Punkt entfernt if (!BackendUser::getInstance()->isAdmin) { unset($GLOBALS['TL_CTE']['includes']); } # Verwendung von Elementen nur für Benutzer/User der Gruppe "3" if (!BackendUser::getInstance()->isMemberOf(3)) { unset($GLOBALS['TL_CTE']['includes']); } # Verwendung von Elementen nur für Benutzer/User mit ID "7" if (BackendUser::getInstance()->id != 7) { unset($GLOBALS['TL_CTE']['includes']); }
Formular Daten speichern abschalten (nur noch per EFG)
# Formular Daten speichern abschalten (nur noch per EFG) unset($GLOBALS['TL_DCA']['tl_form']['fields']['storeValues']); unset($GLOBALS['TL_DCA']['tl_form']['fields']['targetTable']);
Formularfelder im EFG: Textareas mit TinyMCE
# HTML Bearbeitung im BE ermöglichen // Möglichkeit 1: bindet den TinyMCE auch im BE in die entsprechende Textarea ein $GLOBALS['TL_DCA']['tl_formdata']['fields']['FELDNAME_DES_TEXTAREAS']['eval']['rte'] = 'tinyMCE'; // Möglichkeit 2: Erlaubt die HTML-Bearbeitung bzw. Speicherung $GLOBALS['TL_DCA']['tl_form_field']['fields']['FELDNAME_DES_TEXTAREAS']['eval']['allowHtml'] = true;
Evaluation von Feldern anpassen
# Evaluation von Feldern anpassen - hier bei Mitgliedern # siehe https://contao.org/de/manual/3.2/data-container-arrays.html#evaluation // Firma zu einem Pflichtfeld in der Mitgliedertabelle machen $GLOBALS['TL_DCA']['tl_member']['fields']['company']['eval']['mandatory'] = true; // Firmennamen dürfen nur alphanumerische Zeichen beinhalten $GLOBALS['TL_DCA']['tl_member']['fields']['company']['eval']['rgxp'] = 'alnum'; // Maximale Anzahl von Feldeingaben - z.B. max. 50 Zeichen $GLOBALS['TL_DCA']['tl_member']['fields']['company']['eval']['maxlength'] = 50;
eigene RTE-Konfiguration (TinyMCE) für Text-Elemente
# eigene RTE-Konfiguration (TinyMCE) für Text-Elemente verwenden # tinyCustom.php vorher anlegen # https://contao.org/de/manual/3.2/customizing-contao.html#tinymce-anpassen // Artikel-Teaser $GLOBALS['TL_DCA']['tl_article']['fields']['teaser']['eval']['rte'] = 'tinyCustom'; // Text-Elemente $GLOBALS['TL_DCA']['tl_content']['fields']['text']['eval']['rte'] = 'tinyCustom'; // Events-Details $GLOBALS['TL_DCA']['tl_calendar_events']['fields']['details']['eval']['rte'] = 'tinyCustom'; // Kommentare $GLOBALS['TL_DCA']['tl_comments']['fields']['comment']['eval']['rte'] = 'tinyCustom'; // FAQs $GLOBALS['TL_DCA']['tl_faq']['fields']['answer']['eval']['rte'] = 'tinyCustom'; // Formulare $GLOBALS['TL_DCA']['tl_form_field']['fields']['text']['eval']['rte'] = 'tinyCustom'; // News $GLOBALS['TL_DCA']['tl_news']['fields']['text']['eval']['rte'] = 'tinyCustom'; // Content-Boxes $GLOBALS['TL_DCA']['tl_boxes']['fields']['content']['eval']['rte'] = 'tinyCustom'; // Alternativ für _alle_ RTE-Felder mit tinyMCE array_walk_recursive($GLOBALS['TL_DCA'], function(&$v, $k){ if($k === 'rte' && $v === 'tinyMCE') { $v = 'tinyCustom'; } });
Sortierung Auf-/Absteigend umstellen
# Sortierung der Mitglieder nach "Letzte Anmeldung" Absteigend (DESC) # GET-Parameter "sort=desc" in URL anfügen z.B. # ..contao/main.php?do=member&ref=19b0c063&sort=desc # Flag: 5 = Absteigend, 6 = Aufsteigend # siehe https://docs.contao.org/books/api/dca/reference.html#sorting # ggf. Sortierung einmal umstellen oder Session-Daten löschen if (Input::get('do') == 'member' && Input::get('sort') == 'desc') { $GLOBALS['TL_DCA']['tl_member']['fields']['currentLogin']['flag'] = 5; } # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # Sortierung bei Nachrichten/News umdrehen $GLOBALS['TL_DCA']['tl_news']['list']['sorting']['fields'] = array('date ASC');
Bildabstände px als Vorauswahl
# Bildabstände px als Vorauswahl $GLOBALS['TL_DCA']['tl_content']['fields']['imagemargin']['default'] = serialize(['unit' => 'px']);