Contao-Camp 2024
Ergebnis 1 bis 3 von 3

Thema: abhängige bzw. bedingte DCA-Anpassungen

  1. #1
    Contao-Nutzer
    Registriert seit
    07.12.2010.
    Beiträge
    20

    Standard abhängige bzw. bedingte DCA-Anpassungen

    Hallo,
    ich habe gerade erfolgreich meine ersten DCA-Anpassungen umgesetzt. Doch jetzt stellt sich für mich die Herausforderung bzw. Frage, wie man derartige Anpassungen nur unter speziellen Bedingungen im BE enzeigen lassen kann.

    Konkret habe ich die News sowie Events um einige weitere Felder erweitert und möchte diese Felder aber nur in definierten Nachrichten- bzw. Terminarchiven im Template anzeigen.

    Als Beispiel kann durchaus das einfache Beispiel aus den Docs (https://docs.contao.org/dev/getting-started/dca/) dienen:

    Code:
    // contao/dca/tl_news.php
    use Contao\CoreBundle\DataContainer\PaletteManipulator;
    
    $GLOBALS['TL_DCA']['tl_news']['fields']['location'] = [
        'label' => ['Location', 'Location of the news entry, if applicable.'],
        'inputType' => 'text',
        'eval' => ['tl_class' => 'w50', 'maxlength' => 255],
        'sql' => ['type' => 'string', 'length' => 255, 'default' => ''],
    ];
    
    PaletteManipulator::create()
        ->addField('location', 'title_legend', PaletteManipulator::POSITION_APPEND)
        ->applyToPalette('default', 'tl_news')
    ;
    Herzlichen Dank für alle Antworten und Denkanstöße,
    Franz

  2. #2
    Contao-Nutzer
    Registriert seit
    07.12.2010.
    Beiträge
    20

    Standard

    Nachdem ich geschnallt hab, dass die Forensuche Suchbegriffe mit nur 3 Buchstaben (in meinem Fall "dca") ignoriert, hab ich durch die Suche nach "tl_dca archiv" einen Erfolg versprechenden Beitrag gefunden:
    https://community.contao.org/de/show...=tl_dca+archiv


  3. #3
    Contao-Nutzer
    Registriert seit
    07.12.2010.
    Beiträge
    20

    Standard GELÖST, falls nicht jemand weiß, wie's besser geht ;-)

    Nach Kombination aus verschiedenen Forenbeiträgen konnte ich nun eine bei mir unter CTO 4.12 funktionierende Lösung finden:

    PHP-Code:
    // contao/dca/tl_news.php --> Aufbauend auf Std-Bsp von https://docs.contao.org/dev/getting-started/dca/
    use Contao\CoreBundle\DataContainer\PaletteManipulator;

    $GLOBALS['TL_DCA']['tl_news']['fields']['location'] = [
        
    'label' => ['Location''Location of the news entry, if applicable.'],
        
    'inputType' => 'text',
        
    'eval' => ['tl_class' => 'w50''maxlength' => 255],
        
    'sql' => ['type' => 'string''length' => 255'default' => ''],
    ];

    $GLOBALS['TL_DCA']['tl_news']['config']['onload_callback'][] = function() {
        
    // Prüfen ob pid (ID des Archivs) gleich dem gewünschten Archiv ist (hier Archiv-ID 5)
        
    $objNews = \NewsModel::findById(\Input::get('id'));

        if (
    $objNews->pid == '5') {  
            
    PaletteManipulator::create()
                ->
    addField('location''title_legend'PaletteManipulator::POSITION_APPEND)
                ->
    applyToPalette('default''tl_news')
            ;
        } 
    }; 
    Für Kalender-Archive ist anstatt von NewsModel das Model CalendarEventsModel zu verwenden und der PaletteManipulator entsprechend anzupassen. Außerdem wäre bei den Events ein Feld location bereits vorhanden.

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
  •