Cara cepat dan jelek adalah memeriksa grup pelanggan saat ini dan kemudian mengatur tema secara program:
Mage::getDesign()->setArea('frontend')
->setPackageName('your_package')
->setTheme('your_theme');
Tetapi solusi ini pasti kehilangan beberapa fleksibilitas.
Cara yang lebih canggih adalah dengan membuat handel tata letak kelompok pelanggan dan kemudian mengatur tema khusus di sana. Solusi ini terinspirasi oleh artikel ini oleh Atwix.
Jadi, pertama-tama Anda harus mengamati controller_action_layout_load_before
acara:
<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>
Kemudian di kelas Anda menerapkan addCustomerGroupHandle
metode pengamat :
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;
}
Catatan: Di str_replace
sini bukan sangat mudah jadi saya sarankan menggantinya dengan ekspresi reguler yang akan mengganti semua karakter non-alfanumerik dengan garis bawah dan kemudian memotong garis depan dan akhiran garis bawah.
Jadi sekarang Anda dapat mengatur tema khusus untuk grup pelanggan apa pun melalui 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>