1

Mageクラス(内の任意のクラスapp/code/core)をオーバーライドする方法を知っています。私の質問は、Varianクラスをオーバーライドする方法ですか?(内のクラスlib/Varien

オーバーライドしたい場合は、下Mage_Adminhtml_Block_Page_Menu にクラスを作成しますMyCompany_Adminhtml_Block_Page_Menuapp/code/local/MyCompany/Adminhtml/Block/Page/Menu.php

私はそれを次のように名付けます:

 class MyCompany_Adminhtml_Block_Page_Menu extends Mage_Adminhtml_Block_Page_Menu

現在、MagentoはMyCompany_Adminhtml_Block_Page_Menu代わりに私のクラスを使用していますMage_Adminhtml_Block_Page_Menu

私の質問は次のとおりです。新しいクラスをどこに配置し、どのように名前を付けてオーバーライドするか、たとえば Varien_Datelib/Varien/Date.php

ありがとう

4

1 に答える 1

10

必要な場合は、ファイルとパスをローカルコードプールにコピーし、必要な変更を加えます。クラス名を変更するための構成マッピングはありません。

説明:app/Mage.phpのブートストラップを参照してください。コードプールとライブラリには、次の順序でロード順序が設定されています。

  1. app / code / local /
  2. app / code / community /
  3. app / code / core /
  4. lib /

通常、、、Varien_AutoloadなどのクラスVarien_Data_Collection_Db名を相対ファイル名(Varien / Data / Collection / Db.phpMage / Core / Model / Abstract.php、およびZend / Db / Select.php)にマッピングします。次に、これらのファイルの場所がに渡され、ブートストラップで設定されたロード順序が内部的に使用されます。したがって、ファイルVarien / Data / Collection / Db.phpが「以前の」場所の1つに存在する場合、そのバージョンのクラス定義が使用されます。Mage_Core_Model_AbstractZend_Db_Selectinclude()

これらのタイプの変更は正当化される場合がありますが、定義全体がユーザーによって所有され、アップグレードは将来マージされる必要があるため、十分に検討して文書化する必要があります。他の誰かが少し侵襲性の低いオプションを持っているかもしれないので、あなたが何を変えたいかを知っているのは良いことです。

于 2012-04-11T12:39:25.910 に答える