我在Magento Stackexchange上问过这个问题,但没有成功,因此我现在在这里问。
我正在使用 Magento Community Edition 1.9.0.1 并已正确创建并注册了我的模块,但我似乎无法检测到运输方式。基本上,如果选择统一费率或免费送货,我想隐藏货到付款。这是我的观察者类的代码:
class Kol_PaymentToggle_Model_Observer
{
public function paymentMethodIsActive(Varien_Event_Observer $observer) {
$event = $observer->getEvent();
$method = $event->getMethodInstance();
$result = $event->getResult();
$quote = $observer->getEvent()->getQuote();
$shippingMethod = $quote->getShippingAddress()->getShippingMethod();
if($shippingMethod == "standardshipping" || $shippingMethod == "free") {
if($method->getCode() == 'cashondelivery' ) {
$result->isAvailable = false;
}
}
}
}
我猜我没有使用正确的运输方式代码名称或付款方式代码名称,但我不确定。有人有什么建议吗?
编辑: 我只启用了 3 种运输方式:
- Collect In Store
Title = Collect in Store
Method Name = Collect In Store ( Extension link ) - 统一费率
标题 = 标准配送
方式名称 =标准配送 - 免费送货
标题 = 免费送货
方式名称 = 免费
编辑 2:config.xml 的输出
<?xml version="1.0"?>
<config>
<modules>
<Kol_PaymentToggle>
<version>0.0.1</version>
</Kol_PaymentToggle>
</modules>
<frontend>
<events>
<payment_method_is_active>
<observers>
<paymentfilter_payment_method_is_active>
<type>singleton</type>
<class>Kol_PaymentToggle_Model_Observer</class>
<method>paymentMethodIsActive</method>
</paymentfilter_payment_method_is_active>
</observers>
</payment_method_is_active>
</events>
</frontend>
</config>
希望这些额外的信息可以证明对帮助我有用!