php – Magento – OnePage Checkout – 根据送货方式隐藏付款方
我在
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; } } } } 我猜我没有使用正确的运输方式代码名称或付款方式代码名称,但我不确定.有人有什么建议吗? 编辑: >收集商店标题=收藏商店方法名称=收藏商店(Extension link) 编辑2: <?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> 希望这些额外的信息可以证明对我有用!
至于我得到的,你试图隐藏一些基于运输方式的付款方式.为此,您根本不需要观察事物.只需你可以做到这一点,跟着我, 每个方法(在一页中检出)都会将选择的方法发布到下一级别.这样您就可以在付款方式级别获得所选的送货方式.只需打印帖子即可 app/design/frontend/base/default/template/checkout/onepage/payment/methods.phtml 在这下面添加一个, <?php print_r($_POST); ?> 所以现在您可以获得上一步选择的运输方式.请注意,现在,您可以在同一个文件中添加简单的逻辑(if else)条件以隐藏付款, 例如,这里我想要隐藏支票/汇票支付方式,如果运输方式是平的.这里的付款方式代码是checkmo.您可以通过简单地打印该变量来获得付款方式代码,例如echo $_code = $_method-> getCode();在同一个文件中.所以这里只是添加简单的if else, <?php $methods = $this->getMethods(); $oneMethod = count($methods) <= 1; ?> <?php if (empty($methods)): ?> <dt> <?php echo $this->__('No Payment Methods') ?> </dt> <?php else: foreach ($methods as $_method): echo $_code = $_method->getCode(); if($_POST['shipping_method'] == 'flatrate_flatrate') { if($_code == 'checkmo') { continue; } } ?> 这里, if($_POST['shipping_method'] == 'flatrate_flatrate') { if($_code == 'checkmo') { continue; } } 检查送货方式并跳过我们不想显示的付款方式.而已.如果您有任何疑问,请在此发表评论. 注意: shipping_method => flatrate_flatrate paymet_method => checkmo (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |