Login Check für CMS-Seiten Magento

Wie kann man CMS-Seiten abhängig davon gestalten, ob ein User eingeloggt ist oder nicht? Im Grunde relativ einfach: Man erstellt eine phtml-Datei, die man dann in der CMS-Seite einbindet. In dieser Datei kann man dann die Funktion isLoggedIn verwenden, die zurückgibt, ob der User eingeloggt ist oder nicht und so verschiedene Ausgaben erzeugen, z.B. verschiedene statische Blöcke Aufrufen.

 

Ein beispielhaftes Vorgehen: Die phtml-Datei erstellt man z.B. als 

 

\app\design\frontend\econcess\default\template\page\html\service_sidebar.phtml

 

mit dem Inhalt (hier noch Unterscheidung nach Storeview / Sprache):

 

 

$store_code = Mage::app()->getStore()->getCode();

if ($store_code == 'de') {

                if (Mage::getSingleton('customer/session')->isLoggedIn()) {

                               echo $this->getLayout()->createBlock('cms/block')->setBlockId('service_submenu')->toHtml();

                } else {

                               echo $this->getLayout()->createBlock('cms/block')->setBlockId('service_submenu_logged_out')->toHtml();

                }

} else {

                if (Mage::getSingleton('customer/session')->isLoggedIn()) {

                               echo $this->getLayout()->createBlock('cms/block')->setBlockId('service_submenu_eng')->toHtml();

                } else {

                               echo $this->getLayout()->createBlock('cms/block')->setBlockId('service_submenu_eng_logged_out')->toHtml();

                }             

}

 

 

Wir können so nun abhängig von Sprache und Login-Zustand verschiedene statische Blöcke einbinden (service_submenu, service_submenu_logged_out, service_submenu_eng, service_submenu_eng_logged_out).

 

Die Datei service_sidebar.phtml binden wir nun noch ein im Layout-Update der gewünschten Seite mit 

 

 

<reference name="left_first">

               <block type="core/template" name="service_sidebar" template="page/html/service_sidebar.phtml"/>

</reference>

 

 

Das war's! Getestet in Magento CE 1.9.1.0.