2012-01-03 19 views
0

我做了一些搜索,发现this thread的主题,但它是特定于XML文件,所以答案对于XML文件是有意义的(/ etc /)。在Module文件结构中放置其他非XML文件的最佳位置是什么?

就我而言,我实际上存储了一个txt文件,它恰好是我在modman脚本中甩出来的SVN版本号。

我正在使用的地方是在前端模型(Blocks/System/Html.php)内输出模块配置中的版本号。所以我现在去了Blocks/System /目录 - 文件名是Version.txt - 但是感觉应该有更好的地方来放置它。

回答

1

开发出货模块时遇到了同样的问题。我有一堆包含最大权重/交付成本映射的CSV文件。对于它的价值,我在模块级别创建了一个data/目录,并将所有内容都放在那里。

我不认为这种情况不会经常发生在Magento代码库中,因为这是一个既定的约定。只要你使用明智的命名,并提供一个抽象层来处理将来任何文件位置的变化,我会说把它放在你模块根目录下的任何文件夹中。

+0

谢谢尼克!我认为数据/迄今为止是最好的主意。实际上,我注意到了一些带有data /目录的核心mod,例如Mage/Admin,但它似乎与某些设置资源有关 - 请参阅Mage/Admin/data/admin_setup/- 就像之前的旧结构sql /目录也许? – kalenjordan 2012-01-04 05:20:28

2

版本号可以被添加到app/code/local/Your/Extension/etc/config.xml

<config> 
    <modules> 
     <Your_Extension> 
      <version>0.0.0.0</version> 
     </Your_Extension> 
    </modules> 
</config> 

的Magento知道如何处理你的扩展版本的变化和可以调用基于版本号的变化更新脚本。这是这种东西的首选方法。

如果你需要随机非PHP类文件添加到您的扩展,然后将它们添加到您的扩展文件夹,并从那里问他们:

Mage::getModuleDir('etc', 'Your_Extension'); 
Mage::getModuleDir('whateverfolder', 'Your_Extension'); 

这不是一个很好的做法,虽然,因为这可能只是突破的Magento编译功能或引入其他问题,所以最好还要通过php类或xml文件在你的扩展结构中处理外部数据

+1

当然,从XML获取版本号的方法是'Mage :: getConfig() - > getNode('modules/Your_Extension/version')' – clockworkgeek 2012-01-03 12:25:21

+0

感谢Anton!所以我想过可能动态地重写config.xml以将SVN修订版号码放在那里,但是由于config.xml的版本会迫使我将该修改提交到该文件,这会导致很多问题。不确定是否有很好的解决方法? – kalenjordan 2012-01-04 05:19:05

+0

您的其他文件的相同场景还是没有版本? – 2012-01-04 07:06:26

3

由于这个SVN版本号正在被外部工具写入,所以我宁愿它不要弄乱内容代码目录(在实时环境中可能有写限制)和我nstead让它写入“var”目录。在这种情况下,获得内“VAR”正确的路径应该这样做:

$fullpath = Mage::getBaseDir('var') . DS . $path; 

的“变种”的内容是一次性的,他们可能会在所以要丢失的文件准备随时被删除。

+0

感谢clockworkgeek!我有点像var /的想法,因为版本。txt文件基本上是短暂的,因为正如你所提到的那样,它是由外部工具生成的,并且每次部署mod或svn-up时都会覆盖它。但与此同时,我不一定希望它随时可以被覆盖,例如,如果我在野外遇到一个疯狂的故障排除情况,确保我可能非常重要知道他们正在使用的确切版本。 – kalenjordan 2012-01-04 05:21:28

+2

当然,它不一定是“var”,请查看'app/etc/config.xml'的''部分来查看'getBaseDir()'可以处理的所有常见位置。或直接使用root目录。 – clockworkgeek 2012-01-04 12:03:33

+0

我认为这是最好的答案。通常* var *文件夹也在.gitignore文件中。所以你不会在你的git上修改文件。此外,你可以创建类似于:* var/yourmodule/*并将所有内容存储在那里。我看到geoip和报告模块实际上是这样做的。 – Kostanos 2014-09-11 22:56:40

相关问题