1

偉大な開発者の皆様、こんにちは。

受注グリッドをカスタマイズしたい。現在、製品がカートに追加されるたびに、いくつかの製品オプションが追加されます。管理パネルの注文詳細ページに表示されます。しかし、私はそれを販売注文グリッドに表示したいと考えています。

sales_flat_order_item テーブルから製品オプションを表示する結合​​クエリを作成した場合、読み取り不能なシリアル化された形式で php 配列文字列が表示されます。json文字列のように見えます。

過去 2 日間、この問題に取り組んできましたが、これに対する適切な解決策はありません。

どうぞよろしくお願いいたします。

4

2 に答える 2

2

カスタム モジュールを作成します...続きを読むマジェントオーダーグリッド/

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 に答える