我有一个自定义块,我想在Magento管理面板的订单视图页面的现有核心块下添加。
我开发了自定义模块。
为了避免修改核心模板phtml文件以加载我的自定义块,我尝试遵循最佳实践,并在core_block_abstract_to_html_after
上构建了一个观察者
如果你想知道为什么阅读上面的两篇优秀文章
http://www.atwix.com/magento/best-practices/
http://inchoo.net/magento/how-you-could-build-your-magento-extensions-without-view-files/
然而,虽然我想要附加的块,将包含大量的html,我想将这个html放在自定义的phtml文件中,而不是直接放在php中,以便更容易为设计人员定制。
我在以下文件夹中创建了一个phtm文件
app\design\adminhtml\default\default\template\custommodulefolder\customhtmlfileforadminorderview.phtml
但是如何从观察者那里加载这个phtml内容?
<adminhtml>
<events>
<core_block_abstract_to_html_after>
<observers>
<custommodule>
<class>NameSpace_CustomModule_Model_Observer</class>
<method>RenderBlockCustomdAdmin</method>
</referencefield>
</custommodule>
</core_block_abstract_to_html_after>
</events>
</adminhtml>
我的Observer.php
public function RenderBlockCustomdAdmin($observer = NULL)
{
if (!$observer) {
return;
}
if ('order_info' == $observer->getEvent()->getBlock()->getNameInLayout()) {
if (!Mage::getStoreConfig('advanced/modules_disable_output/'.self::MODULE_NAME)) {
$transport = $observer->getEvent()->getTransport();
// here I would like to find a way to load the content of a custom of phtml
$htmfromablock= function_which_will_allow-me_to_get_content_phtmlfile()
$transportOldHtml =$transport->getHtml();
$transport->setHtml($transportOldHtml.'<br />'.$htmfromablock);
}
}
return $this;
}
答案 0 :(得分:1)
当您获得布局时,创建一个块非常简单(只需要使用您想要的块类型调用$observer->getEvent()
->getBlock()
->getLayout()
->createBlock('adminhtml/template')
->setTemplate('custommodulefolder/customhtmlfileforadminorderview.phtml')
->toHtml();
并使用您想要使用的模板调用{{1}})。 />
而且你总是可以从另一个块获得布局。
所以在你的情况下:
{{1}}