Ergebnis 1 bis 13 von 13

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
    655

    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
    37.160
    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 Revolut

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

    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
    37.160
    Partner-ID
    10107

    Standard

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

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

    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
    655

    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
    37.160
    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 Revolut

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

    Standard

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

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

    Standard

    @quenn das ist mittlerweile überholt . Besser:
    PHP-Code:
    <?= $this->figure($objFile5, ['options' => ['floatClass' => ' productClass']]) ?>
    » sponsor me via GitHub or Revolut

  10. #10
    Contao-Nutzer Avatar von quenn
    Registriert seit
    28.03.2013.
    Ort
    Köln
    Beiträge
    146

    Standard

    glaube das war der falsche thread @spooky

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

    Standard

    Zitat Zitat von quenn Beitrag anzeigen
    glaube das war der falsche thread @spooky
    In wie fern?
    » sponsor me via GitHub or Revolut

  12. #12
    Contao-Nutzer Avatar von quenn
    Registriert seit
    28.03.2013.
    Ort
    Köln
    Beiträge
    146

    Standard

    checke jetzt erst, dass du auf meinen like reagiert hast – alles klar, danke

  13. #13
    Contao-Nutzer
    Registriert seit
    12.05.2015.
    Beiträge
    99

    Standard

    Hallo zusammen

    Gibt es vielleicht eine Möglichkeit, die Bildgrösse via ID auch einem Hintergrundbild mitzugeben?
    Vielleicht via data-image-url?
    Es geht um das template event_full.
    Im Moment wird es so ausgegeben:
    HTML-Code:
    <div class="centered-wrapper-background" style="background-image: url('<?php echo $this->src ?>')"></div>
    Ich weiss, das ist etwas off topic aber ich finde keinen passenderen Eintrag..

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •