Magento 用のカスタム モジュールを開発する
Magento カスタム モジュール開発は、どの段階でも独自の機能/モジュールを既存の Magento プロジェクトに統合する必要があるため、Magento 開発または Magento プロジェクトの中核部分です。
このシリーズでは、Magento のカスタム モジュール開発の詳細について説明します。
Magento をさらに開発したい場合は、Envato Market でさまざまな便利な Magento 拡張機能をチェックしてください。
このシリーズでは、カスタム バージョンではありますが、Magento Community Edition 1.7 について言及しています。 モジュール構造は Magento のすべてのバージョンで同じです。実際のモジュール開発を始める前に、Magento の基本構造を簡単に理解しましょう。
新しい Magento をインストールすると、次の Magento ディレクトリ構造に気づくでしょう:
Magento MVC 構造の紹介
Joomla、CakePHP、CodeIgniter などの他の主要なフレームワークと同様に、Magento も MVC ベースのアーキテクチャに従いますが、コアの PHP MVC アーキテクチャとは若干異なります。ここでは単純な PHP MVC アーキテクチャと比較しながら、Magento アーキテクチャの違いを説明します。
PHP MVC アーキテクチャ
典型的な MVC パターンでは、アプリケーションのフローは次のようになります:
- メイン エントリ ポイントが 1 つあります (
index.php
)。そこからアプリケーション ルーティング メカニズム全体が決定されます。 - このルーティング メカニズムと要求された URL パターンに基づいて、アプリは適切なコントローラーを呼び出します。
- その後、コントローラーは適切なビューを呼び出します。
- 最後に、ビュー ファイルはモデル ファイルからデータを収集し、データを表示します。
Magento MVC アーキテクチャ
Magento の MVC アーキテクチャは MVC パターンにいくつかのレイヤーを追加しますが、アプリケーションの基本的な制御フローは次のとおりです:
- メイン エントリ ポイントが 1 つあります (
index.php
)。そこからアプリケーション全体が初期化されます。 - 要求された URL に基づいて、適切なコントローラーが呼び出されます。
- コントローラーはページを定義し、これらのページのレイアウト ファイルを読み込みます。
- レイアウト ファイルは、どのブロック ファイルを使用するかをコントローラーに指示します。
- ブロック ファイルはモデル ファイルとヘルパー ファイルからデータを収集し、それをテンプレート ファイルに渡します。
- テンプレート ファイルはデータを受け取り、HTML をレンダリングします。
これには追加のレイヤーがいくつか含まれているため、最初は理解するのが難しいかもしれません。制御フローをさらに理解するために、カスタムの「Hello World」モジュールを開発してみましょう。
モジュールの使用を開始する前に
- すでにバージョン 1.7 または Magento 1.7 の作業用コピーをお持ちだと思います (そうでない場合、この段階ではバージョンは関係ありません)
- キャッシュを無効にします。 キャッシュを無効にするには、Magento 管理パネル > システム > キャッシュ管理 > 左側のチェックボックスからすべてのキャッシュ タイプを選択 > 右上のドロップダウンから [アクション: 無効にする] を選択 > [送信] をクリックします。
Magento モジュールの構造
コードプール
Magento には、Magento のすべてのカスタム モジュールとコア モジュールが存在する 3 種類のコード プールが含まれています。
- コア プールには、Magento のインストールにデフォルトで付属するすべてのコア モジュールが含まれています。これらのモジュールは Magento 開発者によって作成されています。 Magento インストールをアップグレードするたびに、すべてのコア モジュールが上書きされ、変更内容が失われるため、これらのモジュールを変更しないことをお勧めします。
- コミュニティ プールには、サードパーティ プログラマーによって開発され、Magento Connect を通じてインストールされたすべてのモジュール (カスタム モジュールなど) が含まれています。これらのモジュールは通常、コア モジュールを拡張し、Magento のどこでも使用できる独自の機能を提供します。
- ローカル プールには、特定のプロジェクトで使用されるが、Magento Connect では読み取られないすべてのカスタム モジュールが含まれています
したがって、プールにはコミュニティ プールとローカル プールの 2 つのオプションがあります。独自のプロジェクトを開発しているため、コミュニティ プールの使用に制限はありませんが、ローカル プールを使用します。
###構造###Magento モジュールは次のコンポーネントで構成されます:
- Block
- テンプレート内のデータを表示するための関数が含まれています。 Model
- モジュールのビジネス ロジックが含まれます。 リソース モデル
- データベース対話用の関数が含まれています。 Controller
- ページ レイアウトを定義し、ファイルをブロックし、URL が要求されたときにそれをロードします。 etc
- モジュールに含まれるファイルの数とモジュールがどのように対話するかを Magento に伝える XML 形式の設定ファイルが含まれています。 ヘルパー
- 一般的なビジネス ロジックを定義するための関数 (画像のサイズ変更、検証など) が含まれています。これらの関数は、Magento アプリケーションのどこでも使用できます sql
- SQL テーブルを作成、変更、削除するための SQL スクリプトが含まれています。 モジュールの名前
モジュールに名前を付ける必要があります。一般に、Magento モジュール名は
__ の 2 つの部分で構成されます。 Magento モジュールに名前を付けるベスト プラクティスは、作者名または会社名として を選択し、実際のモジュール名として <namespace></namespace>
を選択することです。 <module><p> これらの命名規則に基づいて、モジュールに <b>Chiragdodia_Mymodule</b> という名前を付けました。このシリーズではこの名前を参照します。 </p>
<h3 id="コードのセットアップと構成">コードのセットアップと構成</h3>
<p> 上記の構造に基づいてディレクトリを作成しましょう。 Magento のインストール ディレクトリに移動し、<code class="inline">app/code/local
に移動して、以下に示すようにディレクトリを作成します。

