Magentoでクラスを書き換えないでください

約2年間、私はMagentoシステムと密接に協力してきました。 この間、私は他の人のモジュールやプロジェクトと連携する機会があり、私たちの会社ではコードが良いレベルにあることに気付きました。 おそらくMagentoを専門にしているからでしょう。



そのため、他の人のモジュールのエラーや互換性の問題をよく観察する必要があります。 この記事では、ほとんどのモジュールの特定の問題について説明します。



Magentoを初めて使用し、その基本機能を何らかの方法で変更または拡張したい場合は、インターネットで次のことをお勧めします。

1.コアファイルに直接変更を加えます。

2.フォルダファイルを含むクラスファイルをapp / code / coreからapp / code / localにコピーし、ローカルコピーに変更を加えます。

3.モジュール内のXML構成を介してクラスを書き換えます。



最初のオプションはまったく考慮すべきではありません。 2番目-まれに、抽象クラスまたはライブラリクラスを書き換える必要がある場合。 3番目は、モデル、ブロック、ヘルパー、またはコントローラーのクラスを書き換えている場合です。



4番目のオプションをお勧めします。

4. Magentoでクラスを書き換えないでください!





4番目のオプションはなぜですか? 最初の2つのオプションは、カーネルの更新と互換性がないため、不適切です。 Magentoは急速に開発されており、バージョンが頻繁に安定してリリースされるため、これは重大な問題です。 XML構成を介して書き換えるオプションを使用すると、書き換え可能なクラスを継承できます。したがって、カーネルバージョンにそのように関連付けられていません。 しかし、このアプローチには重大な欠点があります-同じクラスが別のモジュールを書き換える場合、使用されるのはあなたのものでも他の誰かのものでも1つのバージョンのみです。 優先順位はアルファベット順であり、モジュールの名前によって異なります。 つまり、モジュールがAbc_ModuleOneと呼ばれ、エイリアンがZyx_ModuleTwoである場合、悲しいかな、書き換えは使用されません。 また、モジュールにZzzzzz_Zzzという名前を付けても、問題は解決しません。モジュールをインストールした後、誰かが何かを壊し、店のオーナーが最終的にあなたを責めます。



別の方法は、イベントオブザーバーの使用です。Magentoでのイベントのメリットは非常に多くあります。 怠けないで、使用したいカーネルのイベントを探してください。 そのようなイベントが見つからなかった場合は、プログラムの実行中に最も近いものを使用してみてください。 多くの場合、問題はイベントハンドラを使用して解決できます。 Magentoでオブザーバーを使用する方法はインターネットで簡単に見つけることができますが、興味深い場合はここで記事を作成することもできます。



いくつかの問題については、特定の解決方法があります。 たとえば、注文の合計金額またはこの金額のコンポーネントの計算方法を何らかの方法で変更する必要がある場合。 Magentoのこのすべてを合計と呼びます。 基本配送には、小計、配送、税、割引、総計があり、これらは特定の順序で実行されます。 ただし、XMLを使用して、合計チェーンの任意の場所にハンドラーを簡単に追加できます。 支払い方法と配送方法も簡単に追加できます。 コメントでご希望の場合は、これらのトピックをさらに詳しく説明できます。



All Articles