Сделать строки кликабельными в сетке блоков Cms Adminhtml?
Мы унаследовали сайт Magento на стадии разработки, где многие блоки на интерфейсе написаны с ужасными ошибками. Мы должны пройти через каждый блок и отредактировать их. Одна вещь, которую мы заметили, заключается в том, что эти строки генерируются:
app/code/core/Mage/Adminhtml/Block/Cms/Block/Grid.php
Доступны не по href, а скорее по js ajax. Есть ли способ создать ссылку href, чтобы их можно было открывать в браузере во вкладках? Как редактирование каждого из них по одному за раз и отсутствие возможности иметь более один редактор блоков за раз не очень эффективен по времени. Как бы я мог создать столбец в этой сетке программно, чтобы создать ссылку "Редактировать", которая использует href для $baseUrl
в методе _prepareColumns()
? Я могу просто скопировать этот файл в локальный пул кода, я не собираюсь изменять основной код, любая помощь будет очень признательна. Если существует заводской метод, о котором я не знаю, поиск в Google не принес результатов в этом отношении.
2 answers
Чтобы добавить ссылку "редактировать" в сетку статических блоков CMS, все, что вам нужно сделать, это расширить этот блок своим собственным модулем и переписать _prepareColumns
. Но я уже сделал все это для вас во время тестирования:)
Смотрите код ниже:
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>
Добавляет ссылку "Просмотр", как было объявлено:
Вам нужно внедрить этот метод в свой Grid.php файл
public function getRowUrl($row) {
return $this->getUrl('*/*/edit', array('id' => $row->getId()));
}