次に、設定ファイル Chiragdodia_Mymodule.xml を
app/etc/modules directory ## に作成します。 # モジュールを設定してアクティブ化します。
このディレクトリには、すべてのモジュールの構成ファイルが含まれています。
リーリー
active タグで
true を指定してモジュールを有効にします。これまでのところすべてが正しい場合は、
Magento 管理パネル > システム > 構成 > 詳細 > 詳細 > モジュール出力の無効化 リストにモジュールが表示されます。ここからモジュールを有効または無効にすることができます。
次にモジュール構成ファイルを作成します。このファイルは、モジュールに関するすべての情報を Magento に伝えます。これには、モジュールに含まれるファイルの数、ファイルの種類 (モデル、ヘルパー、データベース クラス) などが含まれます。
app/code/local/Chiragdodia/Mymodule/etc に移動し、config.xml
# を作成します。 ## ファイルには次の内容が含まれます
リーリー
各タグを 1 行ずつ見てみましょう。ここで、最初のタグは
<module></module>
で、モジュールの名前とバージョンが含まれています。バージョン番号は、モジュールを更新するときに非常に重要です。
タグは、スケジュールされたコントローラーに関する情報を Magento に伝えます。 <frontend></frontend>
タグ内で、ルーティング メカニズムを通じてコントローラーにアクセスする方法を Magento に指示する <frontend></frontend>
を定義します。 <routers>
</routers>
タグでは、<mymodule></mymodule>
<module></module>
# タグ内にあります。 # にはフロントエンド名が含まれます。フロントエンド名を使用して、フロントエンド上のモジュールにアクセスできます (例: yoursitename.com/index.php/mymodule/index<frontname>)。 </frontname>
yoursitename.com/index.php/mymodule
または
を呼び出すことで、Magento はモジュール コントローラーのインデックス アクション ファイルを検索します。 。したがって、コントローラー ファイルを作成する必要があります。
app/code/local/Chiragdodia/Mymodule/controllers
に移動し、ファイル IndexController.php
を作成します。
以下の内容が含まれます。
Magento では、各ファイル名とクラス名は大文字と小文字が区別されることに注意してください。ファイルやクラスを作成するときは、名前の付け方に注意することが重要です。
リーリー
次に、URL
を開きます。「Hello tuts World」と出力されます。
素晴らしい - 最初の hello world モジュールがついに完成しました。
コントローラーのスケジューリング
ここでは、クラス
を拡張します。このクラスには、URL ルーティングで使用されるすべてのメソッドが含まれています。 Magento のクラス名は、クラス ファイルの場所を反映しています。したがって、クラス Mage_Core_Controller_Front_Action
は、場所 Mage > Core > Controller > Front > Action.php
にあります。
コントローラーのクラス名 (Chiragdodia_Mymodule_IndexController) を確認してください。 Magento コントローラーは、
タグ)_(アクション コントローラー名)(キーワード コントローラー). を反映する方法で名前を付ける必要があります。
<module>
</module>
- tag =
- Chiragdodia_Mymodule (このタグは config.xml
で定義しました) 操作 コントローラ名 b> = インデックス
- オペレーション コントローラーの後に
Controller
キーワード が続きます
-
このパターンによると、コントローラーの名前は
Chiragdodia_Mymodule_IndexController
ルーティング パターンに従う URL パターンを表示します
根据此网址模式,我们模块的网址为 yoursite.com/index.php/mymodule/index/index
。您还可以使用 yoursite.com/index.php/mymodule
访问它,因为只要您未指定 actionController
或 actionmethod
名称,Magento 就会加载默认情况下的索引控制器和索引操作。
现在让我们再创建一个操作:testAction
。
<?php class Chiragdodia_Mymodule_IndexController extends Mage_Core_Controller_Front_Action { public function indexAction() { echo "Hello tuts+ World"; } public function testAction() { echo "test action"; } }
我们可以使用 URL yoursite.com/index.php/mymodule/index/test
访问 testAction。 如前所述
- 前端名称 = mymodule
- actionControllername = 索引
- actionmethodname = 测试
这就是控制器在 Magento 中的工作原理。
一开始,一次理解所有内容可能很困难,因此我已将所有源代码包含到此模块中,以便您可以在将其用作指南的同时查看它并实现自己的工作。
下一步是什么?
在下一部分中,我们将通过创建布局和块文件来填充模块中的一些布局。我们将了解布局文件在 Magento 中如何工作以及块在 Magento 上下文中扮演什么角色。
在此之前,请创建您自己的模块,并让我知道任何给您带来麻烦的事情。
以上がMagento 用のカスタム モジュールを開発するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









