重写块似乎是最简单的解决方案,但这更像是一个肮脏的黑客而不是一个干净的解决方案。应该非常小心地使用类重写,并且尽可能避免。否则你很快就会遇到冲突,而且更新 Magento 也会很麻烦。
通常您可以通过自定义布局更新(即在您的 local.xml 中)来更改模板,但在这种情况下,它是一个小部件,它不是通过布局 XML 配置的。
因此,输入观察者:创建一个模块,其中包含以下内容config.xml
<adminhtml>
<events>
<adminhtml_block_html_before>
<observers>
<yourmodulename_observer>
<class>yourmodulename/observer</class>
<method>changeWidgetTemplate</method>
</yourmodulename_observer>
</observers>
</adminhtml_block_html_before>
</events>
</adminhtml>
如果您不了解上述任何内容,请阅读 Magento 事件和观察者。
现在您将需要观察者本身来实际更改模板,但仅适用于此块类型:
class Your_Modulename_Observer
{
public function changeWidgetTemplate(Varien_Event_Observer $observer)
{
$block = $observer->getEvent()->getBlock();
if ($block instanceof Mage_Adminhtml_Block_Widget_Grid) {
// consider getting the template name from configuration
$template = '...';
$block->setTemplate($template);
}
}
}