在我的magento项目中,在我的帐户>我的订单(登录客户)下,我可以查看订单详细信息以及我订购的产品.现在,每个订购的产品,我想不过来检索特定属性,从我的理解,一开始的代码片段sales/order/items/renderer/default.phtml是$_item = $this->getItem();是订单本身,所以如果我使用这样的$_item->getId(),我要出货id而不是产品.
我尝试过研究并最终得到这个代码:
$orders = Mage::getModel('sales/order')->load($_item->getId());
foreach($orders as $order):
$is = $order->getAllItems();
foreach($is as $i):
echo $i->getProductId();
endforeach;
endforeach;
Run Code Online (Sandbox Code Playgroud)
希望我可以使用产品ID来获取所述产品的其他属性,但是我在这段代码中遇到错误而无法确定错误是什么.我也尝试过这样的事情:
$_productCollection = Mage::getResourceModel('reports/product_collection')
->addAttributeToSelect('*')
->addAttributeToFilter('name', $name);
foreach($_productCollection as $_product):
$_temp = $_product->getResource()->getAttribute('name_en')->getFrontend()->getValue($_product);
endforeach;
Run Code Online (Sandbox Code Playgroud)
但是当我尝试检查产品系列中的项目数时,我一直变为0.如何在此页面中检索产品的自定义属性?
Set*_*aki 23
这应该更好:
$orderIncrementId = '100000010';
$order = Mage::getModel('sales/order')->loadByIncrementId($orderIncrementId);
$items = $order->getAllVisibleItems();
foreach($items as $i):
echo $i->getProductId();
endforeach;
Run Code Online (Sandbox Code Playgroud)
请查看更多信息:http://www.magentocommerce.com/boards/viewthread/18629/
use*_*772 19
虽然电气耶稣给出的答案将起作用,但它包含了在循环中加载产品的潜在性能问题.
正确的实现将首先获取已订购产品的ID,然后立即加载所有这些产品.假设您已经加载了订单:
$orderedItems = $order->getAllVisibleItems();
$orderedProductIds = [];
foreach ($orderedItems as $item) {
$orderedProductIds[] = $item->getData('product_id');
}
$productCollection = Mage::getModel('catalog/product')->getCollection();
$productCollection->addAttributeToSelect('*');
$productCollection->addIdFilter($orderedProductIds);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
51773 次 |
| 最近记录: |