我知道如何覆盖Mage类(app/code/core
中的任何类)
我的问题是如何覆盖Varien类? (lib/Varien
内的课程)
如果我想覆盖Mage_Adminhtml_Block_Page_Menu
我在MyCompany_Adminhtml_Block_Page_Menu
app/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_Date
(lib/Varien/Date.php
)
由于
答案 0 :(得分:10)
如果必须,请将文件和路径复制到 local 代码池并进行必要的更改。没有配置映射来更改类名。
说明:请参阅 app / Mage.php 中的bootstrapping。按以下顺序为代码池和库设置加载顺序:
通常,Varien_Autoload
负责将类Varien_Data_Collection_Db
,Mage_Core_Model_Abstract
或Zend_Db_Select
等类名映射到相对文件名( Varien / Data / Collection / Db。 php , Mage / Core / Model / Abstract.php 和 Zend / Db / Select.php 。然后将这些文件位置传递给include()
,{{1}}在内部使用引导程序中设置的加载顺序。因此,如果文件 Varien / Data / Collection / Db.php 出现在“之前”某个位置下,则将使用版本的类定义。< / p>
这些类型的修改可能是合理的,但它们应该经过充分考虑和记录,因为整个定义将归您所有,并且任何升级都需要在将来合并。知道你想要改变什么是很好的,因为其他人可能会有一些侵入性较小的选择。