Hello Great Developers,
我想自定义销售订单网格。 当产品添加到购物车时,目前会添加几个产品选项。 它们显示在管理面板的“订单详细信息”页面中。 但我想让它显示在销售订单网格中。
如果我做了一个连接查询来显示sales_flat_order_item表中的产品选项,它会以序列化形式显示php数组字符串,这是不可读的。看起来像json string。
过去2天我一直在研究这个问题,但没有得到任何适当的解决方案。
我们将非常感谢您的帮助。
答案 0 :(得分:2)
创建自定义模块... 阅读更多http://tutorials.slcdev.com/2012/04/magento-extend-order-grid/或http://inchoo.net/ecommerce/magento/how-to-extend-magento-order-grid/
在app / code / local / RWS / OrderGridOptions / etc / config.xml
中<global>
<blocks>
<adminhtml>
<rewrite>
<sales_order_grid>RWS_OrderGridOptions_Block_Adminhtml_Sales_Order_Grid</sales_order_grid>
</rewrite>
</adminhtml>
</blocks>
</global>
在app / code / local / RWS / OrderGridOptions / Block / Adminhtml / Sales / Order / Grid.php中创建
(参见app / code / core / Mage / Adminhtml / Block / Sales / Order / Grid.php)
创建函数_prepareColumns()
$this->addColumn('product_options', array(
'header' => Mage::helper('order')->__('Options'),
'width' => '150',
'index' => 'product_options'
'renderer' = new RWS_OrderGridOptions_Block_Adminhtml_Renderer_Data() // added this line
));
了解更多@ http://www.magentocommerce.com/boards/viewthread/192232/#t239222
在app / code / local / RWS / OrderGridOptions / Block / Adminhtml / Renderer / Data.php
class RWS_OrderGridOptions_Block_Adminhtml_Renderer_Data extends Mage_Adminhtml_Block_Widget_Grid_Column_Renderer_Action
{
public function render(Varien_Object $row)
{
return $this->_getValue($row);
}
public function _getValue(Varien_Object $row)
{
$val = $row->getData($this->getColumn()->getIndex()); // row value
$array = unserialize($val);
//loop thru the $array and create a format string
//
$format_val = $array['xyx'] . ' ' . $array['abc'];
return $format_val;
}
}
答案 1 :(得分:0)
我按照代码@ R.S s对渲染器进行了以下修改,使用户友好:
public function render(Varien_Object $row)
{
return $this->_getValue($row);
}
public function _getValue(Varien_Object $row)
{
$codeIndex = $row->getData($this->getColumn()->getIndex()); // row value
$prodOpUns = unserialize($codeIndex);
$dataOpt = $prodOpUns['options'];
$returnHtml = '<dl class="item-options">';
for ($i=0; $i<count($dataOpt); $i++){
$value = str_replace(array("<", ">"), array("<", ">"), htmlspecialchars($dataOpt[$i]['print_value'], ENT_COMPAT, "UTF-8", false));
$returnHtml .= '<dt>'.strtolower($dataOpt[$i]['label']) .'</dt>' . '<dd>' . $value . '</dd>';
}
$returnHtml .= '</dl>';
return $returnHtml;
}