1

你好伟大的开发者,

我想自定义销售订单网格。目前,当产品添加到购物车时,会添加几个产品选项。它们显示在管理面板的订单详细信息页面中。但我想让它显示在销售订单网格中。

如果我进行连接查询以显示 sales_flat_order_item 表中的产品选项,它会以不可读的序列化形式显示 php 数组字符串。看起来像 json 字符串。

从过去 2 天开始,我一直在研究这个问题,但没有得到任何适当的解决方案。

您的帮助将不胜感激。

4

2 回答 2

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;


     }

 } 
于 2012-10-12T14:54:50.457 回答
0

我按照代码 @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("&lt;", "&gt;"), 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;

}
于 2013-11-29T14:25:54.493 回答