Ergebnis 1 bis 10 von 10

Thema: Bilder mit Webp-Konvertierung in RSCE nach Update

  1. #1
    Contao-Nutzer
    Registriert seit
    07.12.2019.
    Beiträge
    147

    Standard Bilder mit Webp-Konvertierung in RSCE nach Update

    Hallo Community,

    ich habe ein altes Contao von Version 3.2 auf Version 4.9 hochgezogen.
    Mir ist aufgefallen, dass es hier bei der Webp-Konvertierung noch ein Problem gibt, aber nur bei Rock-Solid-Custom-Elements Bildern.

    Der ursprüngliche Code ist:

    PHP-Code:
    <?php if ($box->image && ($objFile = \FilesModel::findById($box->image)) !== null): ?>
      <figure class="teaser-boxes-item-image" >
      <?php $this->insert('picture_default', \Picture::create($objFile->path$this->size)->getTemplateData()); ?>
    </figure>

    Das Problem hierbei scheint die Verwendung der \Picture::create - Funktion zu sein, da diese deprecated ist.
    Ich habe das ganze nun also mit folgendem Ansatz versucht:

    PHP-Code:
    <?php if ($box->image && ($objFile = \FilesModel::findById($box->image)) !== null): ?>
      <figure class="teaser-boxes-item-image" >
      <?php $this->insert('picture_default', \Contao\System::getContainer()->get('contao.image.image_factory')->create($objFile->path$this->size)); ?>
    </figure>
    <?php endif; ?>
    Dabei erhalte ich dann den Fehler, dass der Pfad zum Bild absolut sein muss:
    Code:
    [2021-06-01 10:25:52] request.CRITICAL: Uncaught PHP Exception InvalidArgumentException: "Image path "files/images/upload/og_img/PPP2021_web.jpg" must be absolute" at /pathToSystem/contao49/vendor/contao/core-bundle/src/Image/ImageFactory.php line 135 {"exception":"[object] (InvalidArgumentException(code: 0): Image path "files/images/upload/og_img/PPP2021_web.jpg" must be absolute at /pathToSystem/contao49/vendor/contao/core-bundle/src/Image/ImageFactory.php:135)"} []
    Meine Fragen sind:
    - Ist das so überhaupt der richtige Weg?
    - Falls ja: Wie erhalte ich am besten den absoluten Pfad?
    - Falls nein: Wie würde ich es besser machen?

    Vielen Dank bereits für eure Unterstützung.

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

    Standard

    Zitat Zitat von Fonjensi Beitrag anzeigen
    - Ist das so überhaupt der richtige Weg?
    Nein, nimm die Funktion $this->getImageObject, die in RSCE Templates zur Verfügung steht.
    PHP-Code:
    <?php if ($image $this->getImageObject($this->singleSRC, [00'_example'])): ?>
      <?php $this->insert('image', (array) $image?>
    <?php 
    endif; ?>
    » sponsor me via GitHub or PayPal or Revolut

  3. #3
    Contao-Nutzer
    Registriert seit
    07.12.2019.
    Beiträge
    147

    Standard

    Zitat Zitat von Spooky Beitrag anzeigen
    Nein, nimm die Funktion $this->getImageObject, die in RSCE Templates zur Verfügung steht.
    PHP-Code:
    <?php if ($image $this->getImageObject($this->singleSRC, [00'_example'])): ?>
      <?php $this->insert('image', (array) $image?>
    <?php 
    endif; ?>
    Okay, danke schon mal dafür.

    Ich habe mal eben gegooglet und findet leider nur unterschiedliche Angaben zu den übergebenen Parametern.

    Was ist in dem Fall [0, 0, _example]?

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

    Standard

    Das ist das Image Size Array. In meinem Beispiel würde die vorkonfigurierte Bildgröße namens example benutzt werden.
    » sponsor me via GitHub or PayPal or Revolut

  5. #5
    Contao-Nutzer
    Registriert seit
    07.12.2019.
    Beiträge
    147

    Standard

    Ich habe im Backend eine Auswahl für die Bildgröße, welche angewählt werden kann.
    Wie kann ich diese dann hier verwenden?

    Wäre über $this->size abrufbar und liefert die ID.

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

    Standard

    Zeige mal den Code deiner RSCE Config Datei.

    // edit: aber ausgehend von deinem ursprünglichen Code würde ich folgendes sagen:

    PHP-Code:
    <?php if ($image $this->getImageObject($box->image$this->size)): ?>
      <?php $this->insert('image', (array) $image?>
    <?php 
    endif; ?>
    » sponsor me via GitHub or PayPal or Revolut

  7. #7
    Contao-Nutzer
    Registriert seit
    07.12.2019.
    Beiträge
    147

    Standard

    Zitat Zitat von Spooky Beitrag anzeigen
    Zeige mal den Code deiner RSCE Config Datei.

    // edit: aber ausgehend von deinem ursprünglichen Code würde ich folgendes sagen:

    PHP-Code:
     <?php if ($image $this->getImageObject($box->image$this->size)): ?>
      <?php $this->insert('image', (array) $image?>
    <?php 
    endif; ?>
    PHP-Code:
    return array(
        
    'label' => array(
            
    'Boxen',
            
    'Erzeugt nebeneinander dargestellte Boxen mit Bild und Text',
        ),
        
    'types' => array('content'),
        
    'standardFields' => array('cssID''headline'),
        
    'fields' => array(
            
    'size' => array(
                
    'label' => array('Bildbreite und Bildhöhe'''),
                
    'inputType' => 'imageSize',
                
    #'options' => $GLOBALS['TL_CROP'],
                
    'options' => \System::getImageSizes(),
                
    'reference' => &$GLOBALS['TL_LANG']['MSC'],
                
    'eval' => array('rgxp' => 'digit'),
            ),
            
    'linkespalte' => array(
                
    'label' => array('Linke Spalte'''),
                
    'elementLabel' => 'Element %s',
                
    'inputType' => 'list',
                
    'fields' => array(
                    
    'image' => array(
                        
    'label' => array('Bild'''),
                        
    'inputType' => 'fileTree',
                        
    'eval' => array(
                            
    'fieldType' => 'radio',
                            
    'filesOnly' => true,
                            
    'extensions' => 'jpg,jpeg,png,gif,svg',
                        ),
                    ), 

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

    Standard

    Statt
    PHP-Code:
            'size' => array(
                
    'label' => array('Bildbreite und Bildhöhe'''),
                
    'inputType' => 'imageSize',
                
    #'options' => $GLOBALS['TL_CROP'],
                
    'options' => \System::getImageSizes(),
                
    'reference' => &$GLOBALS['TL_LANG']['MSC'],
                
    'eval' => array('rgxp' => 'digit'),
            ), 
    solltest du einfach
    PHP-Code:
            'size' => [
                
    'inputType' => 'standardField',
            ], 
    schreiben
    » sponsor me via GitHub or PayPal or Revolut

  9. #9
    Contao-Nutzer
    Registriert seit
    07.12.2019.
    Beiträge
    147

    Standard

    Zitat Zitat von Spooky Beitrag anzeigen
    Statt
    PHP-Code:
            'size' => array(
                
    'label' => array('Bildbreite und Bildhöhe'''),
                
    'inputType' => 'imageSize',
                
    #'options' => $GLOBALS['TL_CROP'],
                
    'options' => \System::getImageSizes(),
                
    'reference' => &$GLOBALS['TL_LANG']['MSC'],
                
    'eval' => array('rgxp' => 'digit'),
            ), 
    solltest du einfach
    PHP-Code:
            'size' => [
                
    'inputType' => 'standardField',
            ], 
    schreiben
    Okay, habe es nun mit deiner Hilfe hinbekommen -> Danke, wie immer

    Aber wieso sollte ich einfach standardField schreiben? Das verstehe ich nicht ganz.

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

    Standard

    Mit standardField wird einfach die bereits existierende Definition aus (in diesem Fall) tl_content für das jeweilige Feld genommen. Du musst das nicht nochmals selbst definieren - und deine aktuelle Definition würde außerdem auch gar nicht alle Möglichkeiten abdecken.
    » sponsor me via GitHub or PayPal or Revolut

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
  •