Shopware Media URL Ausgabe

by Sarah Kroll

Möchte man in Shopware 5 ein Media Freitextfeld ausgeben, bekommt man lediglich eine ID zurück - Die Media ID. Die Frage welche sich viele stellen: Wie kommt man nun an das eigentliche Image?

Hierzu führen wie immer mehrere Wege nach Rom. Wir bei Shape & Shift nutzen hierfür ein kleines Smarty Plugin.

In Shopware finden wir in der Dokumentation den Weg, wie wir ein Smarty Plugin in Shopware 5 verwenden.

Smarty Plugin

Der Pfad zum Smarty Plugin ist themes/Frontend/ThemeName/_private/smarty/. In diesem Ordner werden alle Smarty Plugins abgelegt.

In unseren Fall nennen wir unser Plugin mediaurl - Der komplette Dateiname wäre demnach smarty_modifier_mediaurl.php.

In unserem Plugin greifen wir die Media ID ab, holen uns das Image über das Media Repository und geben dann den entsprechenden Bildpfad aus.

themes/Frontend/ThemeName/_private/smarty/smarty_modifier_mediaurl.php

<?php
function smarty_modifier_mediaurl($value, $format = array())
{

    if (is_numeric($value)) {
        $id = (int)$value;
        $media = Shopware()->Models()->getRepository('Shopware\Models\Media\Media')->findOneBy(['id' => $id]);
        if ($media) {
            $path = $media->getPath();

            $mediaUrl = Shopware()->Container()->get('shopware_media.media_service')->getUrl($path);

            return $mediaUrl;
        }
    }

}

Ausgabe im Theme

In unserem Theme können wir nun diesen modifier als Filter aufrufen. Als Beispiel:

{$sArticle.myCustomImage|mediaurl}

myCustomImage wäre in diesem Falle das Media Freitextfeld. Et voila: Nun haben wir den vollen Image Pfad als Ausgabe in unserem Theme.

Want your own shop?
SCHEDULE A CALL WITH US