2012-01-03 46 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

相關問題