2011-01-28 12 views
3

Magentoでコアモジュールをオーバーライドする方法の例はたくさんありますが、どのようにローカルモジュールをオーバーライドするのですか?Magentoでローカルモジュールを上書きするにはどうしたらいいですか?

+0

実際にローカルモジュール –

+0

をオーバーライドする必要がないコードを編集してください。ただし、特定の状況でのみモジュールがオーバーライドされ、ローカルコードプール内のモジュールをオーバーライドできるかどうかを知りたいと思います。 –

答えて

7

モジュールに上書きしないで、モジュールに属しているクラス、または一般的なlibフォルダに属するクラスをオーバーライドします(より適切にはrewrite、下記参照)。

あなたの文言に基づいて、私はあなたが「app/code/core/からクラスを取って」「app/code/local/」に入れることを意味します。それが事実なら、ほとんどあなたはできません。 magentoはPHPインクルードパスに4つのパスを追加するため、コードプールが機能します。

app/code/local 
app/code/community 
app/code/core 
lib 

その後、オートローダが言うとき

include('Mage/Module/Path/To/File.php'); 

場合は、最初に、そしてcommunityフォルダ、そしてコアフォルダ、そして最終的にlibフォルダをlocalフォルダをチェックします。 localフォルダは常に勝ちます。

クラスがモデル、ヘルパー、またはブロックの場合は、モジュールベースの書き換えシステムを使用することをお勧めします。コアモジュールのクラスを書き換えるのと同じ手法を使用して、ローカルモジュールまたはコミュニティモジュールのクラスを書き換えることができます。モジュールベースのシステムのポイントは、コアシステムを実行するコードが他の人がシステムに追加するコードと同じ方法で挿入/動作することです。

+0

アラン、ありがとう、私はあなたのレイアウトビューアモジュールを読んで使用した後、あなたから答えを得るのは少し名誉です。これは完全に物事をクリアします。いつものように良い説明! –

+0

私がしようとしているのは、コミューニティモジュールを使用するが、使用するモデルの1つを置き換えることです。 –

+0

アランの答えの最後の段落を読んで使用するようにしてください。 Codepoolハッカーは、単純にモデルを構成で置き換えるだけのクリーンではないので、その解決策がはるかに望ましいです。 –

関連する問題