ブロックを書き換えるのが最も簡単な解決策のように思えるかもしれませんが、それはきれいな解決策というよりも汚いハックです。クラスの書き換えは非常に慎重に使用し、可能であれば常に回避する必要があります。そうしないと、すぐに競合が発生し、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);
}
}
}