La forma rápida y fea es verificar el grupo del cliente actual y luego configurar el tema mediante programación:
Mage::getDesign()->setArea('frontend')
->setPackageName('your_package')
->setTheme('your_theme');
Pero esta solución definitivamente pierde algo de flexibilidad.
La forma más sofisticada sería crear un diseño de grupo de clientes y luego configurar temas personalizados allí. Esta solución está inspirada en este artículo de Atwix.
Entonces, primero debes observar el controller_action_layout_load_before
evento:
<events>
<controller_action_layout_load_before>
<observers>
<customer_group_handle>
<class>module/observer</class>
<method>addCustomerGroupHandle</method>
</customer_group_handle>
</observers>
</controller_action_layout_load_before>
</events>
Luego, en su clase de observador, implemente el addCustomerGroupHandle
método:
public function addCustomerGroupHandle(Varien_Event_Observer $observer)
{
if (Mage::helper('customer')->isLoggedIn()) {
/** @var $update Mage_Core_Model_Layout_Update */
$update = $observer->getEvent()->getLayout()->getUpdate();
$groupId = Mage::helper('customer')->getCustomer()->getGroupId();
$groupName = Mage::getModel('customer/group')->load($groupId)->getCode();
$update->addHandle('customer_group_' . str_replace(' ', '_', strtolower($groupName)));
}
return $this;
}
Nota: str_replace
Aquí no es infalible, así que sugiero reemplazarlo con una expresión regular que reemplace todos los caracteres no alfanuméricos con guiones bajos y luego recorte los guiones bajos iniciales y finales.
Así que ahora puede configurar un tema personalizado para cualquier grupo de clientes a través de xml:
<?xml version="1.0" encoding="UTF-8"?>
<layout>
<customer_group_wholesale>
<reference name=”root”>
<action method=”setTheme”><theme>modern</theme></action>
</reference>
</customer_group_wholesale>
</layout>