Hallo zusammen,
ich habe für Textelemente erfolgreich zwei neue Felder hinzugefügt: Zur Headline soll es eine "Preline" und eine "Subline" geben. Beide Felder werden im Backend korrekt ausgegeben. Für das Frontend habe ich sie im Template block_searchable hinzugefügt.
Dazu habe ich in der Datei /contao/dca/tl_content.php folgendes eingegeben:
PHP-Code:
<?php
use Contao\CoreBundle\DataContainer\PaletteManipulator;
$GLOBALS['TL_DCA']['tl_content']['fields']['preline'] = [
'label' => &$GLOBALS['TL_LANG']['tl_content']['preline'],
'inputType' => 'text',
'eval' => ['tl_class'=>'w50 clr', 'maxlength'=>255],
'sql' => ['type' => 'string', 'length' => 255, 'default' => '']
];
$GLOBALS['TL_DCA']['tl_content']['fields']['subline'] = [
'label' => &$GLOBALS['TL_LANG']['tl_content']['subline'],
'inputType' => 'text',
'eval' => ['tl_class'=>'w50', 'maxlength'=>255],
'sql' => ['type' => 'string', 'length' => 255, 'default' => '']
];
PaletteManipulator::create()
->addField('preline', 'headline',PaletteManipulator::POSITION_AFTER)
->applyToPalette('text', 'tl_content')
;
PaletteManipulator::create()
->addField('subline', 'preline',PaletteManipulator::POSITION_AFTER)
->applyToPalette('text', 'tl_content')
;
Durch ->applyToPalette('text', 'tl_content') wird festgelegt, dass die Felder in Textelementen (ce_text) erscheinen. Was muss ich aber machen, damit die beiden Felder auch in anderen Inhaltselementen erscheinen? Dabei wäre es mir Recht, wenn sie in allen Content Elementen erscheinen würden, falls das einfache ist, besser wäre allerdings, wenn ich die Content Elemente festlegen könnte.
Was genau muss ich dafür machen? Ich habe folgendes versucht:
- PaletteManipulator::create() für alle gewünschten Content Elemente aufrufen?
- applyToPalette innerhalb von PaletteManupulator::create() mehrfach angeben?
oder - oder in applyToPalette() mehrere Content Elemente hinzufügen, etwa so: applyToPalette(['text', 'image', 'gallery'], 'tl_content')?
Vielen Dank und viele Grüße
Timo
Kurzer Nachtrag: Ich habe die zweite Lösung nochmal getestet, also folgendes eingetragen:
PHP-Code:
PaletteManipulator::create()
->addField('preline', 'headline',PaletteManipulator::POSITION_AFTER)
->applyToPalette('headline', 'tl_content')
->applyToPalette('text', 'tl_content')
->applyToPalette('image', 'tl_content')
;
Damit funktioniert es: Die zusätzlichen Felder erscheinen nun bei Überschrift-, Text- und Bild-Elementen.
Ist das OK so oder gibt es eine bessere bzw. "die korrekte" Lösung?
Lesezeichen