Elemente nur erscheinen lassen, wenn User eingeloggt

Das „schön“ dabei ist, in manchen Blocken gibts das einfach nicht.

Nehmen wir mal Block {block name=„frontend_index_start“} aus der index.tpl oder frontend_index_header_meta_tags aus der header.tpl

Wenn man hier $sUserLoggedIn nutzt, ist dies immer false. Egal ob man ein Plugin geschrieben oder eingebunden hat, das vorher dies eigentlich aktivieren sollte.

Enlight_Controller_Action_PostDispatchSecure_Frontend greift bei diesem Block einfach nicht.

https://developers.shopware.com/developers-guide/global-variables-in-templates/

 

richtig wäre : $args->getSubject()->View()->assign(‚sUserLoggedIn‘, !empty(Shopware()->Session()[‚sUserId‘]));
Was allerdings auch wieder vom Cache kaputt gemacht wird…

 

Ich habes dann so gelöscht:

 'onPostDispatch',
            'Enlight_Controller_Action_PostDispatchSecure_Frontend' => 'onPostDispatch',
            'Enlight_Controller_Action_PostDispatchSecure_Widgets' => 'onPostDispatch'
        ];
    }

    /**
     * @param \Enlight_Controller_ActionEventArgs $args
     */
    public function onPostDispatch(\Enlight_Controller_ActionEventArgs $args)
    {
		$args->getSubject()->View()->assign('sUserLoggedIn', !empty(Shopware()->Session()['sUserId']));
        //$args->getSubject()->View()->assign('sUserloggedIn', Shopware()->Modules()->Admin()->sCheckUser());
    }
}