Contao-Camp 2024
Ergebnis 1 bis 16 von 16

Thema: Einbindung eines News Teasers über ein Select Feld

  1. #1
    Contao-Fan Avatar von dirksche
    Registriert seit
    05.08.2009.
    Ort
    Grosslittgen
    Beiträge
    641

    Standard Einbindung eines News Teasers über ein Select Feld

    Hallo liebe Community,

    ich würde gerne ein Element basteln, in dem der Redakteur die Möglichkeit hat, einen einzelnen News Beitrag auf einer Seite einzubinden.
    Ist so was mit Nachrichten möglich?

    Mit Inhaltselementen funktioniert es ja:
    Code:
    'articleId' => array(
        'label' => array('Artikel', ''),
        'inputType' => 'select',
        'options_callback' => array('tl_content', 'getArticleAlias'),
    ),
    Doch wenn ich es so versuche, erhalte ich eine Fehlermeldung:
    Code:
    'articleId' => array(
        'label' => array('News', ''),
        'inputType' => 'select',
        'options_callback' => array('tl_news', 'getNewsAlias'),
    ),

  2. #2
    Contao-Urgestein Avatar von fiedsch
    Registriert seit
    09.07.2009.
    Ort
    München
    Beiträge
    2.935

    Standard

    Die funktion getArticleAlias() ist in dca/tl_content.php bereits definiert. Du rufst getNewsAlias() auf. Hast Du die auch definiert?
    Contao-Community-Treff Bayern: http://www.contao-bayern.de

  3. #3
    Contao-Fan Avatar von dirksche
    Registriert seit
    05.08.2009.
    Ort
    Grosslittgen
    Beiträge
    641

    Standard

    Nein, ich habe noch nichts definiert. Das war auch nur als Beispiel gedacht. Gibt es denn prinzipiell eine einfache Möglichkeit, in einem Select Feld die Newsbeiträge aufzulisten oder Einsen News Beitrag als Content Element einzubinden?

  4. #4
    Contao-Fan Avatar von dirksche
    Registriert seit
    05.08.2009.
    Ort
    Grosslittgen
    Beiträge
    641

    Standard

    Es gibt wohl eine Erweiterung die sowas kann, doch die läuft nicht unter 4.9
    heimrichhannot/contao-newselement

  5. #5
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    33.896
    Partner-ID
    10107

    Standard

    PHP-Code:
    return [
        
    'label' => ['News'''],
        
    'types' => ['content'],
        
    'contentCategory' => 'texts',
        
    'standardFields' => ['headline''cssID'],
        
    'wrapper' => [
            
    'type' => 'none',
        ],
        
    'fields' => [
            
    'news' => [
                
    'label' => ['Nachricht''Wähle eine Nachricht aus.'],
                
    'inputType' => 'select',
                
    'foreignKey' => 'tl_news.headline',
                
    'eval' => ['tl_class' => 'w50''mandatory' => true'includeBlankOption' => true],
            ],
        ],
    ]; 
    Damit kannst du eine Nachricht auswählen. Im Template kannst du dir diese Nachricht - und dadurch den Teaser - per NewsModel holen.
    Geändert von Spooky (03.03.2020 um 10:23 Uhr)

  6. #6
    Contao-Fan Avatar von dirksche
    Registriert seit
    05.08.2009.
    Ort
    Grosslittgen
    Beiträge
    641

    Standard

    Spooky, Du bist mein Held :-)

    Allerdings habe ich noch Probleme, die Daten über das NewsModel zu holen.

    Code:
    <?php
    
    use \Contao\NewsModel;
    
    $news = null;
    
    if ('tl_news' === $this->ptable) {
      $news = NewsModel::findById($this->pid);
    }
    
    ?>
    
    <?php if (null !== $news): ?>
      <span class="info"><?= $news->headline ?></span>
    <?php endif; ?>
    Das kommt bei mir nichts :-(

  7. #7
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    33.896
    Partner-ID
    10107

    Standard

    Warum dieser ptable check? So funktioniert das nur, wenn das Inhaltselement sich innerhalb einer Nachricht befindet. Was genau möchtest du eigentlich machen?

  8. #8
    Contao-Fan Avatar von dirksche
    Registriert seit
    05.08.2009.
    Ort
    Grosslittgen
    Beiträge
    641

    Standard

    Ich habe ein simples Rocksolid Custom Element zum Auswählen eines News Beitrages. Auf der Webseite soll dann das Teaserbild, die Headline und der Link zur Detailseite erscheinen.
    Auf der Seite sollen mehrere dieser Custom Elements eingebunden werden können.

  9. #9
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    33.896
    Partner-ID
    10107

    Standard

    Ja, dann so machen wie von mir erwähnt . Ich weiß nicht warum du diesen ptable Check eingebaut hast. Dadurch kannst du das Element natürlich nur innerhalb einer Nachricht verwenden.

  10. #10
    Contao-Fan Avatar von dirksche
    Registriert seit
    05.08.2009.
    Ort
    Grosslittgen
    Beiträge
    641

    Standard

    Also ganz simpel mit
    Code:
    <?php $newsteaser = \Contao\NewsModel::findById($this->news); ?>
    <span class="info"><?= $newsteaser->headline ?></span>

  11. #11
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    33.896
    Partner-ID
    10107

    Standard

    Genau, ja.

  12. #12
    Contao-Fan Avatar von dirksche
    Registriert seit
    05.08.2009.
    Ort
    Grosslittgen
    Beiträge
    641

    Standard

    Eine Frage hätte ich doch noch.
    Wie binde ich am besten das Teaserbild ein? Also das singleSRC?
    Ich habe es derzeit so gelöst:
    Code:
    <?php echo \FilesModel::findByUuid($newsteaser->singleSRC)->path; ?>
    Ich würde das Bild aber gerne beschneiden.

  13. #13
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    33.896
    Partner-ID
    10107

    Standard

    In Rocksolid Custom Element Templates gibt es die $this->getImageObject Hilfsmethode.

  14. #14
    Contao-Fan Avatar von dirksche
    Registriert seit
    05.08.2009.
    Ort
    Grosslittgen
    Beiträge
    641

    Standard

    Stimmt, hatte ich ganz vergessen ;-)
    Code:
    <?php if ($image = $this->getImageObject($newsteaser->singleSRC, array('200', '150'))): ?>
        <?php $this->insert('picture_default', $image->picture) ?>
    <?php endif ?>
    Nochmals ein dickes Dankeschön :-)

  15. #15
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    33.896
    Partner-ID
    10107

    Standard

    Ich empfehle
    PHP-Code:
    <?php $this->insert('image', (array) $image?>

  16. #16
    Contao-Fan Avatar von dirksche
    Registriert seit
    05.08.2009.
    Ort
    Grosslittgen
    Beiträge
    641

    Standard

    Ich muss nochmal diesen alten Beitrag reaktivieren :-)
    Ich habe nun den Fall, dass ich einen News Beitrag in einem Custom Element darstellen möchte.
    Wie kann ich mir über das NewsModel den Datensatz, der ja eigentlich in der tl_content Tabelle liegt, holen?

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
  •