2014-05-16 24 views
8

Qual è il modo più semplice/più consigliato per disporre di una logica di layout condizionale basata su se un utente è registrato o meno?Blocchi di layout condizionale in Magento a seconda dell'accesso?

esempio .. in pseudocodice

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

risposta

10

Condizioni di utilizzo nel file XML (local.xml, page.xml, etc.). Per esempio. aggiungere un blocco cm se il cliente si registra nel:

<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>

E medesima logica per disconnessi clienti, ad esempio rimuovere un blocco:

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

+1

wow - che sembra brillante, grazie Gerard – Zabs

+0

è è possibile avere un riferimento a un controller all'interno di questi tag condizionali 'customer_logged_in/out'? Per esempio. qualcosa del tipo: ' (...)' – Alan

+0

Conosci un modo per farlo in Magento 2? –

6

È inoltre possibile utilizzare Magento aiutante del cliente nel modello:

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

//Show block to logged in customers 

}else{ 

// Show different block to guest users 

} 

alternativa utilizzare:

Mage::helper('customer')->isLoggedIn() 
Problemi correlati