Custom Smarty Modifier für Plugins verfügbar machen

Hallo Zusammen,

ich sitze gerade an einem Projekt dei dem ich eine Bildausgabe im Frontend durch Freitextfelder benötige. Durch einige Suchen bin ich auf div. Lösungen gekommen.

pluginname->_private->smarty->modifier.mediaurl.php

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;
        }
    }
}

Dadurch die Entwicklung innerhalb eines Plugins und nicht in einem Theme erfolgt, wird der Modifier leider nicht direkt erkannt. Also habe ich weiter gesucht und eine Möglichkeit der Registrierung in den Docs gefunden. mainplugin.php:

public function build(ContainerBuilder $container)
    {
        parent::build($container);
        $container->addCompilerPass(new AddTemplatePluginDirCompilerPass());
    }

Diese zeigt auf Plugin->Components->CompilerPass->AddTemplatePluginDirCompilerPass.php:

getDefinition('template');
        $template->addMethodCall('addPluginsDir', ['pluginname/_private/smarty']);
    }
}

Leider kann ich in Smarty weiterhin nicht auf den modifier {$sCategoryContent.attr|mediaurl} zugreifen. Wie kann ich Shopware nun diesen Modifier korrekt beibringen?

Hallo,

wo soll denn das Bild genau ausgegeben werden?

Im Artikel?

Wenn du sowieso ein Plugin gebaut hast würde ich eher an ein dementsprechendes Event hängen und das Bild dort an das Template übergeben.

Grüße Lukaschel

Das Bild soll im Kategoriemenü über ein Freitextfeld definiert werden und dann im Frontend (z.B: Listing) ausgegeben werden. Da die entsprechenden Freitextfelder aber nur eine ID und keinen Pfad ausgeben muss ich eine entsprechende Interpretation erreichen. In einigen Beiträgen stand, dass dies am besten über einen SmartyModifier zu erreichen ist. 

https://forum.shopware.com/discussion/comment/199709/#Comment_199709

Die entsprechende Einbindung soll angeblich so funktionieren:

https://developers.shopware.com/designers-guide/smarty/#register-custom-smarty-plugins-in-a-shopware-plugin 

Bei deiner Idee müsste es ein Frontend Event sein und eine Methode die die Funktion des SmartyModifier mit einer Datenbankabfrage kombiniert und alles in eine neues Attribut bereitstellt oder?