【发布时间】:2012-12-10 23:15:05
【问题描述】:
我现在正在使用 magento 一段时间。我想知道是否可以启用 货到付款选项 仅供管理员使用。我想把它用作商店取货...
因此,这种方式只能在管理面板中为那些想要商店取货的人创建手动订单。
我不希望它显示在 Magento 前端商店中。
大家能帮帮我吗???
【问题讨论】:
标签: e-commerce magento-1.7 magento-1.6 magento
我现在正在使用 magento 一段时间。我想知道是否可以启用 货到付款选项 仅供管理员使用。我想把它用作商店取货...
因此,这种方式只能在管理面板中为那些想要商店取货的人创建手动订单。
我不希望它显示在 Magento 前端商店中。
大家能帮帮我吗???
【问题讨论】:
标签: e-commerce magento-1.7 magento-1.6 magento
一种非常简单的方法,但可能不是最干净的方法:
使用 CSS 来实现这一点会向公众隐藏选项,但不会阻止熟悉 CSS 的 Web 开发人员找到它并下达货到付款订单 - 尽管我想不出任何理由有人会故意这样做,因为他们不会通过下订单获得太多。
编辑:
要隐藏货到付款,请将其添加到您的 CSS:
input#p_method_cashondelivery { display: none; }
label[for=p_method_cashondelivery] { display: none; }
【讨论】:
有很多方法可以实现这一点,但它们需要熟悉 Magento 生态系统。我不鼓励使用 CSS 向最终用户隐藏它,因为稍微了解 CSS 的人可以轻松地取消隐藏它并免费获得购买您的产品的权限。
我还建议不要覆盖核心文件(即使您没有编辑它们),因为这会导致将来出现升级问题。
我最喜欢的方法是启用支票/货币订单方法,并为自己创建一个小模块,像这样。前面的任何一个考虑都不会在这里产生任何影响。
<?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;
}
}
}
}
【讨论】:
<frontend> 代替 <global> 事件命名空间,这样您就不必检查事件是在前端还是在 adminhtml 中触发
要隐藏在前端,必须设置为false 受保护的 $_canUseCheckout = false;到您的付款方式。
要在admin端显示,必须设置为true才可以 受保护的 $_canUseInternal = true;到您的付款方式。
【讨论】: