2011-03-31 53 views

回答

2

如果提出問題「Magento的方式」,當你說「爲了完成」,這意味着其狀態爲「完成」。已在前端網站上訂購具有「完整」狀態的訂單,然後開具發票並從管理員發貨。

我的答案是基於這個術語,從而給你線索一旦訂單已經完成改變產品屬性(再次,在Magento的方式)。

編碼爲你整個事情是不是很好的幫助,是非常長的,所以這裏的路徑(在我看來):)

  • 創建一個模塊 (谷歌是你的朋友爲)

  • 連接觀察員此模塊,使其遵守事件「sales_order_save_after」 (谷歌是你的朋友爲)

  • 在觀察者文件/方法,檢索ŧ他下令其狀態

     $order = $observer->getEvent()->getOrder(); 
         $orderStatus = $order->getStatus(); 
    
  • 如果訂單狀態是「已完成」,創建一個foreach,更新你想要的屬性對所有項目

這將給予相同的屬性值的所有產品。在本例中,完成訂單的所有產品將被重命名爲「已售出產品」。

  if ($orderStatus == 'complete') { 
       $items = $order->getAllItems(); 
       foreach ($items as $item) { 
        $productsToUpdate[] = $item->getProductId(); 
       } 
       $theAttributeToUpdate = 'name'; 
       $theAttributeValue = 'Sold Product'; 
       Mage::getSingleton('catalog/product_action')->updateAttributes($productsToUpdate, array($theAttributeToUpdate => $theAttributeValue), 0); 
      } 

這應該足以讓你走上正軌。

+0

最後我採取了一些不同的方法,並且我吸引了以下事件:checkout_(onepage | multishipping)_controller_success_action。謝謝 – JohnT 2011-03-31 22:21:47

+0

好吧!所以你需要改變屬性,一旦訂單放在前端,而不是在後端「完成」:)很高興我可以提供幫助。 – 2011-04-01 01:21:38

+0

是的,當產品銷售時,我需要改變一個特殊的狀態,不管它是「完整」還是不是。 – JohnT 2011-04-01 07:45:58

0

嘗試掛鉤到sales_order_place_afterHere是一個關於如何在Magento中捕捉事件的好教程。