最初の magento モジュールの構築を開始しようとしていますが、コア内のローカル フォルダーとコミュニティ フォルダーの違いに関する文献が見つかりません。一部の人々はモジュールをローカルで構築し、他の人々はコミュニティで構築していることに気付きました。違いは何ですか?なぜどちらかを使用する必要があるのですか?
ありがとう
モジュールを一般に配布する予定がある場合は、 を使用community
して、他の Magento 開発者が自分の Magento プロジェクトでもモジュールを使用できるようにする必要があります。
それが Varien がMagento Extensionと呼んでいるものです。
local
一般に配布したくないが、主に特定のショップ (または個人的な使用) のみのためにモジュールを開発している場合は、代わりに使用する必要があります。
local
とフォルダーの違いをよりよく理解するにはcommunity
、Magento Autoloader の仕組みを知っておくと役立ちます。
class
が Magento でインスタンス化されようとしているとき、Autoloader は PHPs によって指定された順序で一致するクラスを検索しinclude_path
ます。
Magento は、最初に起動時に設定include_path
します。app/Mage.php
:
define('DS', DIRECTORY_SEPARATOR);
define('PS', PATH_SEPARATOR);
define('BP', dirname(dirname(__FILE__)));
Mage::register('original_include_path', get_include_path());
:
$paths[] = BP . DS . 'app' . DS . 'code' . DS . 'local';
$paths[] = BP . DS . 'app' . DS . 'code' . DS . 'community';
$paths[] = BP . DS . 'app' . DS . 'code' . DS . 'core';
$paths[] = BP . DS . 'lib';
$app_path = implode(PS, $paths);
set_include_path($app_path . PS . Mage::registry('original_include_path'));
:
Magento Autoloader は、次のように表示される順序でパスを検索しますinclude_path
。
1st /app/code/local/
2nd /app/code/community/
3rd /app/code/core/
4th /lib/
:
たとえば、次の名前のクラスをインスタンス化しようとしていると仮定すると、Namespace_Module_Block_Hello
Magentos Autoloader が指定されたパスを検索して*include_path
という名前のファイルを検索することになります。Namespace/Module/Block/Hello.php
1st /app/code/local/Namespace/Module/Block/Hello.php
2nd /app/code/community/Namespace/Module/Block/Hello.php
3rd /app/code/core/Namespace/Module/Block/Hello.php
4th /lib/Namespace/Module/Block/Hello.php
:
最初に見つかったファイルが優先されます。つまり、インスタンス化されます。たとえば、同じファイルがlocal
ANDに存在する場合、そのファイルはインスタンス化されます。community
local
これにより、開発者はクラスを自由に拡張/オーバーライド/オーバーロード/無視できます。
*名前変換規則については、を参照してくださいlib/Varien/Autoload.php::autoload()
ローカルフォルダは、自分だけが使用するモジュール用です。コミュニティフォルダは、最終的にパッケージ化され、magentoコミュニティで利用できるようになる(または販売される)モジュール用です。ダウンロードしてインストールするモジュールはすべて、コミュニティフォルダーに配置されます。Magentoはモジュールがどこにあるかを実際には気にしません。違いは、主にモジュールを整理するためです。いずれにせよ、あるものから別のものに切り替えるのは簡単なので、それほど気にする必要はありません。
モジュールがどのカテゴリに属しているかわからない場合は、ローカルフォルダーから開始できます。公開する場合は、後でコミュニティフォルダーに移動できます。
モジュールの分類には 2 つのタイプがあります。
コミュニティと商用 コミュニティ - コミュニティは無料 商用 - コミュニティは有料
ローカルおよびコア コア - 拡張機能は、magento コア ファイルを使用して開発されています。ローカル - 拡張機能は、コア ファイルをローカルにコピーすることによって開発されます。実際の変更はローカルで行われます
地元のものがよりお勧めです...