Ergebnis 1 bis 1 von 1

Thema: DCA: Eigene Felder für mehrere Content Elemente

  1. #1
    Contao-Fan Avatar von intradesign
    Registriert seit
    28.07.2015.
    Beiträge
    339

    Standard DCA: Eigene Felder für mehrere Content Elemente

    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?
    Geändert von intradesign (13.09.2020 um 18:59 Uhr)

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Lesezeichen

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •