benblubbenblub MemberComments: 364 Received thanks: 39 Member since: July 2014 edited May 2015
Frage: An welcher Stelle muss das neue Template dir eingebunden werden?
$view->loadTemplate('frontend/swag_availability_check/get_availability.tpl');
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');

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.. :/

Comments

  • Daniel NögelDaniel Nögel AdministratorsComments: 1560 Received thanks: 386 Member since: September 2012
    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
  • benblubbenblub MemberComments: 364 Received thanks: 39 Member since: July 2014
    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
    MyTest
    my_test
  • Daniel NögelDaniel Nögel AdministratorsComments: 1560 Received thanks: 386 Member since: September 2012
    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
Sign In or Register to comment.