Сделать строки кликабельными в сетке блоков Cms Adminhtml?


Мы унаследовали сайт Magento на стадии разработки, где многие блоки на интерфейсе написаны с ужасными ошибками. Мы должны пройти через каждый блок и отредактировать их. Одна вещь, которую мы заметили, заключается в том, что эти строки генерируются:

app/code/core/Mage/Adminhtml/Block/Cms/Block/Grid.php

Доступны не по href, а скорее по js ajax. Есть ли способ создать ссылку href, чтобы их можно было открывать в браузере во вкладках? Как редактирование каждого из них по одному за раз и отсутствие возможности иметь более один редактор блоков за раз не очень эффективен по времени. Как бы я мог создать столбец в этой сетке программно, чтобы создать ссылку "Редактировать", которая использует href для $baseUrl в методе _prepareColumns()? Я могу просто скопировать этот файл в локальный пул кода, я не собираюсь изменять основной код, любая помощь будет очень признательна. Если существует заводской метод, о котором я не знаю, поиск в Google не принес результатов в этом отношении.

Author: Manashvi Birla, 2013-07-29

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>

Добавляет ссылку "Просмотр", как было объявлено:

enter image description here

 5
Author: philwinkle, 2013-07-29 21:41:28

Вам нужно внедрить этот метод в свой Grid.php файл

public function getRowUrl($row) {
    return $this->getUrl('*/*/edit', array('id' => $row->getId()));
}
 0
Author: karick, 2016-08-01 15:42:55