2010-08-18 54 views
1

我正在创建一个自定义magento模块,并且不能确定存储我需要的模块的一些配置文件的最佳位置?Magento自定义模块 - 在哪里存储包括

有没有人建议这个最好的地方?它应该在模块的根目录中还是与帮助者在一起?

编辑: 沿着与这个问题相同的路线:是否可以在模块的命名空间的根目录下为模块共享一个文件夹?

回答

0

你可能会逃避这一点,但你故意避免Magento这样做。在模块内部,创建一个名为etc的目录,并在其中放入一个名为​​3210的XML配置文件。该文件将被读取并包含在Magento配置中,这意味着您不必尝试转移框架来获取配置数据。查看一些示例的现有文件。

这种方法的另一个好处是从配置XML文件到用户配置选项(在管理面板中)的转换不是太困难(需要轻微的重构),所以您稍后可以轻松更改配置方法。

希望有帮助!

谢谢, 乔

+0

你的第二个问题,Magento的可能不会引起任何错误,但它可能不是一个好主意。某些模块可能会在稍后关闭,并期望这些模块目录包含模块。 – 2010-08-18 21:25:04

+0

嗨乔斯谢谢,我所有需要在这些文件中都是一些数据的数组。如果这种类型的东西仍然在config.xml – David 2010-08-18 21:29:58

+0

的某个地方是的,如果可以的话,你应该把它们放到配置文件中。如上所述,这将确保稍后对Magento的任何新代码更改都不会对您的模块产生负面影响,并且允许您在框架中操作这些值。 – 2010-08-19 04:18:34

1

如果这些文件进行配置,它们属于在etc。想象一下etc文件夹,就像你将unix/linux/bsd系统的etc文件夹一样。这是你放置配置信息的地方。公约是,你应该使用一个XML文件来保存配置数据,然后用

Mage::getConfig()->loadModulesConfiguration('your-xml-name-here.xml') 

当您使用loadModulesConfiguration方法加载配置值加载它,Magento的结合XML文件系统中的所有模块进入一棵大树。这允许您将编写的其他模块(或其他模块将写入)共享配置信息。

你不需要需要来做到这一点,但etc绝对是你想要包含在模块中的任何配置文件的定义位置。另外,无论您选择什么方法,我都会选择一个唯一的文件名(packagename_modulename.xml,packagename_modulename.inc等),以确保Magento中的某个人可能选择您的名字在未来的版本中使用。

沿着与这个问题相同的路线:是否可以在模块的命名空间的根目录下为模块共享一个文件夹?

不,这是不可接受的。如果您想要共享配置,请使用上面提到的方法。如果模块需要彼此共享其他信息,他们应该直接这样做(一个模块实例化另一个模块的模型),或者应该定义一个处理所有模块间通信的中央“代理”模块。如果你对这个话题更感兴趣,我会推荐迈尔的前几章面向对象的软件构造。如果你能够理解旧版编程书籍中的“如何实现低级数据结构”,那么就可以很好地介绍CS人员何时说“模块”。

(这也是值得一提的是,如果有简单的配置价值,学习如何使用Magento System Config管理部分是值得的。)