Ergebnis 1 bis 2 von 2

Thema: Artikelteaser erweitert, kann es aber nicht im Frontend ausgeben

  1. #1
    Contao-Nutzer
    Registriert seit
    28.03.2019.
    Beiträge
    40

    Standard Artikelteaser erweitert, kann es aber nicht im Frontend ausgeben

    Ich möchte für die Artikelteaser ein paar weitere Felder haben (u.a. ein separates Titelfeld, Artikelteaser-Bild etc.).
    Dazu habe ich in /app/Resources/contao/dca/ eine tl_article.php mit dem folgenden Inhalt hinterlegt:

    PHP-Code:
    <?php
    // Definitionen der tl_content anfordern, damit wir sie hier nutzen koennen
    Controller::loadDataContainer('tl_content'); 

    // Anpassung der Palette - Neue FELDER hier einfuegen!
    $GLOBALS['TL_DCA']['tl_article']['palettes']['default'] = str_replace
    (
        
    'teaserCssID',
        
    'teaserTitle,teaserUrl,teaserTarget,teaserSingleSRC,teaserAlt,teaserImageTitle,teaserSize,teaserCssID',
        
    $GLOBALS['TL_DCA']['tl_article']['palettes']['default']
    );

    // Hinzufügen der neuen Feld-Konfiguration  
    $GLOBALS['TL_DCA']['tl_article']['fields']['teaserTitle'] = array
    (
        
    'label'                   => &$GLOBALS['TL_LANG']['tl_article']['teaserTitle'],
        
    'exclude'                 => true,
        
    'search'                  => true,
        
    'inputType'               => 'inputUnit',
        
    'options'                 => array('h2''h3''h4''h5''h6'),
        
    'eval'                    => array('maxlength'=>200'tl_class'=>'long'),
        
    'sql'                     => "varchar(255) NOT NULL default ''"
    );
    $GLOBALS['TL_DCA']['tl_article']['fields']['teaserUrl'] = array
    (
        
    'label'                   => &$GLOBALS['TL_LANG']['tl_article']['teaserUrl'],
        
    'exclude'                 => true,
        
    'inputType'               => 'text',
        
    'eval'                    => array('mandatory'=>false'rgxp'=>'url''decodeEntities'=>true'maxlength'=>255'tl_class'=>'w50 wizard'),  
        
    'wizard'                   => array(array('tl_content''pagePicker')),
        
    'sql'                     => "varchar(255) NOT NULL default ''"
    );
    $GLOBALS['TL_DCA']['tl_article']['fields']['teaserTarget'] = array
    (
        
    'label'                   => &$GLOBALS['TL_LANG']['tl_article']['teaserTarget'],
        
    'exclude'                 => true,
        
    'inputType'               => 'checkbox',
        
    'eval'                    => array('tl_class'=>'w50 m12'),
        
    'sql'                     => "char(1) NOT NULL default ''"
    );   
    $GLOBALS['TL_DCA']['tl_article']['fields']['teaserSingleSRC'] = array
    (
                
    'label'                   => &$GLOBALS['TL_LANG']['tl_article']['teaserSingleSRC'],
                
    'exclude'                 => true,
                
    'inputType'               => 'fileTree',
                
    'eval'                    => array('filesOnly'=>true'fieldType'=>'radio''mandatory'=>false'tl_class'=>'clr'),
                
    'extensions'              => \Contao\Config::get('validImageTypes'),
                
    'sql'                     => "binary(16) NULL"
    );
    $GLOBALS['TL_DCA']['tl_article']['fields']['teaserAlt'] = array
    (
                
    'label'                   => &$GLOBALS['TL_LANG']['tl_article']['teaserAlt'],
                
    'exclude'                 => true,
                
    'search'                  => true,
                
    'inputType'               => 'text',
                
    'eval'                    => array('maxlength'=>255'tl_class'=>'w50'),
                
    'sql'                     => "varchar(255) NOT NULL default ''"
    );   
    $GLOBALS['TL_DCA']['tl_article']['fields']['teaserImageTitle'] = array
    (
                
    'label'                   => &$GLOBALS['TL_LANG']['tl_article']['teaserImageTitle'],
                
    'exclude'                 => true,
                
    'search'                  => true,
                
    'inputType'               => 'text',
                
    'eval'                    => array('maxlength'=>255'tl_class'=>'w50'),
                
    'sql'                     => "varchar(255) NOT NULL default ''"
    );
    $GLOBALS['TL_DCA']['tl_article']['fields']['teaserSize'] = array
    (
                
    'label'                   => &$GLOBALS['TL_LANG']['tl_article']['teaserSize'],
                
    'exclude'                 => true,
                
    'inputType'               => 'imageSize',
                
    'reference'               => &$GLOBALS['TL_LANG']['MSC'],
                
    'eval'                    => array('rgxp'=>'natural''includeBlankOption'=>true'nospace'=>true'helpwizard'=>true'tl_class'=>'w50'),
                
    'options_callback' => function ()
                {
                    return 
    System::getContainer()->get('contao.image.image_sizes')->getOptionsForUser(BackendUser::getInstance());
                },
                
    'sql'                     => "varchar(64) NOT NULL default ''"
    );
    ## NICHT VERGESSEN: NEUE FELDER GANZ OBEN IN PALETTE EINFUEGEN!
    Außerdem habe ich diee entsprechenden Beschriftungen in /app/Resources/contao/languages/de/ hinterlegt und die Datenbank über die Contao Install aktualisiert.

    Nachdem ich im ContaoManager den Cache geleert habe, stehen mir die Felder wie erwartet im Backend bei den jeweiligen Artikeleinstellungen zur Verfügung und können auch von mir befüllt sowie gespeichert und erweitert werden.

    Nun habe ich im Frontend auf einer Seite das Inhaltselement Artikelteaser eines bestimmten Artikels eingefügt. Der grundlegende Teaser kommt, die neuen Felder aber nicht. Also habe ich die Feldaufrufe im Template ce_teaser.html5 eingefügt, erstmal ganz simpel um nur zu gucken, ob was kommt:
    PHP-Code:
    <div class="<?= $this->class ?> ce_text block"<?= $this->cssID ?><?php if ($this->style): ?> style="<?= $this->style ?>"<?php endif; ?>>

      <?php if ($this->headline): ?>
        <h1><?= $this->headline ?></h1>
      <?php endif; ?>
      

      <?php if ($this->teaserTitle): ?><?= $this->teaserTitle ?><?php endif; ?> 
      <?php if ($this->teaserUrl): ?><?= $this->teaserUrl ?><?php endif; ?>
      <?php if ($this->teaserSingleSRC): ?><?= $this->teaserSingleSRC ?><?php endif; ?>  
      <?php if ($this->teaserAlt): ?><?= $this->teaserAlt ?><?php endif; ?>   
      <?php if ($this->teaserImageTitle): ?><?= $this->teaserImageTitle ?><?php endif; ?> 
      <?php if ($this->teaserSize): ?><?= $this->teaserSize ?><?php endif; ?>    
      
      <?= $this->text ?>

      <p class="more"><a href="<?= $this->href ?>" title="<?= $this->readMore ?>"><?= $this->more ?><span class="invisible"> <?= $this->headline ?></span></a></p>
      

    </div>
    Das Problem: Es kommt nichts.
    Dann habe ich die PHP-Anweisung für das Anzeigen von Variablen in das Template eingefügt und gesehen, dass die neuen Felder darin gar nicht zur Verfügung stehen. Der Artikelteaser ist da, aber keines der anderen Felder obwohl ich sie im Backend ja über dem Artikelteaser sehe und befüllen kann.

    Hat jemand eine Idee, was da schief läuft und wie ich es korrigieren kann? Danke.

  2. #2
    Contao-Nutzer
    Registriert seit
    28.03.2019.
    Beiträge
    40

    Standard

    Verstehe ich hier etwas vom Aufbau völlig falsch oder agiert der Artikelbereich anders als andere?

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
  •