在销售订单网格中显示产品选项(加售和免费赠品)

时间:2012-10-12 05:44:37

标签: magento

Hello Great Developers,

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

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

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

我们将非常感谢您的帮助。

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("&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;

}