clo*_*eek 16
使用类似的东西会很好customer_logged_in,customer_logged_out但遗憾的是还不存在......
让我们复制相同的技术.首先,你需要在配置中创建一个模块:
<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>
Run Code Online (Sandbox Code Playgroud)
在CUSTOM_MODULE_Model_Observer类中添加此方法:
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());
}
Run Code Online (Sandbox Code Playgroud)
现在,在布局文件中,您可以使用客户组.
<layout>
<customer_group_General>
<reference name="content">
<!-- Add some blocks -->
</reference>
</customer_group_General>
</layout>
Run Code Online (Sandbox Code Playgroud)
此外,此方法不允许您直接指定每页的块,但您可以解决此问题.以下是仅为产品页面创建新位置的示例,在所有其他页面上,更新应该无效且优雅地失败.
<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>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3828 次 |
| 最近记录: |