Welches Event beim Aufruf der Startseite.

Hallo Community,

ich möchte Menüpunkte in der main-Navigation, abhängig von der aktuellen Kundengruppe anzeigen lassen. Zunächst habe ich folgendes:

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']);
}

und im tpl.:

{extends file="parent:frontend/index/main-navigation.tpl"}

{block name='frontend_index_navigation_categories_top_after'}
	
		   
			  {$kundengruppe} Test
		   
		
{/block}

Jetzt kommt das mysteriöße. Wenn ich mir einen Artikel ansehe, zeigt er oben “Kundengruppe Test” an.
Gehe ich zur Startseite, zeigt er nur “Test” an. Wieso wird bei der Startseite die Kundengruppe nicht übergeben?

Habt Ihr Ideen?

Mit freundlichen Grüßen
schlueter550v

Also durch Debugging, weiß ich jetzt, dass die Events gewünscht feuern.
Nur wenn ich auf die Startseite klicke, wird die Variable kundengruppe leer gelasen.
Gibt es andere möglichkeiten die aktuelle Kundengruppe abzurufen?

Hi,

über den ShopContext kommst du daran:

        /** @var ShopContextInterface $context */
        $context = $this->get('shopware_storefront.context_service')->getShopContext();
        $group = $context->getCurrentCustomerGroup();

Besten Gruß

Daniel

Muss ich das $this noch definieren? Weil der obere Code liefert immer ein leeres Resultat.

Hi,

achso, das war auf den Controller-Kontext bezogen. Aus der Plugin-Boostrap heraus sollte „$this->container->get“ gehen.

Besten Gruß

Daniel

Und welchen container muss ich benutzen? Weil wenn ich nur das container reinschreibe kommt

core.ERROR: Enlight_Exception: Property "container" not found failure

 

Ich hab es jetzt mal so gelöst:
 

$context = Shopware()->Container()->get('shopware_storefront.context_service')->getShopContext();
$group = json_encode($context->getCurrentCustomerGroup(), true);
$groupname = json_decode($group, true);
$view->assign("kundengruppe",$groupname[key]);

ich weiß nicht ob es sich besser lösen lässt, aber es funktioniert damit.