@stdio96

Как в magento (в adminhtml) на странице модуля добавить блок?

Здравствуйте. Есть стандартный модуль в magento.
e070a059350b42ce9903b7539e33a876.png
Надо (не переписывая стандартных файлов) добавить блок на страницу. Блок на подобии этого.
8d08c429e0bd479d9c19b2714e5fa156.png
Кастомный модуль уже создан. Надо-ли создавать phtml-шаблон? Или можно просто посредствам config.xml переписать?

Спасибо.
  • Вопрос задан
  • 575 просмотров
Пригласить эксперта
Ответы на вопрос 1
@Dante_FX
Нужен или нет - вы сейчас решите сами)
Примечания:
1) Magento 1.7.2.0.
2) Способ, как говориться, "для себя" - в коммерческий модуль я бы его допиливал.
3) Вы знакомы с маджентой. Если что-то не понятно - уточняйте.

Поехали:
1) Если не было до этого в модуле лаяута для админки - подключите его в config.xml
2) Добавляем в лаяут:
<adminhtml_sales_order_view>        
        <reference name="order_tab_info">
            <block type="dante_test/adminhtml_test" name="dante_test_test" template="dante/test/test.phtml" />            
        </reference>       
    </adminhtml_sales_order_view>


Так вы добавляете в лаяут блоку, отвечающему за вывод содержимого табы "Information", свой дочерний блок.
Наш дочерний блок находится app/code/{local/community}/Dante/Test/Block/Adminhtml/Test.php
class Dante_Test_Block_Adminhtml_Test extends Mage_Adminhtml_Block_Template {}

с шаблоном \app\design\adminhtml\default\default\template\dante\test\test.phtml

Этот блок теперь необходимо вывести.

Способ 1)
Для этого либо делаем реврайт класса Mage_Adminhtml_Block_Sales_Order_View_Tab_Info в конфиге.
Теперь у нас есть класс:

class Dante_Test_Block_Adminhtml_Sales_Order_View_Tab_Info  extends Mage_Adminhtml_Block_Sales_Order_View_Tab_Info {
    public function getTestHtml()
    {
        return $this->getChildHtml('dante_test_test');
    }
    
    protected function _toHtml()
    {
        return parent::_toHtml() . $this->getTestHtml();
    }
}


где

$this->getChildHtml('test')

Выводит содержимое шаблона модуля
dante/test/test.phtml

Таким образом блок Ваш добавится в самый низ. Чтобы засунуть его в середину - или используйте js, или
переназначайте блоку Dante_Test_Block_Adminhtml_Sales_Order_View_Tab_Info свой phtml шаблон, куда скопируйте оригинальный маджентовский (\app\design\adminhtml\default\default\template\sales\order\view\tab\info.phtml) и внесите в него необходимые правки.

Способ 2 заключается в том, что Вы не делаете реврайт класса Mage_Adminhtml_Block_Sales_Order_View_Tab_Info, а копируете его из core в local директорию (с сохранением путей) и изменяете как хотите. Оригинальный файл из core директории остается не измененным и не будет теперь использоваться.

P.S. Если Вас по каким-то причинам не устраивает реврайт (это может быть из-за конфликта с реврайтами сторонних модулей) или перенос в директорию local (что может вызвать проблему после обновления мадженты - хотя, похоже, что это теперь маловероятный сценарий), Вы можете выполнить задачу через использование обзервера.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы