gpt4 book ai didi

php - Magento - OnePage Checkout - 根据运输方式隐藏付款方式

转载 作者:可可西里 更新时间:2023-11-01 12:31:51 25 4
gpt4 key购买 nike

我在 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 种送货方式:

  • 店内取货
    标题 = 店内取货
    方法名称 = 店内取货 (Extension link)
  • Flat Rate
    Title = Standard Delivery
    Method Name = Standard Shipping
  • 免费送货
    标题=免费送货
    方法名称=免费

编辑 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>

希望这些额外的信息能够对我有所帮助!

最佳答案

至于我得到的,你试图隐藏一些基于送货方式的付款方式。为此,您根本不需要观察事物。只要跟着我,你就可以做到这一点,

每个方法(在一个页面中 check out )将选择的方法发布到下一个级别。这样您就可以在付款方式级别获得选择的送货方式。只需打印

中的帖子内容
app/design/frontend/base/default/template/checkout/onepage/payment/methods.phtml

在此添加下面一个,

<?php print_r($_POST); ?>

现在您可以获得上一步选择的运输方式。请注意,现在,您可以在同一个文件中添加简单的逻辑(if else)条件来隐藏付款,

例如这里我想隐藏支票/汇票支付方式,如果送货方式是flat。这里的支付方式代码是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

关于php - Magento - OnePage Checkout - 根据运输方式隐藏付款方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26604267/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com