Snippets in INI-Datei bei 5.2 Plug-in

Cheerio,

hat es jemand schon hinbekommen, für Plug-ins nach dem neuen 5.2-Schema (in custom/plugins abgelegt), mit INI-Dateien für die Übersetzung zu arbeiten? Ich scheitere momentan kläglich.

Meine Plug-in-Datei sieht momentan so aus:

 'onPostDispatchFrontend'
        ];
    }
    
    /**
     * Checks for a valid user on every request and presents a login screen.
     *
     * @param Enlight_Event_EventArgs $args 
     * @return void
     * @author Matthias Wehrlein
     */
    public function onPosDispatchFrontend(\Enlight_Event_EventArgs $args)
    {
        $admin = Shopware()->Modules()->Admin();
        
        if ($admin->sCheckUser()) {
            return;
        }
        
        $controller = $args->getSubject();
        $request = $controller->Request();
        $view = $controller->View();
        $response = $controller->Response();
        
        Shopware()->Snippets()->addConfigDir($this->getPath() . '/Resources/Snippets/');
        
        $view->addTemplateDir($this->getPath() . '/Resources/Views/');
        $view->extendsTemplate('frontend/plugins/sumo_login_screen/login.tpl');
    }
}

Die INI-Datei mit den Übersetzungen liegt in Resources/Snippets/frontend/plugins/sumo_login_screen/login.ini und sieht folgendermaßen aus:

[en_GB]
Login = "Login"
Test = "TEST en_GB 1.1"

[de_DE]
Login = "Anmelden"
Test = "TEST de_DE 1.2"

login.tpl (abgespeckt):

{block name='frontend_index_page_wrap'}
    
        
            {s name="Test"}{/s}
        
        
            {s name="Test" namespace="frontend/plugins/sumo_login_screen/login"}{/s}
        
    
{/block}

Die Snippets werden nach dem Rendern im Textbausteine-Modul registriert, allerdings ohne Wert, und natürlich ist im Frontend auch nichts zu sehen. Das Template wird allerdings korrekt gerendert.

Ich hatte auch schon versucht, den Snippets-Ordner eine Ordnerebene höher zu ziehen, führte aber ebenfalls zu nichts. Ich habe das Gefühl, dass die INI-Datei schlichtweg ignoriert wird und dass das damit zusammenhängt, dass ich mit der 5.2-Struktur fahre. Etwas stöbern im Shopware-Code scheint das auch halb zu bestätigen; stecke allerdings nicht tief genug in der Snippets-Materie, um das zu 100% zu bestätigen.

Ich habe mir alle möglichen Plug-ins angeschaut, die Shopware momentan ausliefert, insbesondere die 5.2-Beispiele, die man auf der entsprechenden Developer-Doku finden kann, aber die zeigen alle nicht den benötigen Beispielcode oder sind fehlerhaft.

Mache ich eventuell etwas grundlegendes falsch?

Lautet der Pfad zu den Snippets wirklich Resources/Snippets/frontend/plugins/sumo_login_screen/login.ini?

In dem Fall könnte es an den großgeschriebenen Snippets liegen. Soweit ich das im Code sehe wird dort nur in Resources/snippets nachgesehen.

1 „Gefällt mir“

@supermonster schrieb:

Shopware()->Snippets()->addConfigDir($this->getPath() . '/Resources/Snippets/');

 

 Das mache ich gar nicht. Es muss der Ordner allerdings „snippets“ heißen, also klein geschrieben. 

{s name="Test" namespace="frontend/plugins/nexmart_login/login"}{/s}

Namesprace müsste m. E. dann bei Dir sein:  "frontend/plugins/sumo_login_screen/login"

@hhmarco73 schrieb:

@supermonster schrieb:

Shopware()->Snippets()->addConfigDir($this->getPath() . '/Resources/Snippets/');

 

 Das mache ich gar nicht. Es muss der Ordner allerdings „snippets“ heißen, also klein geschrieben. 

{s name="Test" namespace="frontend/plugins/nexmart_login/login"}{/s}

Namesprace müsste m. E. dann bei Dir sein:  "frontend/plugins/sumo_login_screen/login"

Mein Fehler, war falsch kopiert. Die Pfade stimmen tatsächlich.

@hsoebbing schrieb:

Lautet der Pfad zu den Snippets wirklich Resources/Snippets/frontend/plugins/sumo_login_screen/login.ini?

In dem Fall könnte es an den großgeschriebenen Snippets liegen. Soweit ich das im Code sehe wird dort nur in Resources/snippets nachgesehen.

Pfade stimmen. Hatte noch einen kleinen Vertipper im Ausgangspost, ist aber korrigiert.

Und wenn es tatsächlich an der Großschreibung liegt, wozu ist dann überhaupt Shopware()->Snippets()->addConfigDir($this->getPath() . ‚/Resources/Snippets/‘); gut? Ich werd’s gleich mal ausprobieren.

@hsoebbing schrieb:

In dem Fall könnte es an den großgeschriebenen Snippets liegen. Soweit ich das im Code sehe wird dort nur in Resources/snippets nachgesehen.

Und das war es dann tatsächlich. addConfigDir ist in diesem Fall dann auch überflüssig. Danke!