2

ここにある販売注文グリッドに配送方法 (標準、優先、速達) の新しい列を追加しようとしています。

/home/html/app/code/core/Mage/Adminhtml/Block/Sales/Order/Grid.php

私はたくさんの方法を調査しましたが、それは古いバージョンのmagento用であるか、単に機能しません。私が理解していることから、次のことを行う必要があります。

  1. _prepareCollection() を編集
  2. 次のように _prepareColumns() にケースを追加します。

$this->addColumn('shipping_description', array( 'header' => Mage::helper('sales')->__('Shipping Method'), 'index' => 'shipping_description', ));

誰かがこれを理解するのを手伝ってくれますか?

4

3 に答える 3

2

出荷情報を販売注文グリッドに追加するには、Mage_Adminhtml_Block_Sales_Order_Gridクラスをオーバーライドする必要があります。このために、独自のモジュールを作成します。=>ブロックセクションのconfig.xmlで、
xmlコードの下に貼り付けます

<globals>
    <block>
        <adminhtml>
            <rewrite>
                <sales_order_grid>Yourpackage_Yourmodule_Block_Sales_Order_Grid</sales_order_grid>
            </rewrite>
        </adminhtml>
    </block>
<globals>

次に、クラスYourpackage_Yourmodule_Block_Sales_Order_Gridを定義し、package_name / module_name / Block / Sales / Order/Grid.phpに配置します。

class Yourpackage_Yourmodule_Block_Sales_Order_Grid extends Mage_Adminhtml_Block_Sales_Order_Grid
{
protected function _prepareCollection()
{

    $collection = Mage::getResourceModel($this->_getCollectionClass());
    $collection->getSelect()->
    joinLeft('sales_flat_order', 'main_table.entity_id=sales_flat_order.entity_id', array("shipping_desc"=>"shipping_description"));

    $this->setCollection($collection);
    return $this;
}

protected function _prepareColumns()
{
    $this->addColumnAfter('shipping_desc', array(
        'header'=> Mage::helper('sales')->__('Shipping Descr #'),
        'width' => '80px',
        'type'  => 'text',
        'index' => 'shipping_desc',
    ),"real_order_id");
    return parent::_prepareColumns();

}

}
于 2012-11-26T10:58:00.447 に答える
0

私はまだ自分で良い解決策を探しています。しかし、アプローチとして、Magento1.7に基づいてこれまでの知識を提供したいと思います

  • setCollectionの代わりにの使用を好みます_prepareCollection()。使用時のフィルタリング等の問題が少ないようですsetCollection
  • 完璧な属性は、これまでのところ非常に近いです。Shipping_descriptionはにありますsales_order_flat。残念ながら、デフォルトのコレクションはに基づいていますsales_flat_order_grid。考えられる解決策の1つは、上書きしてこれを切り替えることです。_getCollectionClass

    protected function _getCollectionClass()
    {
        //return 'sales/order_grid_collection';
        return 'sales/order_collection';
    }
    

    これは他の問題につながると言うことが重要です。たとえば、配送名と請求名は、から情報を取得したため空ですsales_flat_order_grid。私たちはそれらを得ることができましたsales_flat_order_addressが、これが良い解決策から遠く離れているかどうかはわかりません...

  • 別のアプローチは、と参加することsales_order_flatです。このようにして、すべての情報を保持し、sales_flat_order_gridを取得することもできますshipping_method。ここでの問題は、フィルタリング中に発生するcount(*)ステートメントです。エラーはあいまいなものincrement_idです。現時点では、increment_idテーブルと組み合わせずに使用するべきではないため、Magentoのバグだと思います。

  • 3番目の方法を忘れないでください:拡張saled_flat_order_gridして追加することもできshipping_methodますが、それは厳しい方法になると思います。app/code/core銃を手に持って後ろに立っている人がいない限り、テーブルに触れたり、テーブルに触れたりしないでください;-)

これまでのところ、どちらに行くかはまだ決まっていません。おそらく、私がここにリストしなかった別の(より良い)方法がありますか?

于 2012-12-07T12:40:09.817 に答える