[gelöst] Plugin übersetzen: Snippets im Code vorgeben

Hallo zusammen, wie kann ich die Übersetzung der Snippets vorgeben, so dass sie nicht bei jeder Neuinstallation über das Backend neu eingegeben werden müssen? Kann hierzu keine Infos finden. Basti

Du kannst dir mit den folgenden Zeilen die entsprechende Locale-ID holen: $repository = Shopware()-\>Models()-\>getRepository('Shopware\Models\Shop\Locale'); $en = array\_shift($repository-\>findBy(array('locale' =\> 'en\_GB'))); $en = $en-\>getId(); Danach kannst du mit dem folgenden Befehl ein Snippet in der Datenbank registrieren: Shopware()-\>Db()-\>query( "INSERT IGNORE INTO s\_core\_snippets SET namespace = 'frontend/plugins/deinPluginNameSpace', shopID = 'dieShopId', localeID = '$en', name = 'meinPluginSnippet', value = 'Hier kommt der Snippet Text hin.'" ); Du kannst selbstverständlich (durch Änderung des SQL-Befehls) auch direkt mehrere Snippets eintragen lassen. Diese Befehle kannst du direkt in der Install-Routine deines Plugins ausführen, sodass du dort auch noch neue Snippets registrieren könntest, die nach einem Update dazu kommen. Ich hoffe das hilft dir weiter. Marius

Hallo Marius, habe deine Antwort gerade erst entdeckt, hatte das Thema nicht abonniert. Danke für deine Antwort. :slight_smile: Wie schaffst du es, dass der Namespace ‚frontend/plugins/deinPluginNameSpace‘ lautet. Bei mir heißen die alle engine/Shopware/Plugins/Community/Frontend/SwagMail/Views/frontend/namespace Wenn man das Plugin nun in Plugins/Local/Frontend statt Plugins/Community/Frontend installiert, funktioniert das so nicht mehr.

Hallo Basti, ich habe mich bei der Vergabe des Namespace an den bestehenden Templates orientiert und diesen dann fest reingeschrieben. protected $namespace = 'frontend/plugins/<plugin_name>/<bereichsname>';
Der Bereichsname war bei mir z.B. ‘listing’, da meine Snippets im Listing-Template verwendet werden. Im Backend unter ‘Textbausteine’ erscheinen meine Snippets dann auch an passender Stelle im Baum.

Ich habe mal in die Tabelle s_core_snippets geschaut und festgestellt, dass tatsächlich einige Snippets mit ‘engine/Shopware/Plugins/…’ beginnen. Könnte es sein, dass dies ein Überbleibsel aus SW3.5 ist? Möglicherweise ist dies auch der Fall, wenn die Snippets automatisch (durch Verwendung im Template ohne vorherige Deklaration) registriert werden.

Ich hoffe das hilft dir weiter.

Marius</plugin_name>

1 „Gefällt mir“

[quote=„akeon_shop“]Hallo Basti, ich habe mich bei der Vergabe des Namespace an den bestehenden Templates orientiert und diesen dann fest reingeschrieben. protected $namespace = 'frontend/plugins/<plugin_name>/<bereichsname>';
Der Bereichsname war bei mir z.B. ‚listing‘, da meine Snippets im Listing-Template verwendet werden. Im Backend unter ‚Textbausteine‘ erscheinen meine Snippets dann auch an passender Stelle im Baum.
[/quote]

Ich habe den Namespace jetzt folgendermaßen in jeder .tpl angegeben:

//{namespace name=frontend/pugins/pluginname}

Wofür macht es Sinn den Namespace noch in den PHP Dateien zu definieren?

Ja, richtig. Ich hatte keinen Namespace angegeben, dann wurden die Snippets nach dem Pfad des Speicherorts meines Plugins benannt.</plugin_name>