Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
E commerce 货到付款仅激活管理员(未启用前端)-Magento?_E Commerce_Magento 1.7_Magento 1.6_Magento - Fatal编程技术网

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

E commerce 货到付款仅激活管理员(未启用前端)-Magento?,e-commerce,magento-1.7,magento-1.6,magento,E Commerce,Magento 1.7,Magento 1.6,Magento,我现在正在使用magento一段时间。我想知道是否可以启用货到付款选项,仅供管理员使用。我想用它当商店的皮卡 所以,这种方式只能在管理面板中为那些想要商店提货的人创建手动订单 我不想这是显示在Magento前端商店 你们都能帮我吗?这是一个非常简单的方法,但可能不是最干净的方法: 为商店启用货到付款功能 使用CSS从前端隐藏它 使用CSS来实现这一点会对公众隐藏这个选项,但不会阻止熟悉CSS的web开发人员找到它并下一个货到付款订单——尽管我想不出任何理由有人会故意这样做,因为他们下订单不会取得

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

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

我不想这是显示在Magento前端商店


你们都能帮我吗?

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

  • 为商店启用货到付款功能
  • 使用CSS从前端隐藏它
  • 使用CSS来实现这一点会对公众隐藏这个选项,但不会阻止熟悉CSS的web开发人员找到它并下一个货到付款订单——尽管我想不出任何理由有人会故意这样做,因为他们下订单不会取得多大成就

    编辑:

    要隐藏货到付款,请将以下内容添加到CSS中:

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

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

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

    坚实的道路: 我最喜欢的方法是启用Check/moneyorder方法,并创建一个小模块,如下所示。以上两种考虑在这里都不起作用

    /app/etc/modules/Company_Module.xml
    
    真的
    地方的
    
    /app/code/local/Company/Module/etc/config.xml
    
    0.0.1
    公司模块模型
    独生子女
    公司模块/观察员
    付款方式有效
    
    /app/code/local/Company/Module/Model/Observer.php
    若要隐藏在前端,必须将设置为false,以
    受保护的$\u canUseCheckout=false;你的付款方式

    若要在管理端显示,必须将
    受保护的$\u canUseInternal=true;感谢@JMax,我也这么做了。但是我不太擅长编程部分。这个代码做什么?它检查请求是否来自管理区域,如果是,我们说付款方式是活动的,否则,我们说付款方式是非活动的。它是防弹的。嗨@JMax,我试过这个。我激活了这个方法,但问题是我不希望它显示在前端。。但它也可以在前端使用。我想把它藏起来??有什么建议吗?请使用$instance->getCode()而不是$instance->getName()。此外,您可以使用
    而不是
    事件命名空间,这样您就不必检查事件是在frontend还是adminhtml中触发的
    <?xml version="1.0"?>
    <config>
        <modules>
            <Company_Module>
                <active>true</active>
                <codePool>local</codePool>
                <depends>
                    <Mage_Payment/>
                </depends>
            </Company_Module>
        </modules>
    </config>
    
    <?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>
    
    <?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;
                }
            }
        }
    }