Frage zu einem der Plugin Tutorials

Frage: An welcher Stelle muss das neue Template dir eingebunden werden? [quote]$view->loadTemplate(‚frontend/swag_availability_check/get_availability.tpl‘);[/quote] [quote]Damit diese Informationen auch im Frontend angezeigt werden, müssen wir natürlich auch ein Template laden. Da in dem Plugin die Shopware-Ordnerstruktur vom Template eingehalten wurde, was bedeutet, dass wir unter SwagAvailabilityCheck/Views/widgets/swag_availability_check/ ein Template mit genau dem Namen der angesprochenen Controller Action angelegt haben (get_availability.tpl). Dieses Template wird automatisch vom Controller geladen. Sollte sich das Template an einem anderen Ort befinden, der nicht der Standard Shopware Struktur entspricht, könnte das Template wie folgt geladen werden: $view->loadTemplate(‚frontend/swag_availability_check/get_availability.tpl‘);[/quote] Will ansich einen eigenen Namespace für die Widgets nutzen, neben dem Anpassen der Bootstrap und der Ordnerstruktur sollte es an dem Punkt noch Haken denke ich, nur mit den beiden Änderungen versucht er weiterhin auf den alten Pfad zuzugreifen… :confused:

Hi, grundsätzlich musst du immer mit addTemplateDir() dein „Views“-Verzeichnis registrieren. Am besten schon, wenn du den Controller registriert (in dem Event-Callback). Dann gibt es zwei Szenarien: 1) Controller/Action: Shopware_Controllers_Frontend_MyTest::testAction TemplateName: frontend/my_test/test.tpl Wenn dein Template so im View-Verzeichnis abgelegt ist, lädt Shopware es __automatisch__. 2) Wenn der Template-Pfad nicht auf die oben beschriebene Weise zum Controller-Namen passt, kannst du es mit „loadTemplate“ explizit laden, am besten in deiner Controller-Action __bevor__ du Variablen assignst. Meintest du das? Daniel

jup ansich meinte ich das und hilft auch erstmal weitder, heute mal testen. Ich komme noch nicht ganz draus warum er es automatisch zuordnen kann, sind ja ansich 2 verschiedene Schreibweisen [quote]MyTest my_test[/quote]

Hi, es gibt einen sog. “ViewRenderer”, der das automatisch im PreDispatch eines Controllers macht: foreach ($parts as &$part) { $part = preg\_replace('#[A-Z]#', '\_$0', $part); $part = trim($part, '\_'); $part = strtolower($part); } (\Enlight_Controller_Plugins_ViewRenderer_Bootstrap::getTemplateName) Daniel