在magento checkout成功页面上显示属性(制造,尺寸,颜色)

时间:2014-04-22 04:32:19

标签: php magento

实际上我这样做是为了在magento checkout成功页面上检索我的订单详情

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

             <tr> 
                <th><?php echo $this->__('Item Description') ?></th>
                <th><?php echo $this->__('Manufacture') ?></th>
                <th><?php echo $this->__('Color') ?></th>
                <th><?php echo $this->__('Size') ?></th>
                <th><?php echo $this->__('Qty') ?></th>
                <th><?php echo $this->__('Unit Price') ?></th>
            </tr>      
        <?php foreach($order_details->getAllVisibleItems() as $item): ?> 
            <tr>
                <td><?php echo $item->getName() ?></td>
                <td><?php echo $item->getManufacture() ?> </td>
                <td><?php echo $item->getSize() ?> </td>
                <td><?php echo $item->getColor() ?></td>
                <td><?php echo round($item->getQtyOrdered(), 0) ?></td>
                <td><?php echo Mage::helper("core")->currency($item->getPrice()) ?></td>
            </tr>
        <?php endforeach ?> 

        <?php echo "<br>" . $shipping_address_data['country_name']; ?>

除尺寸,颜色,制造和国家名称(未显示)外,一切正常。

实际上代码有什么问题,有人有建议吗?

由于

2 个答案:

答案 0 :(得分:1)

$ item不是give whole product dat a,它是如何订购p roduct item并且它产生一些产品名称,数量等。

如果您想获得产品,则需要按产品ID加载产品。

     $_product = Mage::getModel('catalog/product')->loadByAttribute('sku',$item->getSku());
       echo $_product->getManufacture() ;
        echo  $_product->getSize(); //size optionid
        echo  $_product->getColor(); //color otion id
echo $_product->getAttributeText('color');
echo $_product->getAttributeText('size'); // size optionlabel

答案 1 :(得分:0)

使用getAllItems而不是getAllVisibleItems

 <?php 
      foreach($order_details->getAllItems () as $item):
        echo "<pre>";print_r($item->getData());die;
      endforeach;
 ?> 

打印结果并检查您是否获得属性值