7

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

因此,这种方式只能在管理面板中为那些想要商店取货的人创建手动订单。

我不希望它显示在 Magento 前端商店中。

大家可以帮帮我吗???

4

3 回答 3

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;
            }
        }
    }
}
于 2012-12-24T15:38:46.337 回答
1

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

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

于 2014-05-14T11:58:15.173 回答
-4

一种非常简单的方法,但可能不是最干净的方法:

  1. 为商店启用货到付款
  2. 使用 CSS 从前端隐藏它。

使用 CSS 来实现这一点会向公众隐藏选项,但不会阻止熟悉 CSS 的 Web 开发人员找到它并下达货到付款订单 - 尽管我想不出有人会故意这样做的任何原因因为他们不会通过下订单来取得太多成就。

编辑 :

要隐藏货到付款,请将其添加到您的 CSS:

input#p_method_cashondelivery { display: none; }
label[for=p_method_cashondelivery] { display: none; }
于 2012-12-24T15:19:11.490 回答