Here, how to add new action in grid like ‘Edit’ link at admin grid.
On this example, we will add a “schedule” action in product admin grid.
We will overrite this class /app/code/core/Mage/Adminhtml/Block/Catalog/Product/Grid.php.
Declare the rewrite class on the /app/code/local/Adin/Catalog/etc/config.xml
and add
<global>
<blocks>
<adminhtml>
<rewrite>
<catalog_product_grid>Adin_Catalog_Block_Adminhtml_Catalog_Product_Grid</catalog_product_grid>
</rewrite>
</adminhtml>
</blocks>
</global>
Then create your rewritted class /app/code/local/Adin/Catalog/Block/Adminhtml/Catalog/Product/Grid.php.
<?php
class Adin_Catalog_Block_Adminhtml_Catalog_Product_Grid extends Mage_Adminhtml_Block_Catalog_Product_Grid {
}
?>
Now, rewrite the _prepareColumns() function, find the ‘action’ column an add an entry in the actions array
$this->addColumn('action',
array(
'header' => Mage::helper('catalog')->__('Action'),
'width' => '50px',
'type' => 'action',
'getter' => 'getId',
'actions' => array(
array(
'caption' => Mage::helper('catalog')->__('Edit'),
'url' => array(
'base'=>'*/*/edit',
'params'=>array('store'=>$this->getRequest()->getParam('store'))
),
'field' => 'id'
),
array(
'caption' => Mage::helper('catalog')->__('Schedule'),
'url' => array(
'base'=>'*/*/schedule',
'params'=>array('store'=>$this->getRequest()->getParam('store'))
),
'field' => 'id'
),
),
'filter' => false,
'sortable' => false,
'index' => 'stores',
));
In our example, we just add this part
array(
'caption' => Mage::helper('catalog')->__('Schedule'),
'url' => array(
'base'=>'*/*/schedule',
'params'=>array('store'=>$this->getRequest()->getParam('store'))
),
'field' => 'id'
),
One last thing, at the end of the _prepareColumns function, change
return parent::_prepareColumns();
by
return Mage_Adminhtml_Block_Widget_Grid::_prepareColumns();