货到付款已激活仅限管理员(未启用前端) - Magento?

时间:2012-12-24 15:08:13

标签: e-commerce magento-1.7 magento-1.6 magento

我现在正在使用magento一段时间。我想知道是否可以启用货到付款选项以供管理员使用。我想用它作为商店提货......

因此,这种方式只能在管理面板中为需要Store Pickup的人创建手动订单。

我不希望在Magento Frontend Store中展示它。

你能帮助我吗???

3 个答案:

答案 0 :(得分:18)

有很多方法可以实现这一目标,但需要熟悉Magento生态系统。我不鼓励使用CSS将其隐藏在最终用户之外,因为对CSS有一定了解的人可以轻松取消隐藏它并获得购买产品的免费访问权。

我还建议不要覆盖核心文件(即使你没有编辑它们),因为这将导致将来出现升级问题。

坚实的方式:

我最喜欢的方法是启用Check / Money order方法,并为自己创建一个小模块,就像这样。之前的考虑都没有在这里产生任何影响。

/app/etc/modules/Company_Module.xml

<?xml version="1.0"?>
<config>
    <modules>
        <Company_Module>
            <active>true</active>
            <codePool>local</codePool>
            <depends>
                <Mage_Payment/>
            </depends>
        </Company_Module>
    </modules>
</config>

/app/code/local/Company/Module/etc/config.xml

<?xml version="1.0"?>
<config>
<modules>
    <Company_Module>
        <version>0.0.1</version>
    </Company_Module>
</modules>

<global>
    <models>
        <Company_Module>
            <class>Company_Module_Model</class>
        </Company_Module>
    </models>
    <events>
        <payment_method_is_active>
            <observers>
                <company_module>
                    <type>singleton</type>
                    <class>Company_Module/Observer</class>
                    <method>paymentMethodIsActive</method>
                </company_module>
            </observers>
        </payment_method_is_active>
    </events>
</global>

</config>

/app/code/local/Company/Module/Model/Observer.php

<?php

class Company_Module_Model_Observer
{
    public function paymentMethodIsActive($observer)
    {
        $instance = $observer->getMethodInstance();
        $result = $observer->getResult();

        if ($instance->getCode() == "checkmo") {
            if (Mage::app()->getStore()->isAdmin()) {
                $result->isAvailable = true;
            } else {
                $result->isAvailable = false;
            }
        }
    }
}

答案 1 :(得分:1)

要隐藏在前端,必须将其设置为false protected $ _canUseCheckout = false;到您的付款方式。

要在管理员端显示,必须将其设置为true protected $ _canUseInternal = true;到您的付款方式。

答案 2 :(得分:-4)

一种非常简单的方法,但也许不是最简洁的方法:

  1. 为商店启用货到付款
  2. 使用CSS从前端隐藏它。
  3. 使用CSS来实现这一目标会隐藏一般公众的选项,但不会阻止知识渊博的网络开发人员找到它并在交付订单上放置现金 - 尽管我无法想到有人愿意故意这样做,因为他们通过下订单不会取得多大成就。

    编辑:

    要隐藏现金交付,请将此添加到您的CSS:

    input#p_method_cashondelivery { display: none; }
    label[for=p_method_cashondelivery] { display: none; }