Я создал пользовательский модуль, используя «Renderer» в Order Grid of Magento.
Я сделал файл с именем app / code / local / Od / Ordergridproduct / Block / Adminhtml / Renderer / ProductDetail.php
и вот мой код:
<?php
class Od_Ordergridproduct_Block_Adminhtml_Renderer_ProductDetail extends Mage_Adminhtml_Block_Widget_Grid_Column_Renderer_Abstract
{
public function render(Varien_Object $row)
{
$order=Mage::getModel('sales/order')->load($row['entity_id']);
$str="";
$i=1;
foreach($order->getAllItems() as $_order){
$str.="<b>".$_order->getProduct()->getName()."</b>";
$str.= "<br><b>Product Code:</b><br>".$_order->getSku();
if($i!=count($order->getAllItems()))
$str.=", ";
$i++;
}
$_product = Mage::getModel('catalog/product')->load($row['entity_id']);
$color_att = $_product->getAttributeText('color'));
$size_att = $_product->getAttributeText('size'));
$package_att = $_product->getAttributeText('package'));
$str.= "<br><b>Product Color:</b><br>".$color_att;
$str.= "<br><b>Product Package:</b><br>".$color_package;
unset($order);
return $str;
}
}
У меня есть название продукта, но мне нужно отобразить атрибуты продукта (цвет, марка, размер, упаковка) в том же столбце сетки. Я попытался добавить строки ниже в моем коде
$_product = Mage::getModel('catalog/product')->load($row['entity_id']);
$color_att = $_product->getAttributeText('color'));
$size_att = $_product->getAttributeText('size'));
$package_att = $_product->getAttributeText('package'));
$str.= "<br><b>Product Color:</b><br>".$color_att;
$str.= "<br><b>Product Package:</b><br>".$color_package;
но ничего не мог понять. Кто-нибудь может мне помочь? Надеемся на положительный ответ.
$ _product = Mage :: getModel (‘catalog / product’) -> load ($ row [‘entity_id’]);
это неправильный код b / z здесь $ row [‘entity_id’] это идентификатор заказа, а не идентификатор продукта
public function render(Varien_Object $row)
{
$order=Mage::getModel('sales/order')->load($row['entity_id']);
$str="";
$i=1;
foreach($order->getAllItems() as $_order){
$str.="<b>".$_order->getProduct()->getName()."</b>";
$str.= "<br><b>Product Code:</b><br>".$_order->getSku();
$_product = Mage::getModel('catalog/product')->load($_order->getProductId());
$color_att = $_product->getAttributeText('color'));
$size_att = $_product->getAttributeText('size'));
$package_att = $_product->getAttributeText('package'));
$str.= "<br><b>Product Color:</b><br>".$color_att;
$str.= "<br><b>Product Package:</b><br>".$color_package;
if($i!=count($order->getAllItems()))
$str.=", ";
$i++;
}
unset($order);
return $str;
}
Я получил свой ответ. Теперь я могу отображать атрибуты продукта цвет, размер, пакет в сетке заказов на продажу. Вот код:
public function render(Varien_Object $row)
{
$order = Mage::getModel('sales/order')->load($row['entity_id']);
$_items = $order->getItemsCollection();
$str="";
$i=1;
foreach($_items as $item){
if ($item->getParentItem()) continue;
$str.="<b>".$item->getName()."</b><br>";
$str.= "<br><b>Product Code:</b><br>".$item->getSku()."<br>";
}
foreach($order->getAllItems() as $_order){
$_product = Mage::getModel('catalog/product')->load($_order->getProductId());
$size_att = $_product->getAttributeText('size');
$package_att = $_product->getAttributeText('package');
if(!empty($size_att))
$str.= "<br><b>Package Contains:</b><br>".$package_att."<br>";
if(!empty($package_att))
$str.= "<br><b>Size:</b><br>".$size_att."<br>";
}
$items = $order->getAllItems();
$block = Mage::app()->getLayout()->createBlock('sales/order_item_renderer_default');
foreach ($items as $item) {
$block->setItem($item);
$_options = $block->getItemOptions();
foreach ($_options as $option) {
$label = $option['label'];
$textValue = $option['print_value'];
if(!empty($textValue))
$str.= "<br><b>Color:</b><br>".$textValue."<br>";
}
}
unset($order);
return $str;
}