Snippets: WriteToIni schreibt keine .ini Files

Hallo zusammen,

Ich würde für ein Theme gerne die Snippet-INI´s automatisch generieren lassen. Nach meinem Verständnis sollte die Konfiguration korrekt sein, allerdings werden keine Files erzeugt - weder im _private directory des themes noch im shop-root. An den Rechten kann es nicht liegen - die sind korrekt eingestellt. Vielleicht hat jemand einen Tipp für mich.

Im Theme (File: frontend/index/index.tpl):

{s name="BrandShops" namespace="themes/ThemeName/frontend/index/index"}Brand-Shops{/s}

config.php

'snippet' => [
        'readFromDb' => false,
        'writeToDb' => false,
        'readFromIni' => true,
        'writeToIni' => true,
        'showSnippetPlaceholder' => true //introduced in Shopware 5.0.2
    ],

 

Wenn ich die Doku richtig verstehe, sollte das entsprechende Snippet .ini automatisch angelegt werden. Allerdings geschieht das nicht. Log-Einträge sind keine vorhanden und ja - der Cache ist gelöscht :slight_smile:

Hat jemand eine Idee, wo hier mein Problem liegt?

Danke Euch im voraus & LG,
Synonymous

Guten Abend,

Ich bin in diesem Punkt nun etwas weiter. Die .ini Files mit den Theme-Snippets werden generiert, landen allerdings in einem Plugin-Pfad :

/engine/Shopware/Plugins/Default/Frontend/trus1TrustedShopsBadge/Snippets

Offenbar kann der Snippet Manager beim Parsen nicht erkennen woher das Snippet kommt und legt es im zuletzt installierten Plugin ab.

Kopiere ich diese .ini Files mit den Snippet Variablen nun ins Theme in das Verzeichnis

/themes/Frontend/ThemeName/_private/snippets

werden diese vom Theme ignoriert und weiterhin die .ini Files gelesen, die im Pluginverzeichnis erzeugt wurden.

Da ich die Texte für Marketing und Übersetzer vorbereiten muss benötige ich wirklich dringed eine saubere und wiederholbare Lösung für diese Thematik. Hat jemand da draußen eine Idee, wo das Problem liegt?

Danke & liebe Grüße

Wir haben auch gegrübelt, weshalb Shopware beim eingeschalteten writeToIni das Snippet Verzeichnis unseren Plugins vollschreibt, welches wie Du richtig bemerkt hast das letzt installierte Plugin ist. Das Problem liegt wahrscheinlich in Enlight_Config_Adapter_File in der Methode getFilename oder Shopware\Components\Snippet\Manager in der Methode getConfigDirs … Letzendlich wird dann in Enlight_Config_Adapter_File $this->_configDir[0] . $this->_namePrefix . $name . $suffix ausgegeben; $this->_configDir[0] ist eben das zuletzt installierte Plugin…