管理者>販売>注文グリッドに列を追加


回答:


20

Inchooは、注文グリッドの拡張に関する素晴らしい記事を書きました。また、Atwixブログには、別のテーブルから列を追加する方法に関する記事があります。

Inchooブログの投稿は、基本的にカスタム拡張機能で拡張しています。独自の拡張機能の作成に慣れていない場合は、Alan StormsチュートリアルまたはMagento 4Uのチュートリアルで略奪することをお勧めします。

Mage_Adminhtml_Order_Gridブロッククラスを書き直して、_prepareColumnsメソッドに列を追加_prepareCollectionし、カスタムフィールドでメソッドを拡張します。


7

その2ステップのシンプルなプロセス。(たとえば、この注文グリッドにメールアドレスと注文都市を追加したい場合)。
最初にこのコアファイルをローカルの同じディレクトリにコピーします。app / code / core / Mage / Adminhtml / Block / Sales / Order / Grid.php

ステップ1:関数_prepareColumns()に次のコード行を追加します

$this->addColumn('email', array(
        'header'    => Mage::helper('catalog')->__('Customer Email'),
        'index'     => 'email',
        'type' => 'text'
    ));
$this->addColumn('city', array(
        'header'    => Mage::helper('catalog')->__('Order From City'),
        'index'     => 'city',
        'type' => 'text'
    ));

ステップ2:関数_prepareCollection()に次のコード行を追加します

$collection->getSelect()->join('sales_flat_order_address', 'main_table.entity_id = sales_flat_order_address.parent_id' ,array('email'=> 'email', 'city'=> 'city' ));
$collection->addFieldToFilter('sales_flat_order_address.address_type', array('eq' => 'billing'));

全体的なクエリは次のようになります。

SELECT main_table。* 、sales_flat_order_address. emailAS customer_emailsales_flat_order_addresscityFROM sales_flat_order_gridAS main_tableINNER JOINのsales_flat_order_addressON main_table.entity_id = sales_flat_order_address.parent_id(sales_flat_order_address.address_type = '課金')

必要に応じてコードを変更します。
それが役に立てば幸いです。



1

昨日の書き換えはとてもそうです;)

イベントを使用してこれを行うことができます。以前の回答はこちらをご覧ください:

オブザーバーを使用して顧客管理グリッドに会社列を追加

フィルタを調整する方法も含まれています。

コードの最初のビットでターゲットとするグリッドを調整するだけです。

if ($event->getBlock() instanceof
                Mage_Adminhtml_Block_Newsletter_Subscriber_Grid 
            ) {
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.