Magentoカスタムモジュール:Magento2で作成するためのステップバイステップ
公開: 2020-11-11Magentoカスタムモジュールは、Magento開発者にとって重要な開発プロセスです。 ご存知のように、ある時点で、開発者は自分の機能またはモジュールを統合する必要があるかもしれません。 今日のこのブログ投稿では、Magento2でカスタムモジュールを開発するためのステップバイステップのガイドを提供します
最新のアップデート: Claue Multipurpose Magento 2テーマのバージョン2.0をリリースしました。これには、多数のパフォーマンスの向上と独自の機能が含まれています。 このテーマを今すぐチェックしてください:Claue Magento Theme 2. 0
ライブデモ
Claue –クリーンで最小限のMagento 2&1テーマは、40以上のホームページレイアウトと、ショップ、ブログ、ポートフォリオ、店舗検索レイアウト、その他の便利なページのオプションを備えた、モダンでクリーンなeコマースストアの優れたテンプレートです。 Claueバージョン2.0には、次のような多数の専用機能が付属しています。
- ルマのテーマに基づいています。
- Magentoテーマのすべての基準を満たす
- 大幅なパフォーマンスの向上
- ほとんどのサードパーティの拡張機能と互換性があります。
- Magento2.4.xと完全に互換性があります
この2番目の高度なバージョンは、以前のバージョンとは完全に異なります。 したがって、Claueバージョン1を使用していて、Claueバージョン2に更新する場合は、古いバージョンから更新するのではなく、新しいWebサイトを再構築することしかできません。 それでは、メイントピックに戻りましょう。
Magentoは非常に用途の広いプラットフォームであり、多くの便利な機能が付属しており、無料モジュールと有料モジュールの両方をサポートしています。 オンラインでインストールできるだけでなく、クライアントのニーズに合わせてカスタマイズできるモジュールを提供します。 カスタマイズはモジュールを生成することで実現され、PHP言語の力を利用して選択に応じて変更できます。 たとえば、当社のWebサイトに、市場に一般的ではない特定の機能または一連の機能または要件がある場合、モジュールがそのギャップを埋めることができます。
Magentoには、カスタムモジュールとコアモジュールが存在する3種類のコードプール(コード、コア、ローカル)が付属しています。 ローカルプール(フォルダー)は、すべてのカスタムモジュールが存在するか、配置する必要がある場所です。 以下に、モジュールに含める必要のあるコンポーネントを示します。
- ブロック–ここでは、テンプレートにデータを表示するために使用される機能を提供する必要があります。
- モデル–すべてのビジネスロジックがここに含まれています。
- リソース–モデルには、データベースの相互作用に使用される関数が含まれています。
- コントローラ–ページレイアウトを定義し、ファイルをブロックし、URLが要求されたときにロードされます。
- etc –モジュールが持つファイルの数とモジュールがどのように相互作用するかをMagentoに示すXML形式の構成ファイルが含まれます。
- ヘルパー–一般的なビジネスロジック(画像のサイズ変更、検証など)を定義するために使用される関数が含まれています。 これらの関数は、Magentoアプリケーション全体のどこでも使用できます
- sql – SQLテーブルを作成、変更、または削除するためのSQLスクリプトが含まれています。
Magentoカスタムモジュールを作成するにはどうすればよいですか?
Magento2で簡単なモジュールを作成します
Magento2で単純なモジュールを生成するのは簡単です。 次のタスクを実行する必要があります。
- モジュール用の新しいディレクトリを作成します
registration.php
スクリプトを作成しますetc/module.xml
情報ファイルを作成します- 新しいモジュールをインストールします
モジュール用の新しいディレクトリを作成します
新しいディレクトリの位置を選択するための2つのオプションがあります
app/code/{vendor}/
-
vendor/{vendor}/
モジュールが作業中の特定のオンラインストアを対象としている場合は、最初のオプションを選択できます。 ただし、さまざまなWebサイトで使用する目的でモジュールを生成する場合は、2番目のオプションを選択する方が適切です。 次に、この例の最初のオプションを使用します。
まず、 EndPoint
(ベンダー名)という名前のディレクトリを作成し、その中にサブディレクトリMyModule
を作成する必要があります。
cd {website_root} mkdir -p app/code/EndPoint/MyModule
Registration.phpスクリプトを作成します
このファイルのregistration.php
は、Magentoに特定の名前と場所で新しいモジュールを登録するように指示します。
以下のコードを使用して、 app/code/EndPoint/MyModule/registration.php
という名前のファイルを生成します
<?php \Magento\Framework\Component\ComponentRegistrar::register( \Magento\Framework\Component\ComponentRegistrar::MODULE, 'EndPoint_MyModule' , __DIR__ );
etc /module.xml情報ファイルを作成します
このステップでは、モジュール情報ファイルを作成する必要があります。ここで、モジュールのバージョン番号を指定します。 まず、 app/code/EndPoint/MyModule
内のetc
ディレクトリを生成する必要があります。
mkdir app/code/EndPoint/MyModule/etc
次に、次のコマンドラインを使用してmodule.xml
を作成します
<?xml version="1.0"?> < config xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation = "urn:magento:framework:Module/etc/module.xsd" > < module name = "EndPoint_MyModule" setup_version = "1.0.0" > </ module > </ config >
新しいモジュールをインストールします
次に、新しいモジュールをインストールして有効にする必要があります。したがって、Webサイトのルートから、コマンドを実行する必要があります。
php bin/magento setup:upgrade
Magentoはモジュール名と構成の更新のリストを取得し、新しいモジュールEndPoint_MyModule
がそのリストにリストされている必要があります
モジュールにカスタムルートを追加します
これで、機能する有効なモジュールができましたが、まだ何も実行されていません。 モジュールが有効になっていることを確認する簡単な方法は何ですか? カスタムルートを設定してみましょうhttps://{our_website}/mymodule/test/helloworld
のようなURLにアクセスすると、コントローラーからカスタム応答を返すことができます。
カスタムルートを作成するには、それ自体でいくつかの手順が必要になります。
- コントローラ用の新しいディレクトリを作成します
etc/routes.xml
ファイルを作成します- コントローラを作成する
- 新しいモジュールをアップグレードします
コントローラ用の新しいディレクトリを作成します
まず、カスタムルート用の新しいPHPコントローラーが存在する新しいディレクトリを作成する必要があります。 新しいディレクトリパスは次のようになります。
app/code/EndPoint/MyModule/Controller
必要なパスに基づいて、必要な数のディレクトリレベルを生成できます。 たとえば、 app/code/EndPoint/MyModule/Controller
でIndex
という名前のクラスを生成する場合、このコントローラーにルーティングされるURLはhttps://{our_website}/mymodule/index
になります(「コントローラー」ディレクトリは無視されます)。
購入app/code/EndPoint/MyModule/Controller/Test
でHelloWorld
という名前のクラスを生成すると、結果のURLはhttps://{our_website}/mymodule/test/helloworld
になります。
etc /routes.xmlファイルを作成します
routes.xml
は、モジュールに使用されるベースURLをMagentoに通知します。 まず、routes.xmlファイルを配置する必要がある「フロントエンド」ディレクトリを作成する必要があります。
mkdir app/code/EndPoint/MyModule/etc/frontend
ベースURLをMyModule
にする必要がある場合は、新しいディレクトリ内にXMLファイルを生成する必要があります。このファイルは、指定されたURLに対して行われたすべてのリクエストをモジュールコントローラーにルーティングします。
<?xml version="1.0" ?> < config xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation = "urn:magento:framework:App/etc/routes.xsd" > < router id = "standard" > < route frontName = "mymodule" id = "mymodule" > < module name = "EndPoint_MyModule" /> </ route > </ router > </ config >
コントローラを作成する
https://{our_website}/mymodule/test/helloworld
のリクエストに応答する場合は、ベースのController
ディレクトリとTest
サブディレクトリを生成する必要があります。
mkdir -p app/code/EndPoint/MyModule/Controller/Test
このディレクトリの下に、カスタムMagentoコントローラーを生成する必要があります。 すべてのルートコントローラーは、 \Magento\Framework\App\Action\Action
を拡張する必要があります。 また、コンテキストを祖先に渡すためのパブリックconstruct()
メソッドと、URLがヒットしたときに呼び出されるexecute()
関数も必要です。
<?php namespace EndPoint \ MyModule \ Controller \ Test ; class HelloWorld extends \ Magento \ Framework \ App \ Action \ Action { public function __construct ( \Magento\Framework\App\Action\Context $context ) { parent ::__construct( $context ); } public function execute () { echo "Hello world!" ; } }
新しいモジュールをアップグレードします
このステップでは、Magentoのセットアップをアップグレードする必要があります。 ただし、依存性注入からパラメーターを取得する新しいコントローラーを構成に含めたためです。 また、依存性注入エンジン(ファクトリ、プロキシ、インターセプタなど)をコンパイルする必要があります。 最後に、キャッシュをクリアして、カスタムURLから新しいコンテンツが提供されるようにする必要があります。
php bin/magento setup:upgrade php bin/magento setup:di:compile php bin/magento cache:flush
以上です。 ブラウザで/ helloworld / index / index URLを開くと、次のように表示されます。これは、モジュールが機能していることを意味します。
チュートリアルはこれで終わりです。Magentoカスタムモジュール:Magento2で作成するためのステップバイステップ。これがあなたにとって有用なブログであることを願っています。 Magentoについて詳しく知りたい場合は、Magentoプラットフォームの記事を読んで詳細を確認してください。また、WebサイトをサポートするためのMagento2拡張機能とMagento2テーマも確認してください。