2012-01-03 8 views
0

私は少しの検索を行い、トピックにthis threadが見つかりましたが、それはXMLファイルに固有のものなので、答えはXMLファイルには意味があります(/ etc /)。モジュールファイル構造内に非XMLファイルを追加するのに最適な場所は何ですか?

私の場合、私は実際にはmodmanスクリプト内でダンプしたSVNのバージョン番号であるtxtファイルを格納しています。

私が使用している場所は、モジュール設定内のバージョン番号を出力するフロントエンドモデル(Blocks/System/Html.php)内にあります。だから私は今ブロック/システム/ディレクトリに行った - ファイル名はVersion.txtです - しかし、これを置くための良い場所があるように感じる。

答えて

1

出荷モジュールの開発時に同じ種類の問題が発生しました。最大の重量/配信コストのマッピングが含まれたCSVファイルがたくさんありました。それは価値があるため、モジュールレベルでディレクトリdata/を作成し、そこにすべてを投げました。

Magentoコードベースでは、確立された規約が十分に満たされているとは言えません。分かりやすい命名法を使用し、今後のファイルの場所の変更に対応する抽象レベルを提供する限り、モジュールのルートにある任意のフォルダに置くといいでしょう。

+0

ありがとうニック!データ/は今のところ最高のアイデアだと私は思う。私は実際にMage/Adminのようなデータ/ディレクトリを持ついくつかのコアモデルに気づいたが、何らかの方法でセットアップリソースに関連しているようだ - Mage/Admin/data/admin_setup/- を参照すると、 sql /ディレクトリかもしれない? – kalenjordan

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

+0

Antonです!だから、多分動的にconfig.xmlを書き換えてSVNリビジョン番号を落とすと思ったのですが、config.xmlがバージョン管理されているので、その変更をファイルにコミットさせてしまいます。その周りに良い方法があるかどうかは分かりませんでしたか? – kalenjordan

+0

他のファイルと同じシナリオであるか、これはバージョン管理されていませんか? –

3

このSVNバージョン番号は外部ツールで書かれているので、 (ライブ環境では書き込み制限がある可能性があります)とi nsteadは "var"ディレクトリに書き出します。あなたが使用する「VAR」内の正しいパスを取得するためにどの場合:

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

「VAR」の内容は使い捨てである、彼らはとても不足しているファイルのために調製することがいつでも削除することができます。

+0

ありがとうclockworkgeek!私は、バージョンの理由からvar /のアイデアのようなものです。あなたが言及したように、それは外部ツールによって生成され、modが展開されるかsvn-up'dされるたびに上書きされるため、txtファイルは根本的に一時的なものです。しかし、同時に、いつでも上書きできるようにする必要はありません。例えば、私が野生で狂ったトラブルシューティングの状況にいる場合などは、彼らが使っている正確なバージョンを知っている。 – kalenjordan

+2

もちろん、必ずしも "var"である必要はありません。 'app/etc/config.xml'の' 'セクションを見て、' getBaseDir() 'が扱えるすべての通常の場所を見てください。または、ルートディレクトリを直接使用してください。 – clockworkgeek

+0

これは最高の答えだと思います。通常、* var *フォルダは.gitignoreファイルにもあります。だから、あなたのgit上の変更されたファイルには何の問題もありません。また、* var/yourmodule/*のようなものを作成し、そこにすべてを保存することもできます。私はgeoipを参照し、レポートモジュールは実際にそれを行います。 – Kostanos

関連する問題