¿Hay alguna forma de agregar condicionalmente un bloque en mi diseño de magento en función de si el cliente actual es parte de un grupo o no?agregar bloques de forma condicional en el diseño de magento
o sería algo mejor manejado en el controlador?
¿Hay alguna forma de agregar condicionalmente un bloque en mi diseño de magento en función de si el cliente actual es parte de un grupo o no?agregar bloques de forma condicional en el diseño de magento
o sería algo mejor manejado en el controlador?
Sería bueno usar algo como customer_logged_in
y customer_logged_out
pero lamentablemente eso no existe ... todavía.
Copiemos la misma técnica. Para empezar se necesita para hacer un módulo con esto en el config:
<frontend>
<events>
<controller_action_layout_load_before>
<observers>
<customer_group_observer>
<class>CUSTOM_MODULE/observer</class>
<method>beforeLoadLayout</method>
</customer_group_observer>
</observers>
</controller_action_layout_load_before>
</events>
</frontend>
En la clase CUSTOM_MODULE_Model_Observer
añadir este método:
public function beforeLoadLayout($observer)
{
$groupId = Mage::getSingleton('customer/session')->getCustomerGroupId();
$group = Mage::getModel('customer/group')->load($groupId);
$observer->getEvent()->getLayout()->getUpdate()
->addHandle('customer_group_'.$group->getCode());
}
Ahora en archivos de diseño se pueden utilizar los grupos de clientes.
<layout>
<customer_group_General>
<reference name="content">
<!-- Add some blocks -->
</reference>
</customer_group_General>
</layout>
Además, este método no le permite especificar bloques directamente por página, pero puede solucionarlo. Aquí hay un ejemplo que crea una nueva ubicación para páginas de productos solamente, en todas las otras páginas la actualización no debería tener ningún efecto y fallar con elegancia.
<layout>
<catalog_product_view>
<reference name="content">
<block type="core/text_list" name="group_container" />
</reference>
</catalog_product_view>
<customer_group_General>
<reference name="group_container">
<!-- Add some blocks -->
</reference>
</customer_group_General>
</layout>
El siguiente post proporcionará detalles de la funcionalidad de su requieren: http://www.magentocommerce.com/boards/viewthread/83244/#t219147
Uso customer_logged_in o customer_logged_out bloques en sus archivos de diseño para añadir o eliminar elementos, estos bloques se denominan pasado.
No es necesario agregar extensiones o códigos adicionales, esto está integrado en Magento como estándar.
Espero que esto ayude, funcionó para mí. Versión de Magento: 1.6+
¡excelente respuesta! ¡Gracias por toda la ayuda! – veilig
¿se pueden usar estos identificadores al dirigirse a una página específica? vs usado para cada página cuando un cliente es parte de un grupo en particular? – veilig
Creo que tengo una idea de cómo hacerlo, por favor vea la respuesta actualizada. – clockworkgeek