[TL:DR]
私はとを持っCore_Class_AていCore_Class_B extends Core_Class_Aます。
両方を書き直して、共通の機能を追加する必要があります。
だから私はこれを作りました:
Custom_Class_A extends Core_Class_A。
問題は、下からどれを使用するかです(それぞれに賛成と反対)。
Custom_Class_B extends Custom_Class_ACustom_Class_B extends Core_Class_B
[フルバージョン]
レイヤードナビゲーションに新しいフィルターを追加する拡張機能に取り組んでいます:在庫あり/在庫なし(数日で公開されます)。
コード、今のところ大きな問題はない、戦略...私は私の疑問を持っています。
レイヤードナビゲーションセクションで新しいフィルターを追加するために使用できるイベントがないため、2つのブロックを書き換える必要がMage_Catalog_Block_Layer_ViewありましたMage_CatalogSearch_Block_Layer。(誰かがより良いアイデアを持っている場合は、共有してくださいが、これは質問の範囲ではありません)。
Mage_Catalog_Block_Layer_ViewVinaiが間接的に私を思ったように私はそれをしなかった(Vinaiの拡張子のいずれかについて、このレビューを参照)。
書き換えたいメソッドを追加し、parent::methodName()誰もが監視できるイベントを呼び出してディスパッチしました。
メソッドの例を次に示し_initBlocksます。私の新しいメソッドは次のようになります:
protected function _initBlocks()
{
parent::_initBlocks(); //call the parent method
//dispatch an event that I can observe and add my logic.
Mage::dispatchEvent('catalog_layer_view_init_blocks', array('block' => $this));
}
しかし、問題は生じますMage_CatalogSearch_Block_Layer。このブロックは最初のものを拡張しMage_Catalog_Block_Layer_Viewます。
たとえば、_initBlocks上記のようにメソッドを書き直す必要があります。しかし問題はMage_CatalogSearch_Block_Layer、独自の_initBlocks方法がないことです。親クラスからのものを使用しMage_Catalog_Block_Layer_Viewます。
ここで何をしますか?
上記と同じシステムを使用する必要がありますか、それとも新しいクラスに[Namespace]_[Module]_Block_Catalogsearch_Layer、書き換え用に作成した独自のクラスを拡張させてMage_Catalog_Block_Layer_View、Mage_CatalogSearch_Block_Layer?
