Ergebnis 1 bis 5 von 5

Thema: [terminal42/contao-pageimage] PageImage in Navigationstemplate ausgeben

  1. #1
    Contao-Nutzer
    Registriert seit
    20.05.2018.
    Beiträge
    18

    Standard [terminal42/contao-pageimage] PageImage in Navigationstemplate ausgeben

    Hallo Zusammen!

    Ich stehe vor einem kleinen Problem und komme einfach nicht weiter - eventuell habe ich auch nur einen Denk-/Verständnisfehler: Ich möchte das über die terminal42/contao-pageimage-Erweiterung festgelegte Bild in einem Navigationstemplate (z.B. nav_default) ausgeben. Die dazugehörigen Daten sind schon im Template, ich bekomme sie nur nicht sinnvoll aufbereitet.

    PHP-Code:
    $item['pageImage'

    bzw.

    \
    Contao\StringUtil::deserialize($item['pageImage'])[0
    liefert z.B:

    Code:
    a:1:{i:0;s:16:"??(J?a?'>?b";} 
    
    bzw.
    
    ??(J?a?'>?b
    Ich würde das Seitenbild gerne per {{picture}}-Inserttag integrieren, weil ich dort auch noch die Bildgröße anhängen kann und direkt responsive Images mit Meta-Daten habe.

    Wie in diesem Issue beschrieben, habe ich versucht die UUID mit
    PHP-Code:
    \StringUtil::binToUuid($item['pageImage']) 

    bzw

    Contao\StringUtil::binToUuid(\StringUtil::deserialize($item['pageImage'])[0])) 
    an den Inserttag zu übergeben - allerdings ohne Erfolg.

    Im Log erscheint folgender Fehler:
    Code:
    request.CRITICAL: Uncaught PHP Exception TypeError: "implode(): Argument #2 ($array) must be of type ?array, bool given" at /vendor/contao/core-bundle/src/Resources/contao/library/Contao/StringUtil.php line 597
    Ich verwende Contao 4.13.16, pageimage 4.1.6 und PHP 8.1.13.

    Für einen Denkanstoß (oder nur einen Fingerzeig à la grundlegender Denkfehler, das ganze Serialisierung- und UUID-Thema ist für mich Neuland) wäre ich dankbar!

    Liebe Grüße
    Eric
    Geändert von ericfynn (09.03.2023 um 09:04 Uhr)

  2. #2
    Contao-Nutzer Avatar von Black Pirate
    Registriert seit
    10.02.2015.
    Beiträge
    224

    Standard

    Ich kenne zwar die Erweiterung nicht, aber für Bilder bietet sich fast immer das FilesModel an

    Code:
    $file = \FilesModel::findByUuid(…);
    echo $file->path;

    Alternativ könntest du einen Blick in die Templates der Erweiterung werfen:

    github.com/terminal42/contao-pageimage/blob/main/contao/templates/mod_pageimage.html5

  3. #3
    Contao-Nutzer
    Registriert seit
    20.05.2018.
    Beiträge
    18

    Standard

    Vielen Dank für deinen Input!

    Ich kenne zwar die Erweiterung nicht, aber für Bilder bietet sich fast immer das FilesModel an
    Das habe ich schon in Erwägung gezogen (und mir ggfs. als "Notlösung" aufgehoben), gibt auch ein bestehendes Beispiel dafür. Allerdings müsste ich mir da umständlich ein responsive Image mit Meta-Informationen draus basteln, während die Inserttag+UUID-Lösung alles automatisch handhabt.

    Alternativ könntest du einen Blick in die Templates der Erweiterung werfen:

    github.com/terminal42/contao-pageimage/blob/main/contao/templates/mod_pageimage.html5
    Das habe ich schon getestet, vermutlich aber auch mit Denkfehler:

    PHP-Code:
    <?php $this->insert('picture_default'$item['pageImage']); ?>
    Führt zu folgender Fehlermeldung:

    Code:
    Contao\Template::insert(): Argument #2 ($data) must be of type ?array, string given

  4. #4
    Contao-Nutzer Avatar von Black Pirate
    Registriert seit
    10.02.2015.
    Beiträge
    224

    Standard

    Code:
    $imagePath = FilesModel::findByUuid(deserialize($item['pageImage'])[0]);
    
    echo $this->figure($imagePath, 6);
    (6 = ID der vordefinierten Bildgrösse)
    Geändert von Black Pirate (10.03.2023 um 11:12 Uhr)

  5. #5
    Contao-Nutzer
    Registriert seit
    20.05.2018.
    Beiträge
    18

    Standard

    Zitat Zitat von Black Pirate Beitrag anzeigen
    Code:
    $imagePath = FilesModel::findByUuid(deserialize($item['pageImage'])[0]);
    
    echo $this->figure($imagePath, 6);
    (6 = ID der vordefinierten Bildgrösse)
    Wahnsinnig vielen Dank, das funktioniert genau wie gewünscht! Vielen Dank für deine Mühe!

    Noch als Ergänzung, für andere, die ggfs. eine ähnliche Lösung suchen: ich habe gem. Spooky's Sicherheits-Hinweis in einem anderen Post noch deserialize durch durch \Contao\StringUtil::deserialize ersetzt, am Ende also:

    Code:
     $imagePath = FilesModel::findByUuid(\Contao\StringUtil::deserialize($item['pageImage'])[0]);

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
  •