magento中的产品详细信息

时间:2013-08-19 06:45:09

标签: php magento

我的magento app中有这段代码

<?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())即可获得数组列表。但我不能在这种情况下执行此操作

2 个答案:

答案 0 :(得分:2)

此商品与商品不同,但没有所有商品。您可以使用Mage::getModel('catalog/product')->load($item->getProductId());快速方式来测试某些内容,但这会为循环中的每个项目向mysql添加额外的查询。或者我建议编辑sales xml - &gt;法师&gt;销售&gt;等等&gt; config.xml(在本地模块中)。您应该向节点sales_convert_quote_item或sales_convert_order_item添加要从产品到项目复制的属性。在您的情况下,它将是sales_convert_order_item节点,因为您正在处理订单。

答案 1 :(得分: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  ?>