如何使用父可配置产品的属性值对简单产品生效以限制付款方式

时间:2015-12-20 13:40:16

标签: php magento configurable-product onepage-checkout payment-method

我正在尝试为此magento(1.9.1)商店中的特定产品(可配置产品)实施仅限卡的付款选项。我正在使用的代码问题是我需要去每个简单的产品并更新属性值才能生效。我想知道如果我可以对代码进行更改,那么使用父产品的价值而不是使用简单产品的价值,无论简单产品使用什么价值。所以我只需要更新可配置产品,说明这个产品是否只是卡片。

我的这个模块的Observer.php

<?php

class JMAWD_CardOnly_Model_Observer
{
public function cardOnly(Varien_Event_Observer $observer)
{
   $event           = $observer->getEvent();
       $method          = $event->getMethodInstance();
       $result          = $event->getResult();
   $cardonly        = false;

    foreach (Mage::getSingleton('checkout/cart')->getQuote()->getAllVisibleItems() as $item)
    {
        if($item->getProduct()->getCardOnly()){
            $cardonly = true;
        }
    }

    if($method->getCode() == "cashondelivery" && $cardonly){
        $result->isAvailable = false;
    }

}
}

我的此模块的config.xml

<?xml version="1.0"?>
<config>
<modules>
    <JMAWD_CardOnly>
        <version>0.1.0</version>
    </JMAWD_CardOnly>
</modules>
<global>
    <events>
        <payment_method_is_active>
            <observers>
                <card_only>
                    <type>singleton</type>
                    <class>cardonly/observer</class>
                    <method>cardOnly</method>
                </card_only>
            </observers>
        </payment_method_is_active>
    </events> 
    <models>
        <cardonly>
            <class>JMAWD_CardOnly_Model</class>
            <resourceModel>cardonly_mysql4</resourceModel>
        </cardonly>
    </models>
    <sales>
        <quote>
            <item>
                <product_attributes>
                    <card_only/>
                </product_attributes>
            </item>
        </quote>
    </sales>
</global>
</config>

帮助&amp;建议赞赏。感谢

0 个答案:

没有答案