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']);