Im Template mod_article.html5 möchte ich es Redakteuren ermöglichen, den bereits vorhandenen Klassen (class="mod_article block") eine optionale Klasse anzufügen.
Dazu habe ich in "contao/dca/tl_article.php" ein Select-Feld "background_select" hinzugefügt und dort 3 Optionen hinterlegt:
PHP-Code:
<?php
// Import PaletteManipulator class
use Contao\CoreBundle\DataContainer\PaletteManipulator;
// Add the new field configuration
$GLOBALS['TL_DCA']['tl_article']['fields']['background_select'] = [
'label' => &$GLOBALS['TL_LANG']['tl_article']['background_select'],
'inputType' => 'select',
'options' => ['option1', 'option2', 'option3'], // replace with actual options
'eval' => ['mandatory' => false, 'tl_class' => 'w50'],
'sql' => "varchar(255) NOT NULL default ''"
];
// Use PaletteManipulator to add the field to a new legend
PaletteManipulator::create()
->addLegend('background_legend', 'template_legend', PaletteManipulator::POSITION_AFTER)
->addField('background_select', 'background_legend', PaletteManipulator::POSITION_APPEND)
->applyToPalette('default', 'tl_article');
<?php
$this->wrapperAttributes = $this
->attr($this->cssID)
->addClass([$this->class, 'block'])
->addStyle($this->style)
->mergeWith($this->wrapperAttributes)
;
?>
contao/languages/de/tl_article.php
PHP-Code:
<?php
$GLOBALS['TL_LANG']['tl_article']['background_select'] = ['Hintergrund wählen', 'Bitte wählen Sie einen Hintergrund.'];
Mein Template sieht derzeit so aus. "background_select" habe ich unter ->addClass angefügt.
PHP-Code:
<?php $this->extend('mod_article'); ?>
<?php
$this->wrapperAttributes = $this
->attr($this->cssID)
->addClass([$this->class, 'block', $this->background_select])
->addStyle($this->style)
->mergeWith($this->wrapperAttributes)
;
?>
<?php if (!$this->noMarkup): ?>
<?php $this->block('content'); ?>
<div class="container_inner">
<?= $this->parent(); ?>
</div>
<?php $this->endblock(); ?>
<?php endif; ?>
Das scheint so nicht richtig zu sein, zumindest sehe ich die Klasse über diese Weise nicht im Quellcode. Liegt hier der Hund bei "<?php $this->extend('mod_article'); ?>" begraben? Eigentlich wollte ich es vermeiden, das gesamte Original-Template zu verwenden weil ich es charmant finde, nur den betreffenden Teil zu verändern.