Добавить столбец в Admin> Продажи> Сетка заказов

Ответы:

20

Inchoo написал отличную статью о расширении сетки заказов. А в блоге Atwix есть статья о добавлении столбца из другой таблицы.

Сообщение в блоге Inchoo в основном расширяет его пользовательским расширением. В случае, если вы не знакомы с написанием своего собственного расширения, я бы посоветовал вам взять лут из учебника Alan Storms или из Magento 4U .

Вы будете переписывать Mage_Adminhtml_Order_Gridкласс блока, добавляя столбец к _prepareColumnsметоду и расширяя _prepareCollectionметод своим настраиваемым полем.

Сандер Мангель
источник
7

2 простых шага. (например, я хочу добавить адрес электронной почты и город заказа в этой сетке заказов).
Скопируйте этот основной файл вам сначала локально в том же каталоге. приложение / код / ядро / 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'));

Общий запрос будет выглядеть так:

ВЫБРАТЬ main_table. * sales_flat_order_address. emailAS customer_email, sales_flat_order_address. cityОТ sales_flat_order_gridКАК main_tableВНУТРЕННЕГО СОЕДИНЕНИЯ sales_flat_order_addressmain_table.entity_id = sales_flat_order_address.parent_id WHERE (sales_flat_order_address.address_type = 'billing')

Измените код в соответствии с вашими потребностями.
Надеюсь, это поможет.

Abhilash
источник
4

Вы можете использовать мой ответ из предыдущего поста о добавлении столбца в сетку (наблюдатель) - столбец «store_id», где предложение является неоднозначным вопросом, чтобы добавить дополнительные столбцы в сетку заказа клиента через наблюдателя.

Владимир Керхофф
источник
1

Переписывает так вчера;)

Вы можете сделать это с помощью событий. Смотрите предыдущий ответ здесь:

Добавьте столбец «Компания» в сетку «Администрирование клиентов» с помощью обозревателя

который также включает в себя способ настройки фильтров.

Вам просто нужно настроить сетку, на которую вы нацеливаетесь в первом бите кода:

if ($event->getBlock() instanceof
                Mage_Adminhtml_Block_Newsletter_Subscriber_Grid 
            ) {
ProxiBlue
источник