2013-08-19 90 views
0

我在Magento的應用程序有這樣的代碼產品詳情

<?php 
$order_id = Mage::getSingleton('checkout/session')->getLastRealOrderId(); 
$order_details = Mage::getModel('sales/order')->loadByIncrementId($order_id); 

foreach ($order_details->getAllItems() as $item) { 

//here i know we can get item name as $item->getName(), sku as $item->getSku() 
//but how do we get the following details 
//1.category name,2.store,3.tax,city,country,state 

<?php } ?> 

我知道通過簡單的print_r($order_details->getAllItems())將得到陣列list.but IM在任何情況下做到這一點

+0

你試過用魔法吸氣劑嗎? $ item-> getCountry()例如,沒有工作? – VladH

+1

或者只是'$ details = $ order_details-> getAllItems(); $ items = $ details-> getData(); print_r($ items);' – VladH

回答

1

您需要加載完整的產品模型來訪問這些數據。

您正在加載的集合不是產品,而是訂購商品的集合,它與最少的數據相關聯。您需要通過從訂單項目獲取產品來加載完整的產品型號。

試試這個:

<?php 
$order_id = Mage::getSingleton('checkout/session')->getLastRealOrderId(); 
$order_details = Mage::getModel('sales/order')->loadByIncrementId($order_id); 
?> 
<?php foreach ($order_details->getAllItems() as $item): ?> 
    <?php $product = Mage::getModel('catalog/product')->load($item->getProductId()) ?> 
    <?php echo $product->getName() ?> 
    <?php // now you have the full product model/data loaded ?> 
<?php endforeach ?> 
+0

請不要在循環中加載產品。 –

+0

當然,這增加了更多的資源使用,它不是非常有效,但它說明了我正在創造的點 – Andrew

2

這個項目並不像產品作爲一樣,他們不具備的所有屬性。您可以使用Mage::getModel('catalog/product')->load($item->getProductId());快速方式來測試某些內容,但是這會爲循環中的每個項目添加一個額外的查詢。或者我建議編輯sales xml - > Mage> Sales> etc> config.xml(在本地模塊中)。您應該向節點sales_convert_quote_item或sales_convert_order_item添加要從產品複製到產品的屬性。在你的情況下,它將是sales_convert_order_item節點,因爲你正在處理訂單。

相關問題