Contao-Camp 2024
Ergebnis 1 bis 12 von 12

Thema: Artikel Teaser Bild

  1. #1
    Contao-Fan Avatar von Nikolas
    Registriert seit
    22.08.2009.
    Ort
    Lehe
    Beiträge
    493
    User beschenken
    Wunschliste

    Frage Artikel Teaser Bild

    Kennt irgendjemand bereits eine Möglichkeit einem Artikelteaser ein Bild mitzugeben und dieses dann z.B. auch in der Artikelauflistung mitsamt Teaser auszugeben?
    Für Contao 3.x gab es ja teaserimages, das wird aber scheinbar nicht mehr weiter entwickelt.

    Vielleicht hat da ja jemand bereits was in der Schublade liegen...

  2. #2
    Community-Moderator & Contao-Urgestein Avatar von derRenner
    Registriert seit
    23.10.2012.
    Ort
    hoRn|waldviertel
    Beiträge
    2.849
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Hallo,

    schau dir mal die news/Nachrichten an, hier findest du was du brauchst. Anstatt der Artikel kannst du ja auch die Nachrichten einbinden
    Grüsse
    Bernhard


  3. #3
    Contao-Fan Avatar von Nikolas
    Registriert seit
    22.08.2009.
    Ort
    Lehe
    Beiträge
    493
    User beschenken
    Wunschliste

    Standard

    Eigentlich wollte ich ja schon gerne die Artikel nutzen. Dass das Artikel Modul quasi komplett durch die Nachrichten zu ersetzen wäre hab ich so auch noch nicht bedacht. Das müsste ich mal abwägen. Wäre ja unter Umständen eine echte Alternative.

    Falls dennoch jemand eine weitere Idee zu der ursprünglichen Frage hat, gerne her damit.

  4. #4
    Contao-Urgestein Avatar von Andreas
    Registriert seit
    19.06.2009.
    Ort
    Mönchengladbach
    Beiträge
    7.703
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Ich würde als erstes CE ein Inhaltselement vom Typ Bild einfügen. Nicht veröffentlichen. Dieses CE würde ich mir im Teasertemplate dann holen. Wahrscheinlich so in etwa (untested)
    PHP-Code:
    <?php

    $idOfFirstContentElementOfThisArticle 
    = \ContentModel::findOneByPid($this->id)->id// falls $this->id hier die ID des Artikels ist

    echo \Controller::getContentElement($idOfFirstContentElementOfThisArticle);
    Bitte!
    Vor Anfragen im Forum HTML validieren.
    Codesnippets hier im Froum sauber einrücken. Nur Tabs o. nur Leerzeichen verwenden.

    Vielen Dank an alle Wunschlistenerfüller
    Andreas Burg, Web Solutions

  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

    Zitat Zitat von Nikolas Beitrag anzeigen
    Kennt irgendjemand bereits eine Möglichkeit einem Artikelteaser ein Bild mitzugeben und dieses dann z.B. auch in der Artikelauflistung mitsamt Teaser auszugeben?
    Einerseits musst du dafür einfach nur das DCA entsprechend erweitern und andererseits dann das Bild im entsprechenden Template entsprechend ausgeben. Ist prinzipiell nicht besonders aufwendig.

  6. #6
    Contao-Fan Avatar von mdoll
    Registriert seit
    25.06.2009.
    Ort
    Wietze
    Beiträge
    334

    Standard

    Hi,

    ich benötige genau diese Möglichkeit, dem Inhaltselement Artikelteaser ein Bild hinzuzufügen.

    Zitat Zitat von Spooky Beitrag anzeigen
    Einerseits musst du dafür einfach nur das DCA entsprechend erweitern und andererseits dann das Bild im entsprechenden Template entsprechend ausgeben. Ist prinzipiell nicht besonders aufwendig.
    Wie müsste eine entsprechende DCA-Erweiterung denn aussehen? Leider bin auf dem Feld so gar nicht bewandert.

    Danke und Gruß
    Mathias
    “Ah," said Mr Pin. "Right. I remember. You are concerned citizens." He knew about concerned citizens. Wherever they were, they all spoke the same private language, where 'traditional values' meant 'hang someone'.”
    ― Terry Pratchett, The Truth

  7. #7
    Contao-Fan Avatar von mdoll
    Registriert seit
    25.06.2009.
    Ort
    Wietze
    Beiträge
    334

    Standard

    Hi,

    ok. Den ersten Schritt habe ich hinbekommen. Ich kann jetzt ein Bild beim Artikelteaser hinterlegen. Contaoversion ist übrigens 4.9.5.

    Dafür habe ich unter app/Resources/contao/dca ein tl_article.php hinterlegt. Dann den Cache erneuert und das Installtool aufgerufen.

    PHP-Code:
    // Anpassung der Palette
    $GLOBALS['TL_DCA']['tl_article']['palettes']['default'] = str_replace
    (
        
    'teaser;',
        
    'teaser,addImage;',
        
    $GLOBALS['TL_DCA']['tl_article']['palettes']['default']
    );

    // Subpalette
    $GLOBALS['TL_DCA']['tl_article']['subpalettes']['addImage'] = 'singleSRC,size,floating,imagemargin,fullsize';

    // Selektor
    $GLOBALS['TL_DCA']['tl_article']['palettes']['__selector__'][] = 'addImage';

    // Hinzufügen der Feld-Konfigurationen
    array_insert($GLOBALS['TL_DCA']['tl_article']['fields'], 1, array
    (
        
    'addImage' => array
            (
               
    'exclude'                 => true,
               
    'inputType'               => 'checkbox',
               
    'eval'                    => array('submitOnChange'=>true),
               
    'sql'                     => "char(1) NOT NULL default ''"
            
    ),
        
    'singleSRC' => array
           (
               
    'exclude'                 => true,
               
    'inputType'               => 'fileTree',
               
    'eval'                    => array('fieldType'=>'radio''filesOnly'=>true'extensions'=>Config::get('validImageTypes'), 'mandatory'=>true),                                  
               
    'sql'                     => "binary(16) NULL",
            ),
        
    'size' => array
           (
               
    'exclude'                 => true,
               
    'inputType'               => 'imageSize',
               
    'reference'               => &$GLOBALS['TL_LANG']['MSC'],
               
    'eval'                    => array('rgxp'=>'natural''includeBlankOption'=>true'nospace'=>true'helpwizard'=>true'tl_class'=>'w50'),
               
    'options_callback' => static function ()
                    {
                        return 
    System::getContainer()->get('contao.image.image_sizes')->getOptionsForUser(BackendUser::getInstance());
                    },
               
    'sql'                     => "varchar(255) NOT NULL default ''"
            
    ),
        
    'floating' => array
            (
               
    'exclude'                 => true,
               
    'inputType'               => 'radioTable',
               
    'options'                 => array('above''left''right''below'),
               
    'eval'                    => array('cols'=>4'tl_class'=>'w50'),
               
    'reference'               => &$GLOBALS['TL_LANG']['MSC'],
               
    'sql'                     => "varchar(32) NOT NULL default 'above'"
            
    ),    
        
    'imagemargin' => array
            (
               
    'exclude'                 => true,
               
    'inputType'               => 'trbl',
               
    'options'                 => $GLOBALS['TL_CSS_UNITS'],
               
    'eval'                    => array('includeBlankOption'=>true'tl_class'=>'w50'),
               
    'sql'                     => "varchar(128) NOT NULL default ''"
            
    ),

        
    'fullsize' => array
            (
               
    'exclude'                 => true,
               
    'inputType'               => 'checkbox',
               
    'eval'                    => array('tl_class'=>'w50 m12'),
               
    'sql'                     => "char(1) NOT NULL default ''"
            
    ),
        

    )); 
    2 Fragen:

    1. Wie bekomme ich das Bild jetzt ins Frontend, sprich, was muss ich im Template angeben, damit das Bild dargestellt wird.
    2. Ist der Code so sauber? Ich hab mir das mit Doku, dem Quellcode der teaserimage-Erweiterung für Contao 3 und dem Code auf github für Contao 4 zusammenkopiert.


    Danke und Gruß
    Mathias
    “Ah," said Mr Pin. "Right. I remember. You are concerned citizens." He knew about concerned citizens. Wherever they were, they all spoke the same private language, where 'traditional values' meant 'hang someone'.”
    ― Terry Pratchett, The Truth

  8. #8
    Contao-Urgestein Avatar von Andreas
    Registriert seit
    19.06.2009.
    Ort
    Mönchengladbach
    Beiträge
    7.703
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Bei Contao 4.9 heißt der Ordner my_installation/contao/dca

    Vorsicht beim Abgucken von Contao 3.

    Die Variablen eines Templates kannst du so ausgeben (Code kommt ins Template)
    PHP-Code:
    <?php 
    /** DEBUG */
    $objUser BackendUser::getInstance();
    if(
    $objUser->isAdmin)
    {
      
    $this->dumpTemplateVars();
      
    // or for a single variable
      
    dump($myVar);
    }
    /** */
    ?>
    Im Code habe ich noch ne kleine Prüfung vorgeschaltet ob ein Admin im BE eingeloggt ist. Bin mir nicht sicher, ob das nötig ist. Kannst auch den Debug-Modus dazu im BE einschalten, dann hast du unten in der Symfoni-Leiste einen Punkt, der dir bei MouseOver bereits die Variablen anzeigt und kannst bei Klick darauf auch ne neue Seite aufrufen.

    Damit das HTML-Rendering für das Bild auch den anderen Bildausgaben von Contao entspricht kannst du dir ein Template anschauen, welches auch Bilder ausgibt.

    Durch entfernen eines einzigen Slashes kannst du diesen Debug-Block deaktivieren.
    PHP-Code:
    <?php 
    /** DEBUG *
    $objUser = BackendUser::getInstance();
    if($objUser->isAdmin)
    {
      $this->dumpTemplateVars();
      // or for a single variable
      dump($myVar);
    }
    /** */
    ?>
    Bitte!
    Vor Anfragen im Forum HTML validieren.
    Codesnippets hier im Froum sauber einrücken. Nur Tabs o. nur Leerzeichen verwenden.

    Vielen Dank an alle Wunschlistenerfüller
    Andreas Burg, Web Solutions

  9. #9
    Contao-Nutzer
    Registriert seit
    17.06.2011.
    Beiträge
    52

    Standard

    Moin zusammen,

    wir haben eine 3-5 Installation auf eine 4-9 geupgradet.

    In der alten Version wurde die Erweiterung teaserimages verwendet.

    Daher haben wir den zuvor beschriebenen Weg umgesetzt, allerdings wird das Bild nicht ausgegeben.

    Im Backend kann ich das Bild auswählen. Das entsprechende Datenbankfeld ist auch gefüllt, nur die Templatevariable vom ce_teaser behauptet singleSRC wäre NULL.
    Siehe Screenshot.

    Einen Link kann ich leider nicht schicken, da die Installation aktuell noch lokal ist.

    Hat jemand evtl. einen Lösungsansatz?
    Angehängte Grafiken Angehängte Grafiken

  10. #10
    Contao-Nutzer
    Registriert seit
    17.06.2011.
    Beiträge
    52

    Standard

    Danke, hat sich erledigt.

    Das Feld singleSRC des Artikelteasers ist natürlich leer. Wenn man das Inhaltselement ContentTeaser anpasst und singleSRC vom entsprechenden Artikel nimmt funktioniert alles super. Beim ContentImage kann man sich dann abschauen wie man aus dem hash den Dateipfad bekommt.

    Beste Grüße
    Steffi

  11. #11
    Contao-Nutzer Avatar von dive
    Registriert seit
    17.04.2010.
    Ort
    Österreich
    Beiträge
    48

    Standard

    Hallo,

    könntest du ev. posten, wie du das im template damals gelöst hast. Ich habe genau die gleiche Anforderung, komme aber nicht drauf, wie ich das singleSCR im template der Artikelliste ausgeben kann.

    Danke,
    Dieter

  12. #12
    Contao-Nutzer
    Registriert seit
    13.03.2019.
    Beiträge
    40

    Standard

    Falls es hilft, so habe ich in meinen Contaos ein Artikelteaserbild eingebaut:
    Code:
    DCA:
    
    // Article navigation: show thumbnail
    $GLOBALS['TL_DCA']['tl_article']['fields']['digenio_articlethumbnail_question'] = [
        'label' => &$GLOBALS['TL_LANG']['tl_article']['digenio_theme']['digenio_articlethumbnail_question'],
        'exclude' => true,
        'inputType' => 'checkbox',
        'eval' => ['submitOnChange' => true],
        'sql' => "char(1) NOT NULL default ''"
    ];
    
    $GLOBALS['TL_DCA']['tl_article']['fields']['digenio_articlethumbnail_file'] = [
        'label' => &$GLOBALS['TL_LANG']['tl_article']['digenio_theme']['digenio_articlethumbnail_file'],
        'exclude' => true,
        'inputType' => 'fileTree',
        'eval' => [
            'files' => true,
            'filesOnly' => true,
            'extensions' => $GLOBALS['TL_CONFIG']['validImageTypes'],
            'fieldType' => 'radio',
            'mandatory' => false,
            'tl_class' => 'clr w50'
        ],
        'save_callback' => array
        (
            array('tl_product_palette', 'saveFile')
        ),
        'load_callback' => array
        (
            array('tl_product_palette', 'loadFile')
        ),
        'sql' => "blob NULL default ''"
        ];
    
    class tl_product_palette extends \Contao\Backend
    {
        public $strName = 'tl_product_palette';
    
        public function saveFile($value)
        {
            $uuid = StringUtil::binToUuid($value);
            $objFile = FilesModel::findByUuid($uuid);
            $value = $objFile->path;
            return $value;
        }
    
        public function loadFile($value)
        {
            $objFile = FilesModel::findByPath($value);
            $value = $objFile->uuid;
            // $value->uuid = $objFile;
            return $value;
        }
    
    }
    
    Felder per Palettenmanipulator natürlich noch eintragen...
    
    TEMPLATE für Module "Auflistung" (list_default_xxx):
    
    <img src="<?php if ($row['digenio_pagethumbnail_question']['content']=='1' && $row['digenio_pagethumbnail_file']['content']){
                                print $row['digenio_pagethumbnail_file']['content'];
                                  }
                                 else {
                                 print '..\files\digenio-theme\theme\img\icons_home\icon-default.svg';
                                 }
                               ?>" />
    Wahrscheinlich nicht hübsch, aber funktioniert.

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
  •