magento获取用户角色

回顾以前些的文章,我有时能找到一些很有用的东西。其中之一是一段代码,它能对指定的客户群进行自定义操作。 在Magento后台,我们可以找到客户群。

  • 客户群管理 Customers->Customer Groups
  • 修改客户所在的群 Customers->Manage Customers->Click on a customer->Account Information tab->Customer group dropdown

首先你要注册你的模型。我假设你已经知道如何完成,或者你已经有现成的可用。

现在,为你的模型创建一个配置文件。我这里使用的示例模型是存在于'Alwayly'命名空间下的'Customergroup‘,下面是代码:

app/code/community/Alwayly/Customergroup/etc/config.xml


<?xml version="1.0"?>
<config>
    <modules>
        <Alwayly_Customergroup>
            <version>1.0.0</version>
        </Alwayly_Customergroup>
    </modules>
    <global>
        <events>
            <controller_action_layout_generate_blocks_after>
                <observers>
                    <alwayly_customergroup>
                        <type>singleton</type>
                        <class>alwayly_Customergroup_Model_Observer</class>
                        <method>placeCustomJs</method>
                    </alwayly_customergroup>
                </observers>
            </controller_action_layout_generate_blocks_after>
        </events>
    </global>
</config>

然后,我们创建观察者。

app/code/community/Alwayly/Customergroup/Model/Observer.php


<?php
class Alwayly_Customergroup_Model_Observer
{
    public function placeCustomJs()
    {
 
        $roleId = Mage::getSingleton('customer/session')->getCustomerGroupId();
        $role = Mage::getSingleton('customer/group')->load($roleId)->getData('customer_group_code');
        $role = strtolower($role);
 
        $headBlock = Mage::app()->getLayout()->getBlock('head');
        if($headBlock && $role=='wholesale')
        {
            $headBlock->addJs('test/myScript.js');
        }
        return $this;
    }
}

我展示只是一种用例。你可以在任何合适的地方使用它。比如给特定的用户组显示一条信息,一个不一样的订阅框,等等……

一定要注意:如果用户没有登录,$role将会等于 ‘not logged in‘。

声明:这篇文章最初写于2009年,如有问题请及时联系我们。

360magento团队期待与您的相会:)