Ce tutorial magento très simple, permet de modifier l’ordre des colonnes de la grille de produits / commandes ou factures du backoffice à partir d’un attribut afin de trouver plus rapidement vos produits / commandes ou factures (si vous avez par exemple un identifiant supplémentaire).magento

Dans ce cas-ci nous allons prendre l’exemple de la grille des commandes. Le module que nous allons utiliser ici s’appellera Ynote.Watch Full Movie Online Streaming Online and Download

Tout d’abord nous allons ajouter un fichier à notre module :
app\code\local\Ynote\Module\Block\Adminhtml\Sales\Order\Grid.php

Son nom doit respecter les conventions de nommage, ceci afin de permettre à Magento de trouver votre fichier dans l’arborescence.

Voici donc ma nouvelle classe :

class Ynote_Module_Block_Adminhtml_Sales_Order_Grid extends Mage_Adminhtml_Block_Sales_Order_Grid  {
...
}

Je vais chercher les deux fonctions que nous allons modifier dans la classe dont j’hérite Mage_Adminhtml_Block_Sales_Order_Grid dont on retrouve facilement la trace grâce à son nom (app\code\core\Mage\Adminhtml\Block\Sales\Order\Grid.php).

Je copie les deux fonctions _prepareCollection() et _prepareColumns() dans ma nouvelle classe.

Dans _prepareCollection() je modifie le code suivant:

$collection->addAttributeToSelect('price');
$collection->addAttributeToSelect('status');
$collection->addAttributeToSelect('visibility');

// la référence à mon nouvel attribut
$collection->addAttributeToSelect(‘mon_nouvel_attribut’);

Et je remplace parent::_prepareCollection(); par Mage_Adminhtml_Block_Widget_Grid::_prepareCollection(); sinon le code de la classe dont on hérite va écraser les modifications que l’on vient de faire, ce que l’on veut pour éviter ce comportement c’est d’hériter de la classe “grand-parente”.

Ensuite dans la fonction _prepareColumns() j’ajoute très simplement ma colonne à la grille:

$this->addColumn('mon_nouvel_attribut',
array(
'header'=> Mage::helper('catalog')->__('Mon nouvel attribut'),
'width' => '50px',
'index' => 'mon_nouvel_attribut',
));

Ensuite il n’y a plus qu’à expliquer à Magento que notre nouvelle classe remplace l’ancienne et on est bon. Dans etc/config.xml de notre module, j’ajoute :

<global>
...
<blocks>
<adminhtml>
<rewrite>
<sales_order_grid>
Ynote_Module_Block_Adminhtml_Sales_Order_Grid
</sales_order_grid>
</rewrite>
<adminhtml>
<blocks>
...
</global>

Télécharger le module de démonstration