簡體   English   中英

如何在Magento的購物車結帳時使用PHP編輯產品屬性?

[英]How do I edit a product attribute using PHP during a cart checkout in Magento?

我有兩個關於自定義Magento商店的問題。

當有人購買可下載產品時,我想生成許可證代碼並將其包含在發票中。

我在產品的默認屬性集中添加了一個名為“license_code”的產品屬性,我希望在客戶結賬時使用php設置其值。

請注意哪些事件可以讓我在購買之后但在創建發票之前訪問購物車中的產品?

我還需要知道在該事件期間使用什么腳本來設置產品的屬性值。

謝謝您的幫助!

可能的事件sales_order_place_beforesales_convert_quote_*

您無法保存“license_code”屬性,因為這會影響所有產品,產品在訂購時不會存儲它的值。 相反,更好的想法是操縱訂單商品的選項。

function salesConvertQuoteItemToOrderItem(Varien_Event_Observer $observer)
{
    $orderItem = $observer->getOrderItem();
    $options = $orderItem->getProductOptions();
    $options['licence_code'] = YOUR-DOWNLOADABLE-CODE-HERE;
    $orderItem->setProductOptions($options);
}

稍后檢索代碼與getProductOptions()基本上是相同的過程,訂單項對象已經在訂單視圖頁面上使用,因此很容易在主題中查找和使用。

好吧,我想我弄清楚了。

我按如下方式設置了我的事件觀察者:

<events>
    <sales_order_item_save_before>
        <observers>
            <downloadable_observer>
                <class>Licensing_Catalog_Model_Observer</class>
                <method>generate_licenses</method>
            </downloadable_observer>
        </observers>
    </sales_order_item_save_before>
</events>

然后我的觀察功能如下:

public function generate_licenses($observer)
{
    $orderItem = $observer->getEvent()->getItem();
    $options = $orderItem->getProductOptions();
    $options['licence_code'] = 'YOUR-DOWNLOADABLE-CODE-HERE';
    $orderItem->setProductOptions($options);

  return $this;
}

非常感謝你的幫助,clockworkgeek!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM