2014-05-16 17 views
8

Was ist der einfachste/am meisten empfohlene Weg, eine bedingte Layout-Logik basierend darauf zu erstellen, ob ein Benutzer angemeldet ist oder nicht?Bedingte Layoutblöcke in Magento abhängig davon, ob eingeloggt?

zB .. in Pseudo-Code

if (customer logged in) 
    display this custom onepage checkout layout block 
otherwise 
    display this other custom layout block (for guests) 

Antwort

10

Nutzungsbedingungen in der XML-Datei (local.xml, page.xml, etc.). Z.B. Ein CMS Block hinzuzufügen, wenn der Kunde angemeldet ist:

<customer_logged_in> <reference name="name_of_reference_block"> <block type="cms/block" name="block_name"> <action method="setBlockId"> <block_id>block_id</block_id> </action> </block> </reference> </customer_logged_in>

Und gleiche Logik Kunden für abgemeldet, z.B. entfernen, um einen Block:

<customer_logged_out> <reference name="name_of_reference_block"> <remove name="name_of_block_to_remove"></remove> </reference> </customer_logged_out>

+1

wow - das brillante sieht dank Gerard – Zabs

+0

Ist ist es möglich, innerhalb dieser 'customer_logged_in/out'-bedingten Tags einen Verweis auf einen Controller zu haben? Z.B. etwas wie: ' (...)' – Alan

+0

Kennen Sie einen Weg, dies in Magento 2 zu tun? –

6

Sie auch Magento Kunden Helfer in Ihrer Vorlage verwenden können:

if($this->helper('customer')->isLoggedIn()){ 

//Show block to logged in customers 

}else{ 

// Show different block to guest users 

} 

Alternativ verwenden:

Mage::helper('customer')->isLoggedIn() 
Verwandte Themen