Contao-Camp 2024
Ergebnis 1 bis 15 von 15

Thema: In einem Nachrichten-Inhaltselement-Template auf Werte des Beitrags zugreifen?

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

    Standard In einem Nachrichten-Inhaltselement-Template auf Werte des Beitrags zugreifen?

    Hallo liebe Community,

    ich würde gerne in dem Template eines Inhaltselements, welches in einem Nachrichtenbeitrag liegt, auf die Werte des Beitrages zugreifen bzw. diese im Template ausgeben.
    Derzeit mache ich das so:

    Code:
    <?php $listData = Database::getInstance()->prepare("SELECT * FROM tl_news WHERE id=?")->execute($this->pid); ?>
    <span class="info"><?php echo $listData->projekt; ?></span>
    Das funktioniert auch wunderbar.
    Doch es scheint mir nicht die eleganteste Lösung zu sein.
    Gibt es da noch andere Möglichkeiten?

    Anmerkung: Das Feld "Projekt" habe ich in der tl_news DCA selber angelegt.

    Grüße,
    Dirk

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

    Standard

    Besser ist es, du nutzt das Model, denn da wird dann keine zusätzliche Datenbankabfrage ausgeführt. zB:
    PHP-Code:
    <span class="info"><?= \Contao\NewsModel::findById($this->pid)->projekt ?></span>
    oder
    PHP-Code:
    <?php $news = \Contao\NewsModel::findById($this->pid); ?>
    <span class="info"><?= $news->projekt ?></span>
    oder
    PHP-Code:
    <span class="info"><?= \Contao\NewsModel::findById(\Contao\Input::get('auto_item'falsetrue))->projekt ?></span>
    oder
    PHP-Code:
    <?php $news = \Contao\NewsModel::findById(\Contao\Input::get('auto_item'falsetrue)); ?>
    <span class="info"><?= $news->projekt ?></span>

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

    Standard

    Danke Spooky. Du bist mein Held :-)

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

    Standard

    Da Inhaltselemente aber überall vorkommen können, würde ich das Objekt am besten so holen:
    PHP-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->projekt ?></span>
    <?php endif; ?>

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

    Standard

    Wo gibt es eine Übersicht über die einzelnen "Models" ?
    Was hat z.B. Events? \Contao\CalendarModel; ?

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

  7. #7
    Contao-Nutzer
    Registriert seit
    30.07.2015.
    Beiträge
    140

    Standard

    funktionieren die Vorschläge nicht im Nachrichten Template? Ich bekomme unter 4.4 keine Ausgabe.

    Wie kann ich mir dort meine über ein Modul hinzugefügten Werte holen?

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

    Standard

    Was genau hast du versucht?

  9. #9
    Contao-Nutzer
    Registriert seit
    30.07.2015.
    Beiträge
    140

    Standard

    in meiner tl_news habe ich neue Felder, sehe ich auch in der DB. Allerdings kann ich im Nachrichtenleser Template mit keiner der Methoden von oben auf die Felder zugreifen.

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

    Standard

    Poste deine DCA Anpassung und dein Template.

  11. #11
    Contao-Nutzer
    Registriert seit
    30.07.2015.
    Beiträge
    140

    Standard

    Meine Anpassung in tl_news:

    PHP-Code:
    $GLOBALS['TL_DCA']['tl_news']['palettes']['__selector__'][] = "addNewsTrend";
    $GLOBALS['TL_DCA']['tl_news']['palettes']['default'] = str_replace('addImage;','addImage; {addNewsTrend_legend},addNewsTrend;',$GLOBALS['TL_DCA']['tl_news']['palettes']['default']);

    $GLOBALS['TL_DCA']['tl_news']['subpalettes']['addNewsTrend'] = "set_newstrend";

    $GLOBALS['TL_DCA']['tl_news']['fields']['addNewsTrend'] = array  
    (  
        
    'label'     => &$GLOBALS['TL_LANG']['tl_news']['addNewsTrend'],
        
    'exclude'   => true,  
        
    'inputType' => 'checkbox',  
        
    'eval'      => array('submitOnChange'=>true),
        
    'sql'       => "char(1) NOT NULL default ''"
    );

    $GLOBALS['TL_DCA']['tl_news']['fields']['set_newstrend'] = array
    (
        
    'label'     => &$GLOBALS['TL_LANG']['tl_news']['set_newstrend'],
        
    'default'   => 'none',
        
    'exclude'   => true,
        
    'inputType' => 'radioTable',
        
    'options'   => array('up''none''down'),
        
    'eval'      => array('cols'=>4'tl_class'=>'w100'),
        
    'sql'       => "varchar(12) NOT NULL default ''"
    ); 
    sehe ich auch in der DB.

    und hier das Template:

    HTML-Code:
    <div class="newsreader-full block<?= $this->class ?>" itemscope itemtype="http://schema.org/Article">
    
    <span class="info"><?= \Contao\NewsModel::findById($this->pid)->headline ?></span>
    
    
      <h1 itemprop="name"><?= $this->newsHeadline ?></h1>
      <div class="divider-v1"></div>
      
      <?php if ($this->hasSubHeadline): ?>
        <h2><?= $this->subHeadline ?></h2>
      <?php endif; ?>
      
      <?php if ($this->hasMetaFields): ?>
        <div class="info">
    	  <?php if ($this->archive): ?><span class="archive"><?php echo $this->archive->title; ?> vom </span><?php endif; ?>
    	  <?php if ($this->date): ?>
    	    <span class="date"><span class="day"><?php echo $this->parseDate("d", $this->timestamp);?></span>.<span class="month"><?php echo $this->parseDate("m", $this->timestamp);?></span>.<span class="year"><?php echo $this->parseDate("Y", $this->timestamp);?></span>
    		<span class="hour"><?php echo $this->parseDate("H", $this->timestamp);?></span>:<span class="minutes"><?php echo $this->parseDate("i", $this->timestamp);?></span> Uhr
    	  <?php endif; ?>
    	  <?php if ($this->author): ?><span class="author"><?php echo $this->author; ?></span><?php endif; ?>
    	  
    	  <?php if ($this->commentCount): ?><div class="comments"><?php echo $this->commentCount; ?></div><?php endif; ?>
    	</div>
      <?php endif; ?>
      
      <div class="img-container">
        <img src="<?php echo $this->src; ?>" <?php echo $col->imgSize; ?> alt="<?php echo $this->alt; ?>" />
      </div>
    
      <div class="content-container contents">
      <?php if ($this->hasText): ?>
        <?= $this->text ?>
      <?php else: ?>
        <div class="ce_text block">
          <?php if (!$this->addBefore): ?>
            <?= $this->teaser ?>
          <?php endif; ?>
    
          <?php if ($this->addImage): ?>
            <?php $this->insert('image', $this->arrData); ?>
          <?php endif; ?>
    
          <?php if ($this->addBefore): ?>
            <?= $this->teaser ?>
          <?php endif; ?>
        </div>
      <?php endif; ?>
    
      <?php if ($this->enclosure): ?>
        <ul class="enclosure">
          <?php foreach ($this->enclosure as $enclosure): ?>
            <li class="download-element ext-<?= $enclosure['extension'] ?>">
               <a href="<?= $enclosure['href'] ?>" title="<?= $enclosure['title'] ?>"><?= $enclosure['link'] ?> <span class="size">(<?= $enclosure['filesize'] ?>)</span></a>
            </li>
          <?php endforeach; ?>
        </ul>
      <?php endif; ?>
      </div>
    </div>
    oben habe ich ein Beispiel aus dem Thread.

    Kann ich die auch in einem individuellen Template verwenden?

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

    Standard

    Das ist ja kein Newsreader Template, sondern ein News Template. Im News Template kannst du ganz normal über $this auf die Variablen der Nachricht zugreifen.

    Hier in diesem Thread geht es um etwas anderes.

  13. #13
    Contao-Nutzer
    Registriert seit
    30.07.2015.
    Beiträge
    140

    Standard

    okay, stimmt im Template geht's wirklich mit this. Gibt es eine Möglichkeit in dem individuellen Template auf die News Variablen zuzugreifen?

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

    Standard

    Meinst du das Nachrichtenleser Modul Template? Ja - aber wie gesagt, in diesem Thread geht es eigentlich um etwas anderes. Es geht um den Zugriff auf Nachrichten Variablen in einem Template eines Inhaltselement der Nachricht.

    Im Modul Template könntest du dir das Nachrichten Objekt zB so holen:
    PHP-Code:
    <?php $news = \Contao\NewsModel::findByAlias(\Contao\Input::get('auto_item')); ?>

  15. #15
    Contao-Nutzer
    Registriert seit
    30.07.2015.
    Beiträge
    140

    Standard

    jetzt hab ich es. Danke!

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
  •