2013-05-06 51 views
2

我有一個銷售定製標誌的公司的Magento網站。我設置了自定義選項,以便客戶可以選擇他們所需的材料和尺寸。我的問題是我需要能夠根據所選材料和尺寸動態計算標誌的重量。我已經用javascript計算了重量,現在我正在嘗試使用checkout_product_add_after事件將其傳遞給Magento。根據所選定製選項的值設置Magento中簡單產品的自定義重量

我已經設置了一個名爲權重的自定義選項,它是一個文本輸入字段。我用javascript隱藏輸入字段並傳入計算的權重。我可以使用自定義模塊訪問重量,並使用setWeight()方法設置重量,但是當我檢查結帳時,重量尚未更新,運費也沒有變化。我試過在報價單和產品上設置重量,但都沒有成功。

這裏是我的Observer.php文件中的代碼:

<?php 

class XM_CustomWeight_Model_Observer { 

    public function set_custom_weight($observer) { 

    $event = $observer->getEvent(); 
$product = $event->getProduct(); 
$options = $product->getCustomOptions(); 
    $last = end($options); 
    $weight = $last->getValue(); 
$product->setWeight($weight); 
$product->save(); 

    } 
} 

有沒有人遇到這個問題,並找到一個好的解決辦法?感謝您的幫助!

回答

0

看看@Magento - Programmatically saved product not visible in backend

我想你可能需要設置店鋪ID爲管理員

Mage::app()->setCurrentStore(Mage::getModel('core/store')->load(Mage_Core_Model_App::ADMIN_STORE_ID)); 

你有沒有想想多個客戶買幾秒鐘內同一項目的可能性,第一人可能會/將會得到最後一個人的重量,或者如果客戶在結帳時更改了郵政編碼,並且需要重新計算運費。

我覺得你可以做的是創建一個自定義運費模塊(通過擴展目前的一個),然後添加一個自定義的權重給每個行項目,並使用此custom_weight幫助計算運費

看看@How to add custom fields for Order Line Items in magento

+0

設置商店ID爲管理確實工作!我沒有想到你提出的問題。如果我設置報價項目的重量而不是產品的重量,我會遇到同樣的問題嗎?使用發佈的爲訂單行項目添加自定義字段的解決方案,我假設我需要設置報價項目的權重而不是產品,對嗎?謝謝你的幫助! – johnny5 2013-05-06 15:44:40

+0

報價是按訂單計算的,而不是全球性的,因爲每個人都喜歡產品,所以你不應該有這個問題 – 2013-05-06 15:46:00

相關問題