Skip to content

DCA-Anpassungen

DCA Adjustments :: Contao Manual

/contao/dca/tl_content.php
<?php
// HTML in Überschriften erlauben
// allowHTML bezieht sich nur auf die erlaubten HTML-Tags - siehe Einstellungen
$GLOBALS['TL_DCA']['tl_content']['fields']['headline']['eval']['allowHtml'] = true;

https://contao-academy.de/blog/html-tags-in-ueberschriften-zulassen

templates/component/_headline.html.twig
{% use "@Contao/component/_headline.html.twig" %}
{# Der Block headline_inner wird um die nötigen Filter ergänzt. #}
{% block headline_inner %}
{{ headline.text|insert_tag_raw|raw }}
{% endblock %}

HTML in Nachrichten-Überschriften erlauben

Section titled “HTML in Nachrichten-Überschriften erlauben”
/contao/dca/tl_news.php
<?php
// HTML in News Überschriften bzw. Titel erlauben
// preserveTags erlaubt alle HTML-Tags
$GLOBALS['TL_DCA']['tl_news']['fields']['headline']['eval']['preserveTags'] =true;
/contao/dca/tl_page.php
<?php
$GLOBALS['TL_DCA']['tl_page']['list']['label']['fields'][] = 'id';
$GLOBALS['TL_DCA']['tl_page']['list']['label']['format'] = '%s <span style="color:#999999;padding-left:3px;font-weight:normal;">[ID: %s]</span>';
/contao/dca/tl_article.php
<?php
$GLOBALS['TL_DCA']['tl_article']['list']['label']['fields'][] = 'id';
$GLOBALS['TL_DCA']['tl_article']['list']['label']['format'] = '%s <span style="color:#999999;padding-left:3px;font-weight:normal;">[%s, ID: %s]</span>';
/contao/dca/tl_module.php
<?php
$GLOBALS['TL_DCA']['tl_module']['list']['sorting']['child_record_callback'] = function ($row) {
return '<div class="tl_content_left">' . $row['name'] . ' <span style="color:#999;padding-left:3px">[' . $GLOBALS['TL_LANG']['FMD'][$row['type']][0] . ' | ID:' . $row['id'] . "]</span></div>\n";
};
/contao/dca/member.php
<?php
unset($GLOBALS['TL_DCA']['tl_member']['fields']['dateOfBirth']);
};

Weitere Beispiele, z.T. aber wahrscheinlich alt: Contao dcaconfig-editor

Neue Felder anlegen (z.B. für Nachrichtenteaser)

Section titled “Neue Felder anlegen (z.B. für Nachrichtenteaser)”

Adjusting the DCA (Teaser umbenennen siehe Seite Sprachdateien ändern)
Prod-Cache leeren und DB aktualisieren

Zuerst schauen wir die Originaldatei an:
/vendor/contao/news-bundle/contao/dca/tl_news.php

Der String, der für die Anpassungen mit dem Palette Manipulator zuständig ist, steht unter:

$GLOBALS['TL_DCA']['tl_news'] = [
...
// Palettes
'palettes' ⇒ [
...
// Zeilenumbrüche zum besseren Überblick eingefügt:
'default''{title_legend},headline,featured,alias,author;
{date_legend},date,time;
{source_legend:hide},source;
{meta_legend},pageTitle,robots,description.serpPreview;
{details_legend},location,address,teaser;
{image_legend},addImage;
{recurring_legend},recurring;
{enclosure_legend:hide},addEnclosure;
{expert_legend:hide},cssClass,noComments;
{publish_legend},published,start,stop,
...
],
...
];

Dann legen wir für die Anpassungen eine neue Datei an:

/contao/dca/tl_news.php
<?php
use Contao\CoreBundle\DataContainer\PaletteManipulator;
// https://docs.contao.org/dev/reference/widgets/checkbox/#examples
// https://docs.contao.org/dev/reference/dca/palettes/#arranging-fields
// w25, w33, w50, w66, w75, cbx m12, …
$GLOBALS['TL_DCA']['tl_news']['fields']['neuesfeld'] = [
'label' => ['Mein neues Feld', 'Beschreibungstext für das neue Feld'],
'inputType' => 'text',
'eval' => ['tl_class' => 'w25', 'maxlength' => 255],
'sql' => ['type' => 'string', 'length' => 255, 'default' => ''],
];
PaletteManipulator::create()
→addField('neuesfeld', 'subheadline')
→addField('eventuellnocheinneuesfeld', 'neuesfeld')
// ...
->applyToPalette('default', 'tl_news')
->applyToPalette('internal', 'tl_news')
->applyToPalette('article', 'tl_news')
->applyToPalette('external', 'tl_news')
;

POSITION_AFTER after the defined parent field -> gaaaaanz unten
POSITION_BEFORE ist auch gaaaaanz unten??

Felder für tl_news nur für ein bestimmtes Nachrichtenarchiv anlegen

Section titled “Felder für tl_news nur für ein bestimmtes Nachrichtenarchiv anlegen”
  • Neue Felder anlegen
  • Darunter eine Callback-Funktion mit if-Statement
  • PaletteManipulater nur dann ausführen, wenn das if-Statement erfüllt ist
/contao/dca/tl_news.php
$GLOBALS['TL_DCA']['tl_news']['fields']['neuesfeld'] = [
...
];
$GLOBALS['TL_DCA']['tl_news']['config']['onload_callback'][] = function () {
$id = \Contao\Input::get('id');
$news = \Contao\NewsModel::findById($id);
if ($news !== null && $news->pid == 9) {
PaletteManipulator::create()
->addField('neuesfeld', 'subheadline')
->applyToPalette('default', 'tl_news')
->applyToPalette('internal', 'tl_news')
->applyToPalette('article', 'tl_news')
->applyToPalette('external', 'tl_news')
;
}
};

Input-Type Gruppe GitHub

Anleitung von pdir