Dodaj kolumnę do Administratora> Sprzedaż> Siatka zamówień

Odpowiedzi:

20

Inchoo napisał świetny artykuł o rozszerzaniu siatki zamówień. A na blogu Atwix jest artykuł na temat dodawania kolumny z innej tabeli.

Wpis na blogu Inchoo zasadniczo rozszerza go o niestandardowe rozszerzenie. W przypadku, gdy nie jesteś zaznajomiony z pisaniem własnego rozszerzenia, sugeruję, abyś zrzucił łupy z samouczka Alan Storms lub z Magento 4U .

Będziesz przepisywać Mage_Adminhtml_Order_Gridklasę bloku, dodając kolumnę do _prepareColumnsmetody i rozszerzając _prepareCollectionmetodę o niestandardowe pole

Sander Mangel
źródło
7

Jest to 2-etapowy prosty proces. (np. chcę dodać adres e-mail i zamówić miasto w tej siatce zamówień).
Skopiuj najpierw ten plik lokalny do siebie w tym samym katalogu. app / code / core / Mage / Adminhtml / Block / Sales / Order / Grid.php

Krok 1: Dodaj następujący wiersz kodu w funkcji _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'
    ));

Krok 2: Dodaj następujący wiersz kodu w funkcji _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'));

Ogólne zapytanie będzie wyglądać następująco:

SELECT main_table. * sales_flat_order_address. emailAS customer_email, sales_flat_order_address. cityZ sales_flat_order_gridAS main_tableINNER JOIN sales_flat_order_addressON main_table.entity_id = sales_flat_order_address.parent_id WHERE (sales_flat_order_address.address_type = 'billing')

Zmodyfikuj kod zgodnie z potrzebami.
Mam nadzieję, że to pomaga.

Abhilash
źródło
1

Przepisy są takie wczoraj;)

Możesz to zrobić za pomocą zdarzeń. Zobacz poprzednią odpowiedź tutaj:

Dodaj kolumnę Firma do siatki administracyjnej klientów z Obserwatorem

który obejmuje również sposób dostosowania filtrów.

Po prostu musisz dostosować siatkę, na którą celujesz, w pierwszym kawałku kodu:

if ($event->getBlock() instanceof
                Mage_Adminhtml_Block_Newsletter_Subscriber_Grid 
            ) {
ProxiBlue
źródło