ホームページ >バックエンド開発 >PHPチュートリアル >Magento 用のカスタム モジュールを開発する

Magento 用のカスタム モジュールを開発する

WBOY
WBOYオリジナル
2023-08-31 21:49:07919ブラウズ

Magento カスタム モジュール開発は、どの段階でも独自の機能/モジュールを既存の Magento プロジェクトに統合する必要があるため、Magento 開発または Magento プロジェクトの中核部分です。

このシリーズでは、Magento のカスタム モジュール開発の詳細について説明します。

Magento をさらに開発したい場合は、Envato Market でさまざまな便利な Magento 拡張機能をチェックしてください。

为 Magento 开发自定义模块

このシリーズでは、カスタム バージョンではありますが、Magento Community Edition 1.7 について言及しています。 モジュール構造は Magento のすべてのバージョンで同じです。実際のモジュール開発を始める前に、Magento の基本構造を簡単に理解しましょう。

新しい Magento をインストールすると、次の Magento ディレクトリ構造に気づくでしょう:

为 Magento 开发自定义模块

Magento MVC 構造の紹介

Joomla、CakePHP、CodeIgniter などの他の主要なフレームワークと同様に、Magento も MVC ベースのアーキテクチャに従いますが、コアの PHP MVC アーキテクチャとは若干異なります。ここでは単純な PHP MVC アーキテクチャと比較しながら、Magento アーキテクチャの違いを説明します。

PHP MVC アーキテクチャ

典型的な MVC パターンでは、アプリケーションのフローは次のようになります:

  1. メイン エントリ ポイントが 1 つあります (index.php)。そこからアプリケーション ルーティング メカニズム全体が決定されます。
  2. このルーティング メカニズムと要求された URL パターンに基づいて、アプリは適切なコントローラーを呼び出します。
  3. その後、コントローラーは適切なビューを呼び出します。
  4. 最後に、ビュー ファイルはモデル ファイルからデータを収集し、データを表示します。

Magento MVC アーキテクチャ

Magento の MVC アーキテクチャは MVC パターンにいくつかのレイヤーを追加しますが、アプリケーションの基本的な制御フローは次のとおりです:

  1. メイン エントリ ポイントが 1 つあります (index.php)。そこからアプリケーション全体が初期化されます。
  2. 要求された URL に基づいて、適切なコントローラーが呼び出されます。
  3. コントローラーはページを定義し、これらのページのレイアウト ファイルを読み込みます。
  4. レイアウト ファイルは、どのブロック ファイルを使用するかをコントローラーに指示します。
  5. ブロック ファイルはモデル ファイルとヘルパー ファイルからデータを収集し、それをテンプレート ファイルに渡します。
  6. テンプレート ファイルはデータを受け取り、HTML をレンダリングします。

これには追加のレイヤーがいくつか含まれているため、最初は理解するのが難しいかもしれません。制御フローをさらに理解するために、カスタムの「Hello World」モジュールを開発してみましょう。

モジュールの使用を開始する前に

  • すでにバージョン 1.7 または Magento 1.7 の作業用コピーをお持ちだと思います (そうでない場合、この段階ではバージョンは関係ありません)
  • キャッシュを無効にします。 キャッシュを無効にするには、Magento 管理パネル > システム > キャッシュ管理 > 左側のチェックボックスからすべてのキャッシュ タイプを選択 > 右上のドロップダウンから [アクション: 無効にする] を選択 > [送信] をクリックします。

Magento モジュールの構造

コードプール

Magento には、Magento のすべてのカスタム モジュールとコア モジュールが存在する 3 種類のコード プールが含まれています。

  1. コア プールには、Magento のインストールにデフォルトで付属するすべてのコア モジュールが含まれています。これらのモジュールは Magento 開発者によって作成されています。 Magento インストールをアップグレードするたびに、すべてのコア モジュールが上書きされ、変更内容が失われるため、これらのモジュールを変更しないことをお勧めします。
  2. コミュニティ プールには、サードパーティ プログラマーによって開発され、Magento Connect を通じてインストールされたすべてのモジュール (カスタム モジュールなど) が含まれています。これらのモジュールは通常、コア モジュールを拡張し、Magento のどこでも使用できる独自の機能を提供します。
  3. ローカル プールには、特定のプロジェクトで使用されるが、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>コードのセットアップと構成</h3> <p> 上記の構造に基づいてディレクトリを作成しましょう。 Magento のインストール ディレクトリに移動し、<code class="inline">app/code/local に移動して、以下に示すようにディレクトリを作成します。

为 Magento 开发自定义模块

次に、設定ファイル Chiragdodia_Mymodule.xml を app/etc/modules directory ## に作成します。 # モジュールを設定してアクティブ化します。 このディレクトリには、すべてのモジュールの構成ファイルが含まれています。 リーリー

このファイルは、Magento にモジュールの場所を伝えます。

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 または

yoursitename.com/index.php/mymodule/index

を呼び出すことで、Magento はモジュール コントローラーのインデックス アクション ファイルを検索します。 。したがって、コントローラー ファイルを作成する必要があります。 app/code/local/Chiragdodia/Mymodule/controllers

に移動し、ファイル IndexController.php を作成します。 以下の内容が含まれます。 Magento では、各ファイル名とクラス名は大文字と小文字が区別されることに注意してください。ファイルやクラスを作成するときは、名前の付け方に注意することが重要です。 リーリー 次に、URL

yoursite.com/index.php/mymodule/index

を開きます。「Hello tuts World」と出力されます。 素晴らしい - 最初の hello world モジュールがついに完成しました。 コントローラーのスケジューリング ここでは、クラス

Mage_Core_Controller_Front_Action

を拡張します。このクラスには、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/frontendname/actionControllername/actionmethod

  • 前端名称 = mymodule
  • actionControllername = 索引
  • actionmethodname = 索引

根据此网址模式,我们模块的网址为 yoursite.com/index.php/mymodule/index/index。您还可以使用 yoursite.com/index.php/mymodule 访问它,因为只要您未指定 actionControlleractionmethod 名称,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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。