你好伟大的开发者,
我想自定义销售订单网格。目前,当产品添加到购物车时,会添加几个产品选项。它们显示在管理面板的订单详细信息页面中。但我想让它显示在销售订单网格中。
如果我进行连接查询以显示 sales_flat_order_item 表中的产品选项,它会以不可读的序列化形式显示 php 数组字符串。看起来像 json 字符串。
从过去 2 天开始,我一直在研究这个问题,但没有得到任何适当的解决方案。
您的帮助将不胜感激。
你好伟大的开发者,
我想自定义销售订单网格。目前,当产品添加到购物车时,会添加几个产品选项。它们显示在管理面板的订单详细信息页面中。但我想让它显示在销售订单网格中。
如果我进行连接查询以显示 sales_flat_order_item 表中的产品选项,它会以不可读的序列化形式显示 php 数组字符串。看起来像 json 字符串。
从过去 2 天开始,我一直在研究这个问题,但没有得到任何适当的解决方案。
您的帮助将不胜感激。
创建自定义模块...阅读更多http://tutorials.slcdev.com/2012/04/magento-extend-order-grid/或http://inhoo.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;
}
}
我按照代码 @RS 对渲染器进行了以下修改,使其更加用户友好:
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;
}