Contao-Camp 2024
Ergebnis 1 bis 8 von 8

Thema: Template Bild mit Image::get und einer Bildgrössen Id ausgeben

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

    Standard Template Bild mit Image::get und einer Bildgrössen Id ausgeben

    Hallo liebe Community,

    in einem Template habe ich ein Bild über folgenden Code eingebunden:
    PHP-Code:
    <img src="<?php echo Image::get($this->produktbilder[0][0]->src3000'proportional'); ?>" loading="lazy" itemprop="image">
    Nun würde ich gerne das Bescheiden des Bildes über die Contao Bildgrössen Funktion lösen und vielleicht auch ins WEBP Format konvertieren lassen.
    Kann mir jemand einen Tipp geben?

    LG
    Dirk

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

    Standard

    Dazu eignet sich Image::get nicht wirklich. Weil wenn du nach WebP konvertierst, willst du ja automatisch das komplette Markup mit <figure> und <picture> haben. Du solltest daher zumindest Controller::addImageToTemplate oder das Image Studio verwenden: https://docs.contao.org/dev/framework/image-processing/
    » sponsor me via GitHub or PayPal or Revolut

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

    Standard

    Hi Spooky,

    ich nutze noch Contao 4.9, also kann ich das Image Studio noch nicht nutzen.
    Folgendes habe ich nun versucht um die Bildgrössen der ID 5 einzubinden:
    PHP-Code:
            $picture = \Picture::create($this->produktbilder[0][0]->src5)->getTemplateData();
            
    $this->insert('picture_default'$picture); 
    Das <picture> Element mit den alternativen Bildgrössen wird auch richtig ausgegeben. Allerdings ohne webp.
    Über das Bild Inhaltselement funktioniert die webp Ausgabe richtig. Nur in meinem angepassten Template nicht. Hast Du eine Idee?

    LG
    Dirk

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

    Standard

    Ich würde Controller::addImageToTemplate benutzen: https://docs.contao.org/dev/framewor...essing/legacy/
    » sponsor me via GitHub or PayPal or Revolut

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

    Standard

    Ok, ich komme der Sache schon etwas näher.
    PHP-Code:
        if (null !== ($objFile = \FilesModel::findByPath($this->produktbilder[0][0]->src)))
            {
                
    $objImageTemplate = new stdClass();
                \
    Controller::addImageToTemplate($objImageTemplate, [
                  
    'singleSRC' => $objFile->path,
                  
    'size' => [nullnull'5'],
                  
    'floatClass' => $productclass,
                ], \
    Config::get('maxImageWidth'), null$objFile);
                
    $this->insert('image', (array) $objImageTemplate);
            } 
    2 Probleme habe ich noch:
    Wenn mehr als 1 Produktbild definiert wurde, wird kein Bild ausgegeben. Normalerweise sollte er sich doch mit $this->produktbilder[0][0]->src immer das erste Bild ziehen?
    Mit 'floatClass' => $productclass würde ich den <figure> gerne eine Klasse mitgeben, doch das scheint nicht zu funktionieren :-/

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

    Standard

    Das Problem mit dem Bild habe ich lösen können: $this->produktbilder[0][0]->singleSRC
    Fehlt nur noch das Setzen einer eigenen CSS Klasse mit 'floatClass'. Das kriege ich nicht hin :-(

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

    Standard

    Versuche es mal so:
    PHP-Code:
                $objImageTemplate = new stdClass();
                \
    Controller::addImageToTemplate($objImageTemplate, [
                  
    'singleSRC' => $objFile->path,
                  
    'size' => [nullnull'5'],
                ], \
    Config::get('maxImageWidth'), null$objFile);

                
    $objImageTemplate->floatClass ' productClass';

                
    $this->insert('image', (array) $objImageTemplate); 
    » sponsor me via GitHub or PayPal or Revolut

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

    Standard

    Yeah!!!
    Danke Spooky. Du hast den Tag gerettet :-)

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
  •