禁用Magento中的“常规”组销售

时间:2015-01-07 12:50:40

标签: magento checkout

我希望在我们的Magento网站上停用“常规”中的任何客户的销售额。客户群。我们有一个分层的客户群系统设置,具有不同的税收规则等,但我无法弄清楚如何禁用' general'作为可以从网站购买的群组。我不希望新客户注册后可以先购买,而无需先分组。

感谢。

1 个答案:

答案 0 :(得分:1)

这是我的想法:在controller_action_predispatch_checkout_onepage_index事件上设置观察者,该事件将在加载结帐页面之前触发。在观察者中,我们检查客户是否属于某个组,如果是,我们将他重定向到购物车页面并显示错误消息。

翻译成Magento代码,它看起来像这样:

我们在config.xml

中挂钩了这个事件
<frontend>
    <events>
        <controller_action_predispatch_checkout_onepage_index>
            <observers>
                <your_module>
                    <class>your_module/observer</class>
                    <method>banCheckout</method>
                </your_module>
            </observers>
        </controller_action_predispatch_checkout_onepage_index>
    </events>
</frontend>

在我们的观察员中:

public function banCheckout(Varien_Event_Observer $observer)
{
    $customerSession = Mage::getSingleton('customer/session');
    if (!$customerSession->isLoggedIn()) {
        return $this;
    }

    $groupId = $customerSession->getCustomer()->getGroupId();
    if ($groupId == 1) {
        Mage::getSingleton('checkout/session')->addError(
            Mage::helper('checkout')->__('Your error message.')
        );
        $action = $observer->getEvent()->getControllerAction();
        $action->getResponse()->setRedirect(Mage::getUrl('checkout/cart'));
        $action->setFlag('', Mage_Core_Controller_Varien_Action::FLAG_NO_DISPATCH, true);
    }

    return $this;
}

请记住,这只是一个例子,而且非常简单。