2013-08-19 2 views
0

У меня есть этот код в моем приложении MagentoДетали продукта в 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 им не в ситуации, чтобы сделать это

+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());, чтобы проверить что-то, но это добавляет дополнительный запрос к mysql для каждого элемента в цикле. Или я рекомендую редактировать sales xml -> Mage> Sales> и т. Д. Config.xml (в локальном модуле). Вы должны добавить к узлам sales_convert_quote_item или sales_convert_order_item атрибуты, которые вы хотите скопировать из продукта в элемент. В вашем случае это будет узел sales_convert_order_item, так как вы имеете дело с заказом.