Ich möchte, dass der Kunde, sofern nicht eingeloggt, über ein Dropdown Select auswählen kann, ob er Shopkunden oder Händlerpreise angezeigt bekommt.
Dazu will ich ein eigenes Plugin schreiben. Die Funktion " getSubscribedEvents" sieht wie Folgt aus:
‘Enlight_Controller_Action_PostDispatchSecure_Frontend’ => ‘onPostDispatch’,
‘Enlight_Controller_Action_PostDispatchSecure_Frontend_Index’ => ‘onPostDispatch’,
‘Enlight_Controller_Action_PostDispatchSecure_Frontend_Listing’ => ‘onPostDispatch’,
‘Enlight_Controller_Action_PostDispatchSecure_Widgets’ => ‘onPostDispatch’,
‘Enlight_Controller_Action_PreDispatch_Widgets_Listing’ => ‘onPostDispatch’,
Der Callback " onPostDispatch":
public function onPostDispatch (\Enlight_Event_EventArgs $args){
$controller = $args->getSubject();
$request = $controller->Request();
$response = $controller->Response();
$view = $controller->View();
$showSwitcher = 0;
$customerGroupSelected = 0;
$loggedIn = Shopware()->Modules()->Admin()->sCheckUser();
if($loggedIn){
return;
}
$showSwitcher = 1;
$k = Shopware()->Session()->sUserGroup;
$view->assign(‘showSwitcher’, $showSwitcher);
$view->assign(‘userGroup’, $k);
}
In der topbar-navigation.tpl binde ich den Select ein, der die setCustomergroup-Action meines Plugin-Controllers “Switcher” aufruft.
topbar-navigation.tpl:
{block name="frontend_index_top_bar_nav"}
{if $showSwitcher == 1}
Preise werden angezeigt für:
Privatkunden
Öffentliche Einrichtungen
{/if}
{$smarty.block.parent}
{/block}
Diese Funktion sieht wie Folgt aus: /Widgets/Switcher.php
function setCustomergroupAction(){
$cookie_name = “customerGroupSet”;
$kundengruppe = $this->Request()->getPost(‘customerGroup’);
//$postVariables = $this->Request()->getPost();
Shopware( )->Session( )->sUserGroup = $kundengruppe;
$this->redirect();
}
Den Redirect auf die Startseite lasse erfolgen, da die ControllerAction keine TPL Datei zugeordnet bekommt.
Das funktioniert auch schon FAST.
Jedoch scheint die Zuweisung der Kundengruppe über Shopware()->Session()->sUserGroup auf der Startseite, auf die man weitergeleitet wird, nicht zu greifen.
Wähle ich “Öffentliche Einrichtungen” aus, so wid auf der Startseite dennoch im Select angezeigt, dass ich als Privatkunde unterwegs sei. Auf allen anderen Seite, wird die Session Variable aber korrekt gesetzt.
Hat hier vielleicht jemand eine Idee, wie dieses Verhalten zustande kommt?
Merci