Magento 1.7.0.0 の注文グリッドにカスタム列を追加する際にこの問題が発生しました。ここで手を差し伸べてくれることを願っていました。基本的に、私はこのガイドhttp://www.atwix.com/magento/customize-orders-grid/に従って、ローカル バージョンを/app/code/core/Mage/Adminhtml/Block/Sales/Order/Grid.php
作成し、必要な列を追加するためにいくつかの変更を加える必要があると説明しました。上記のガイドに従うことで、関数を編集して_prepareCollection()
この行を追加する必要があると言われました(配列で抽出するフィールドを指定します)
$collection->getSelect()->join('magento_sales_flat_order_address', 'main_table.entity_id = magento_sales_flat_order_address.parent_id',array('telephone', 'email'));
前
return parent::_prepareCollection();
そして、次の_prepareColumns()
ように 2 つの列を追加します。
$this->addColumn('telephone', array(
'header' => Mage::helper('sales')->__('Telephone'),
'index' => 'telephone',
));
$this->addColumn('email', array(
'header' => Mage::helper('sales')->__('Email'),
'index' => 'email',
));
そして、それはどうやらそれでした...または、そうではないかもしれません。それを行うと、次のエラーがスローされるためです。
Item (Mage_Sales_Model_Order) with the same id "XXXX" already exist
下のコメントによると、解決策は_prepareCollection
before に次の行を追加することでした$this->setCollection($collection)
:
$collection->getSelect()->group('main_table.entity_id');
行を追加した後、Order Grid には希望どおりに Email 列と Phone 列が表示されますが、ページネーションが機能しなくなり、最新の 20 のみが表示され、 「Pages 1 out of 1」、「2 レコード」と表示されます。見つかった」を上に表示します。なぜこれが起こっているのか理解できないようで、周りにあるすべてのコメントは上記の最後の指示を超えていません。この問題の原因は何でしょうか?
このモデルの他の変更を行っていないため、複製できると思います。