We have inherited a development stage Magento site, where a lot of the blocks on the frontend are horribly misspelled. We are having to go through each block and edit them. One thing we noticed is that these rows generated by:
app/code/core/Mage/Adminhtml/Block/Cms/Block/Grid.php
are not clickable by href, but rather by js ajax. Is there any way to create an href link so that they can be opened in the browser in tabs? As editing each of these one at a time and not having the option to have more than one block editor at a time is not very time efficient. How would I go about creating a column in this grid programatically to create an "Edit" link that uses an href for $baseUrl in the _prepareColumns() method? I can just copy this file to the local code pool, I do not intend to modify core code, any help is greatly appreciated. If there is a factory method I'm unaware of, google search has not been fruitful in this regard.
2 Answers 2
To add an 'edit' link to the CMS Static Blocks grid, all you'd have to do is extend that block with your own module and rewrite _prepareColumns. But, I've already done all of this for you while testing :) 
See the code below:
app/code/local/YourCompany/YourModule/Block/Cms/Block/Grid.php
<?php
class YourCompany_YourModule_Block_Cms_Block_Grid extends Mage_Adminhtml_Block_Cms_Block_Grid
{
 protected function _prepareColumns()
 {
 parent::_prepareColumns();
 $this->addColumn('action',
 array(
 'header' => Mage::helper('cms')->__('Action'),
 'width' => '50px',
 'type' => 'action',
 'getter' => 'getId',
 'actions' => array(
 array(
 'caption' => Mage::helper('cms')->__('View'),
 'url' => array('base'=>'*/*/edit'),
 'field' => 'block_id'
 )
 ),
 'filter' => false,
 'sortable' => false
 )
 );
 }
}
app/code/local/YourCompany/YourModule/etc/config.xml:
<?xml version="1.0" encoding="UTF-8"?>
<config>
 <global>
 <blocks>
 <adminhtml>
 <rewrite>
 <cms_block_grid>YourCompany_YourModule_Block_Cms_Block_Grid</cms_block_grid>
 </rewrite>
 </adminhtml>
 </blocks> 
 </global>
</config>
app/etc/modules/YourCompany_YourModule.xml
<?xml version="1.0"?>
<config>
 <modules>
 <YourCompany_YourModule>
 <active>true</active>
 <codePool>local</codePool>
 </YourCompany_YourModule>
 </modules>
</config>
Adds a 'View' link, as advertised:
enter image description here
- 
 1Thanks so much! I knew it was possible somehow without modifying core code. And you even took care of the xml end as well. Kudos! Marked as answer.DWils– DWils2013年07月30日 02:11:54 +00:00Commented Jul 30, 2013 at 2:11
You need to put this method into your Grid.php file
public function getRowUrl($row) {
 return $this->getUrl('*/*/edit', array('id' => $row->getId()));
}