在Module文件结构中放置其他非XML文件的最佳位置是什么?

时间:2012-01-03 06:30:54

标签: magento

我做了一些搜索并找到了关于该主题的this thread,但它特定于XML文件,因此答案对XML文件有意义(/ etc /)。

在我的情况下,我实际上存储了一个txt文件,它恰好是我在我的modman脚本中转出的SVN版本号。

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

3 个答案:

答案 0 :(得分:3)

由于这个SVN版本号是由外部工具编写的,我希望它不会弄乱代码目录的内容(在实时环境中可能有写入限制),而是让它写入“var”目录。在这种情况下,要在“var”中获取正确的路径,您将使用:

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

“var”的内容是一次性的,可以随时删除,以备丢失文件。

答案 1 :(得分: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文件处理外部数据

答案 2 :(得分:1)

在开发运输模块时遇到了同样的问题。我有一堆CSV文件,其中包含最大重量/交付成本映射。为了它的价值,我在模块级别创建了一个data/目录并将所有内容丢入其中。

我不认为在Magento代码库中这种情况不会经常发生,因为有一个既定的约定。只要您使用合理的命名,并提供一定程度的抽象来应对未来文件位置的任何更改,我会说将它放在模块根目录的任何文件夹中。