2

我正試圖在此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> 

幫助&的建議表示讚賞。謝謝

回答

0

如果您的報價中有可配置的兒童,您可以獲取可配置的父母,並檢查card_only屬性。這樣你就不需要關心簡單的孩子。

事情是這樣的:

$quoteItemsCollection = Mage::getSingleton('checkout/cart')->getQuote()->getItemsCollection(); 
foreach ($quoteItemsCollection as $quoteItem) { 
    $productType = $quoteItem->getProductType(); 
    // if productType is config and getCardOnly(), then $cardonly = true; 
+0

感謝您的回覆。我會在Observer.php中添加這個。請指教。謝謝 – AlphaOne

+0

@AlphaOne最新狀態?你解決了嗎? – clinical

0

這不應該發生getAllVisibleItems()。作爲this answer解釋說:

加載項集合,然後返回爲刪除未標記,並沒有父所有項目的數組(即你得到項目捆綁和配置的產品,但不是他們的相關兒童)。每個數組項目對應於購物車頁面中的顯示行。

我懷疑你使用的是像簡單配置的產品或更好配置的產品,改變了可配置的產品類型,使得簡單的產品的屬性顯示和使用(尤其是價格)的延伸和產品在購物車中實際上只是簡單的產品沒有父母

如果是這種情況,您必須檢查擴展的代碼以找出它在哪裏以及如何存儲有關可配置產品的信息。您也可以查看sales_flat_quote_item_option表,因爲這通常是存儲有關報價項的所有附加信息的位置。

+0

感謝您的回覆。是的,我正在使用簡單配置產品擴展。感謝您的見解。我會研究這一點。 – AlphaOne

相關問題