Ich stehe auf dem Schlauch. Ich will in einem Smarty Template mit der aktuellen Kundengruppe des Users arbeiten.
Sprich: Wenn Kundengruppe nicht gleich Gast, zeige blabla.
Ich hab im Hinterkopf irgendetwas von view->assign?
Wie übergebe ich die Variable aus einem Plugin an Smarty? Welches Event muss ich dafür nutzen?
Momentan habe ich folgendes:
Bootstrap:
public function install()
{
$this->subscribeEvent(
'Enlight_Controller_Action_PostDispatch_Frontend',
'postDispatch'
);
return true;
}
public function postDispatch(Enlight_Event_EventArgs $args)
{
$view->assign("kundengruppe",Shopware()->System()->sUSERGROUPDATA['groupkey']);
}
Ich weiß leider nicht was in Shopware()->System()->sUSERGROUPDATA[‘groupkey’] drin steht. Vielleich steht da auch einfach nix drin?!?
Du solltest auch beachten, dass die Artikeldetail Seite gecached wird (zumindest im Standard) und du auf der Detailseite nix Kunden-dynamisches einzeigen kannst auf diese Art und Weise. Du müsst mit dem {action} Viewhelper einen Subrequest abfeuern. Die werden nicht gecached und können deine Kunden-dynamischen Informationen in die Seite einbinden.
das Problem hat sich gelöst. Die Kundengruppe wurde nach dem Tipp von @simkli übertragen.
Was ich nicht wusste ist, das wenn man nicht eingeloggt ist diese Abfrage einen leeren String zurück gibt.
wie simkli aber oben schon schreibt: man soll kein append mehr nutzen (auch von Shopware aus), sondern anstelle davon {$smarty.block.parent}, da die Nutzung von append und preprend zu Problemen führen kann.
Und wie arnebecker richtig schreibt, wird deine Lösung auch gecacht, was ja auch nicht Sinn der Sache sein soll, wenn nur bestimmte Kundengruppen oder ähnliches die Downloads sehen dürfen.
Und wie man den Cache deaktiviert? Das findet man sehr einfach bei Google. Untschuldigung, aber dieses Forum bietet Hilfe zu Selbsthilfe. Wir können hier keine komplette Lösungen basteln. Wir setzen vorraus, dass ihr Hilfesuchenden mit der Doku, der Dev Doku und Google vertraut seid!
Ok ich hab jetzt verstanden, dass ich mit dem Smarty {action} tag eine Abfrage ohne Cache auslösen kann. Aber welchen controller und Action muss ich angeben?
So wie ich das sehe brauchst du dir um den Cache keine Gedanken zu machen. Die Kundengruppe ist bereits ein Cache-Key. D.h. pro Kundengruppe wird ein separater Cache angelegt. Problematisch würde es werden, wenn du auch noch spezielle Daten von Kunden wie z.B. Name oder Vorname abfragen würdest. Diese stehen dir nämlich im Cache nicht zur Verfügung. Hast du den überhaupt Caching-Probleme?
Du müsstest dir selber einen Controller mit eigener Action schreiben. In das Template der Action muss das hier rein. Sprich das Ergebniss deiner Action:
hmm nicht das ich wüsste. Es ergibt sich aber gerade ein anderes Problem:
mittels view->assign habe ich ja die kundengruppe übergeben. Dies funktioniert nur leider nicht bei der Startseite. In welchem Event muss ich nochmals ein view->assign ausführen?
Gibt es ne Liste mit den ganzen Shopware Events? In der DevDoku finde ich nicht viel passendes außer ein paar Beispielen.
Du verwendest ja Enlight_Controller_Action_PostDispatchSecure_Frontend. Der wird bei jedem Frontend Request gefeuert. Also auch bei der Startseite. Sollte also eigtl richtig sein!
Kann es sein das du zwischezeitlich ausgeloggt wurdest?
Was ich nicht wusste ist, das wenn man nicht eingeloggt ist diese Abfrage einen leeren String zurück gibt.
Früher zu SW4 Zeiten gab es auch mal eine Übersicht mit allen Events. Die gibts aber inzwischen nicht mehr. Jetzt findest man sie nur noch wenn man durch den Shopware Code scrollt oder im Code nach den Stichworten filter(, notifiy( oder notifyUntil( suchst.