
エリアとは、リクエストの処理を最適化するためにコードを整理するのに役立つ論理的なコンポーネントと理解できます。エリアは通常、ウェブサービスの呼び出しを効率化するために使用されます。これは、特定のエリアに依存するコードのみをロードすることで実現できます。Magento で定義されているデフォルトのエリアには、URL やリクエストを処理するための全く異なるコードが含まれています。たとえば、REST ウェブサービスを呼び出すときには、REST 呼び出しに対応するためのコードをロードする別のエリアを指定できます。
目次
6種類のMagentoのエリアタイプ
1. Magento Admin: adminhtml
index.phpまたはpub/index.phpは、管理画面への入り口です。ストアの管理に必要なすべてのコードは、この管理パネルエリアに含まれます。管理画面での作業中に表示されるコンポーネントのすべてのコードを見たい場合は、/app/design/adminhtmlディレクトリにアクセスすることができます。
2. Storefront: frontend
ストアフロントエリアのエントリーポイントは、index.phpまたはpub/index.phpです。ストアフロントの外観を定義するには、このエリアにテンプレートとレイアウトファイルがあります。
3. Basic: base
Basicは、adminhtmlやfrontendエリアに存在しないファイルの代替として使用できます。
4. Cron: crontab
crontabエリアは、cron.phpに含まれる\Magento\Framework\App\Cron によって常にロードされます。
5. Web API REST
Web API REST(webapi_rest)エリアに入るには、index.phpまたはpub/index.phpがエントリーポイントとなります。このエリアには、REST ベースの URL を検索するための方法を理解するフロントコントローラがあります。
6. Web API SOAP: webapi_soap
Web API SOAPエリアのエントリーポイントは、index.phpまたはpub/index.phpです。
エリアとモジュール
あるエリアで表示され、アクセス可能なリソースとエリアの動作は、モジュールによって定義されます。複数のエリアが同じモジュールの影響を受けることがあります。例えば、RMAモジュールの一部は、adminhtmlとfrontendのエリアで表現されます。
モジュールが複数のエリアで動作する場合は、各エリアに個別の動作やビュー・コンポーネントが必要であることを確認してください。
それぞれのエリアは、モジュールの中で自分自身を宣言します。その上、エリアのためのすべてのリソースも同じモジュール内に配置されます。
さらに、モジュール内のエリアを有効にしたり無効にしたりすることもできます。モジュールが有効になると、アプリケーションの一般的なルーティング処理にエリアのルーターが注入されます。逆に、モジュールが無効になると、エリアのルーターはロードされません。その結果、エリアのリソースや特定の機能が利用できなくなります。
事実:
- モジュールの他の領域がモジュールに影響を与えてはいけません。
- ある領域を無効にしても、その領域に関連するモジュールが無効になることはありません。
- 領域は、Dependency Injection framework di.xmlというファイルに登録されます。
フロントエンドエリアの例
このガイドでは、フロントエンドエリアとしてフロントエンドテーマを作成する方法をご紹介します。
テーマ フォルダ構成
app/design/frontend/smartosc/
├── ultimate/
│ ├── etc/
│ │ ├── view.xml
│ ├── web/
│ │ ├── images
│ │ │ ├── logo.svg
│ ├── registration.php
│ ├── theme.xml
│ ├── composer.json
app/design/frontend/smartosc/theme.xmlファイルを以下のように作成します。
<theme xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../lib/internal/Magento/Framework/Config/etc/theme.xsd">
<title>smartosc Ultimate</title>
<parent>Magento/blank</parent>
</theme>
テーマの宣言
ここで、app/design/frontend/smartosc/ultimateというフォルダができたので、次のようなテーマの基本情報を定義するtheme.xmlというファイルを作成します。名前、親テーマ(テーマが既存のテーマを継承する場合)、プレビュー画像
<theme xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Config/etc/theme.xsd">
<title>smartosc Ultimate</title> <!-- your theme's name -->
<parent>Magento/blank</parent> <!-- the parent theme, in case your theme inherits from an existing theme -->
<media>
<preview_image>media/preview.jpg</preview_image> <!-- the path to your theme's preview image -->
</media>
</theme>
登録ファイルの作成
Magento 2のテーマであるregistration.phpに以下の内容を追加することができます。
ファイル:app/design/frontend/smartosc/registration.php
<?php
\Magento\Framework\Component\ComponentRegistrar::register(
\Magento\Framework\Component\ComponentRegistrar::THEME,
'frontend/smartosc/ultimate',
__DIR__
);