【发布时间】:2017-01-11 11:23:33
【问题描述】:
以下是用于限制基于结帐页面上的 Pincode 的货到付款付款方式的扩展的 observer.php 文件。
此扩展程序与 Magento 中内置的货到付款付款方式完美配合。
我的问题是,当我网站上的客户转到结帐页面完成订单时,货到付款付款方式最初是不可见的。只有当客户输入他的邮政编码,并且该特定邮政编码可用于 COD 时,才会出现 COD 付款方式。如果该邮政编码不符合条件,则 COD 选项将继续不可见。
我希望 COD 选项最初在未输入邮政编码时可见,并且在客户输入邮政编码后,如果该邮政编码不可用,则应显示一条消息,说明 COD 不可用。
我知道这个特定的代码需要稍作修改才能实现。如果可能,请帮助我。
Observer.php
class Mfp_Cod_Model_Observer {
public function getCashOnDelvery(Varien_Event_Observer $observer)
{
$event = $observer->getEvent();
$method = $event->getMethodInstance();
$result = $event->getResult();
$isModuleEnable = Mage::getStoreConfig('cod/cod/enable');
if ($isModuleEnable) {
if ($method->getCode() == 'msp_cashondelivery' ) {
$quote = Mage::getSingleton('checkout/cart')->getQuote();
$add = $quote->getShippingAddress();
$postcode = $add->getData('postcode');
$comparisonMode = Mage::getStoreConfig('cod/cod/mode');
$zipCodes = Mage::getStoreConfig('cod/cod/zipcode');
$isExist = false;
if (trim($zipCodes) == '') {
$result->isAvailable = true;
} else {
if(strpos($zipCodes, $postcode) !== false) {
$isExist = true;
}
if ($isExist != true) {
$zipCodesArray = explode(',', nl2br($zipCodes));
if (count($elementLineArray) > 1) {
foreach ($zipCodesArray as $codzipLine) {
$elementLineArray = explode('-', $codzipLine);
if (count($elementLineArray) == 2 && ( $postcode >= $elementLineArray[0] && $postcode <= $elementLineArray[1] )) {
$isExist = true;
break;
} else if($postcode == $codzipLine) {
$isExist = true;
break;
}
}
}
}
$returnValue = '';
$returnValue = ($isExist)?true:false;
$result->isAvailable = $returnValue;
}
}
}
}
}
【问题讨论】:
标签: php magento-1.9