Comment puis-je ajouter une colonne à la grille dans la section Admin sous Ventes> Commandes?
Comment puis-je ajouter une colonne à la grille dans la section Admin sous Ventes> Commandes?
Réponses:
Inchoo a écrit un excellent article sur l'extension de la grille de commande. Et sur le blog Atwix, il y a un article sur l'ajout d'une colonne à partir d'un tableau différent.
Le billet de blog Inchoo l'étend essentiellement avec une extension personnalisée. Dans le cas où vous n'êtes pas familier avec l'écriture de votre propre extension, je vous suggère de prendre un butin au didacticiel Alan Storms ou à celui de Magento 4U .
Vous allez réécrire la Mage_Adminhtml_Order_Grid
classe de blocs en ajoutant une colonne à la _prepareColumns
méthode et en étendant la _prepareCollection
méthode avec votre champ personnalisé
C'est un processus simple en 2 étapes. (par exemple, je veux ajouter l' adresse e-mail et la ville de commande dans cette grille de commande).
Copiez ce fichier principal dans votre répertoire local dans le même répertoire. app / code / core / Mage / Adminhtml / Block / Sales / Order / Grid.php
Étape 1: ajouter la ligne de code suivante dans la fonction _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'
));
Étape 2: ajouter la ligne de code suivante dans la fonction _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'));
La requête globale sera comme:
SELECT main_table
. *, sales_flat_order_address
. email
AS customer_email
, sales_flat_order_address
. city
DEPUIS sales_flat_order_grid
COMME main_table
INNER JOIN sales_flat_order_address
ON main_table.entity_id = sales_flat_order_address.parent_id WHERE (sales_flat_order_address.address_type = 'billing')
Modifiez le code selon vos besoins.
J'espère que cela pourra aider.
Vous pouvez utiliser ma réponse d'un article précédent sur Ajouter une colonne à une grille (observateur) - La colonne 'store_id' dans la clause where est un problème ambigu pour ajouter des colonnes supplémentaires à la grille de commande client via un observateur.
Les réécritures sont tellement hier;)
Vous pouvez le faire en utilisant des événements. Voir une réponse précédente ici:
Ajouter la colonne Société à la grille d'administration des clients avec Observer
qui comprend également un moyen d'ajuster les filtres.
Vous avez simplement besoin d'ajuster la grille que vous ciblez dans le premier bit de code:
if ($event->getBlock() instanceof
Mage_Adminhtml_Block_Newsletter_Subscriber_Grid
) {