回答:
Inchooは、注文グリッドの拡張に関する素晴らしい記事を書きました。また、Atwixブログには、別のテーブルから列を追加する方法に関する記事があります。
Inchooブログの投稿は、基本的にカスタム拡張機能で拡張しています。独自の拡張機能の作成に慣れていない場合は、Alan StormsチュートリアルまたはMagento 4Uのチュートリアルで略奪することをお勧めします。
Mage_Adminhtml_Order_Grid
ブロッククラスを書き直して、_prepareColumns
メソッドに列を追加_prepareCollection
し、カスタムフィールドでメソッドを拡張します。
その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
. email
AS customer_email
、sales_flat_order_address
。city
FROM sales_flat_order_grid
AS main_table
INNER JOINのsales_flat_order_address
ON main_table.entity_id = sales_flat_order_address.parent_id(sales_flat_order_address.address_type = '課金')
必要に応じてコードを変更します。
それが役に立てば幸いです。
グリッドへの列の追加(オブザーバー)に関する以前の投稿からの私の回答を使用できます -where句の列 'store_id'は曖昧な問題であり、オブザーバーを介してSales Orderグリッドに追加の列を追加します。
昨日の書き換えはとてもそうです;)
イベントを使用してこれを行うことができます。以前の回答はこちらをご覧ください:
フィルタを調整する方法も含まれています。
コードの最初のビットでターゲットとするグリッドを調整するだけです。
if ($event->getBlock() instanceof
Mage_Adminhtml_Block_Newsletter_Subscriber_Grid
) {