PHPクライアントURL(CURL)拡張機能は、開発者にとって強力なツールであり、リモートサーバーやREST APIとのシームレスな対話を可能にします。尊敬されるマルチプロトコルファイル転送ライブラリであるLibcurlを活用することにより、PHP Curlは効率的なexecuを促進します

記事では、PHP 5.3で導入されたPHPの後期静的結合(LSB)について説明し、より柔軟な継承を求める静的メソッドコールのランタイム解像度を可能にします。 LSBの実用的なアプリケーションと潜在的なパフォーマ

JWTは、JSONに基づくオープン標準であり、主にアイデンティティ認証と情報交換のために、当事者間で情報を安全に送信するために使用されます。 1。JWTは、ヘッダー、ペイロード、署名の3つの部分で構成されています。 2。JWTの実用的な原則には、JWTの生成、JWTの検証、ペイロードの解析という3つのステップが含まれます。 3. PHPでの認証にJWTを使用する場合、JWTを生成および検証でき、ユーザーの役割と許可情報を高度な使用に含めることができます。 4.一般的なエラーには、署名検証障害、トークンの有効期限、およびペイロードが大きくなります。デバッグスキルには、デバッグツールの使用とロギングが含まれます。 5.パフォーマンスの最適化とベストプラクティスには、適切な署名アルゴリズムの使用、有効期間を合理的に設定することが含まれます。

記事では、入力検証、認証、定期的な更新など、脆弱性から保護するためのフレームワークの重要なセキュリティ機能について説明します。

PHP開発でPHPのCurlライブラリを使用してJSONデータを送信すると、外部APIと対話する必要があることがよくあります。一般的な方法の1つは、Curlライブラリを使用して投稿を送信することです。

この記事では、フレームワークにカスタム機能を追加し、アーキテクチャの理解、拡張ポイントの識別、統合とデバッグのベストプラクティスに焦点を当てています。

ReactPhpの詳細な解釈の非ブロッキング機能の公式紹介は、多くの開発者の質問を呼び起こしました。
