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();