如何显示/隐藏某些特定城市的“货到付款”付款方式。
我已经厌倦了这个link但是没有工作
这是我的observer.php,位于app / code / local / MagePsycho / Paymentfilter / Model
class MagePsycho_Paymentfilter_Model_Observer {
public function paymentMethodIsActive(Varien_Event_Observer $observer) {
$event = $observer->getEvent();
$method = $event->getMethodInstance();
$result = $event->getResult();
$currencyCode = Mage::app()->getStore()->getCurrentCurrencyCode();
$checkout = Mage::getSingleton('checkout/session')->getQuote();
$shipping = $checkout->getShippingAddress();
$cashOnDeliveryCities = array('test1','test3');
if(in_array($shipping->getCity(), $cashOnDeliveryCities)){
$result->isAvailable = true;
}else{
$result->isAvailable = false;
}
}
}
这是我的app.php,位于app / code / local / MagePsycho / Paymentfilter / etc
<frontend>
<events>
<payment_method_is_active>
<observers>
<paymentfilter_payment_method_is_active>
<type>singleton</type>
<class>paymentfilter/observer</class>
<method>paymentMethodIsActive</method>
</paymentfilter_payment_method_is_active>
</observers>
</payment_method_is_active>
</events>
</frontend>
我失踪的地方,显示所有未过滤的城市的货到付款
由于
答案 0 :(得分:1)
它对我有用。
首先检查您的观察者方法是否正在执行。放一些像exit()或die();
正如您已经说过的,您只想为cash_on_delivery添加城市限制 - 在$currencyCode = ...
之后添加以下代码
if(!($method instanceof Mage_Payment_Model_Method_Cashondelivery))
{
return;
}
尝试调试Mage_Payment_Model_Method_Abstract :: isAvailable。把一些Mage :: log放在这个方法中,并确定哪个walue有$checkResult->isAvailable