0

ページ上の特定のブロックをオーバーライドしようとしています。この場合は、Sales_Order_View_History テンプレートです。私が見ている問題は、このブロックが既にオーバーライドされていることです。

このブロックをオーバーライドしているカスタム モジュールは、基本的に行うオブザーバーを使用しています。History.php をロードする場合は、代わりに Historytwo.php をロードします。History.php は、バックエンドの 2 つの別々のページでも使用されています。1 つのページでのみオーバーライドする必要があります。これは私を完全に失いました。テンプレートをオーバーライドしたいモジュールは、オーバーライドしたいモジュールのみをオーバーライドしていると思います。

ブロックをオーバーライドするための一般的に受け入れられている形式として私が見たものは次のとおりです。

<adminhtml>
    <rewrite>
       <sales_order_view_companyhistory>
       Namespace_Package_Blocks_Adminhtml_Sales_Order_View_Companyhistory_Content</

上記のコードは、ほとんどのブロック/テンプレートのレンダリングを停止している壊れたレイアウトを私に与えています.

4

2 に答える 2

1

他のモジュールが「adminhtml_block_html_before」イベントでオブザーバーを使用している場合、オブザーバー モデルを書き直して、目的の動作をさせようとしましたか?
同時に、同じイベントに独自のオブザーバーを追加することもできます。これは同じことを行いますが、他のモジュールが有効になっていない場合にのみ (たとえば、 でチェックすることによりMage::helper('core')->isModuleEnabled())、すべての場合に機能するようにします。 .

于 2012-07-13T07:44:49.067 に答える
0

これら 2 つの構成スニペットは、2 つの別個のクラス名を書き換えます。

salesにマッピングされていMage/Sales/etc/config.xmlます:

global/blocks/sales/class>Mage_Sales_Block

adminhtmlにマッピングされていMage/Adminhtml/etc/config.xmlます:

global/blocks/adminhtml/class>Mage_Adminhtml_Block
于 2012-07-05T16:45:23.693 に答える