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

use*_*231 7 magento e-commerce magento-1.6 magento-1.7

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

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

我不希望这个在Magento Frontend Store展出.

你能帮助我吗???

Jos*_*ter 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>
Run Code Online (Sandbox Code Playgroud)

/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>
Run Code Online (Sandbox Code Playgroud)

/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;
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 使用$ instance-> getCode()而不是$ instance-> getName() (3认同)

ron*_*nnz -4

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

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

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

编辑 :

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

input#p_method_cashondelivery { display: none; }
label[for=p_method_cashondelivery] { display: none; }
Run Code Online (Sandbox Code Playgroud)