前回はMagentoのディレクトリ構成や、エクステンションのディレクトリ構成をご紹介しました。今回からは実際にエクステンションを作っていきたいと思います。初級編で取り上げる内容は、「管理画面から設定した任意の値を画面に出力するエクステンション」です。システム設定で設定したコンテンツを公開画面側に表示させてみたいと思います。最初にエクステンションを配置するディレクトリを作成しましょう。app/code下に次図のような構成のディレクトリを作成してください。(Magentoディレクトリは最初からあると思うのでそのまま触らずに、My以下のディレクトリを作成してください。次にregistration.phpと設定ファイルを作成します。registration.phpはMagentoフレームワークにエクステンションやテーマの存在を認識させるために必要なファイルです。registration.phpの内容は決まっていて、以下のように書きます。__DIR__);内容を書き終えたら保存しておいてください。次にetcディレクトリ下に設定ファイルを作成していきます。作成する設定ファイルは以下の3つです。module.xmladminhtml/system.xmlconfig.xmlmodule.xmlmodule.xmlはエクステンションのバージョン番号や、他のモジュールとの依存関係を定義します。今回の場合は以下のように記述しておいてください。/></config>adminhtml/system.xmlsystem.xmlはシステム設定画面の定義を行います。Magento1にもありましたが、XML定義は大きく変わっています。今回は任意のコンテンツを表示させたいので、以下の設定項目を定義します。表示のオン・オフを切り替えるドロップダウン表示するコンテンツを入力するテキストエリア定義例は以下のとおりです。</system></config>この他にも色々な項目を定義できるので、ほかのエクステンションや公式のdevdocsを参照してみてください。config.xmlconfig.xmlはシステム設定値のデフォルト値を定義するファイルです。system.xmlで定義した項目に対応する内容を定義することで、エクステンションのインストール直後の状態でも最低限の設定をもたせることができます。今回の場合は設定項目が2個だけなので、次のように定義します。</default></config>一旦ここまでできたら、エクステンションを有効化してみましょう。エクステンションが正しくMagentoに認識されるかどうかは、次のコマンドを実行するとわかります。modules:」のところに表示されていれば、ここまで作成してきた内容でMagentoが正しくエクステンションを認識してくれていることになります。以下のコマンドを実行して、エクステンションを有効化・インストールしましょう。setup:upgradeエラーが出なければ、標準モード、またはdeveloperモードの場合はこれでエクステンションの有効化・インストールは完了です。システム設定画面を確認エクステンションで定義した内容が正しく動いているか確認するために、ここでMagentoの管理画面にログインしてみましょう。先程system.xmlで定義したメニューが「店舗」メニューの設定からアクセスできるシステム設定画面に追加されていればOKです。Magentoのシステム設定画面。configuration」が今回定義したもの。値が保存されるか試してみようせっかくなので、設定画面で値をセットしてみましょう。適当な値を入力し、保存ボタンをクリックすると、値がデータベースに保存されます。データベースの設定値はconfig.xmlよりも優先度が高いので、先程入力した値がフィールドにセットされていると思います。値が保存されていることが確認できたら、次はいよいよ表示処理の作成に取り掛かりましょう。設定ファイルができたら、次はBlockクラスを定義します。BlockクラスはPHPによる画面上の部品描画を担当するクラスです。最初にクラスの定義を行います。Blockディレクトリの下に、「Message.php」を作成し、以下のように記述します。Template{}処理の記述システム設定値を読み出すには、所定のクラスを介して行う必要があります。Blockクラスの基底クラスにはそのためのプロパティが定義されています。作成したBlockクラスに以下のメソッドを定義し、システム設定値を読み出せるようにしましょう。続いてBlockクラスが使うテンプレートを作成しましょう。MagentoのPHPプログラム部分が使うテンプレートファイルは拡張子「phtml」で作成します。view/frontend/templatesの下に、「message.phtml」を作成し、以下のように記述します。endif;?>if文などに使うメソッドは先程Blockクラスの定義で使用したものを使います。レイアウトXMLの作成Blockクラスとテンプレートが作成できたら、仕上げにレイアウトXMLを作成します。レイアウトXMLはMagentoのページレイアウトを定義するファイルです。レイアウトXMLを理解することがMagentoのデザインカスタマイズでは非常に重要な要素となっています。レイアウトはアクション単位で作成するため、作成したブロックをどのアクションが出力するページコンテンツのどの場所に表示させるかを考える必要があります。今回は全ページのフッターに表示させてみることにします。この場合、レイアウトXMLはdefault.xmlという名前で作成します。view/frontend/layout下に、default.xmlを作成し、以下の内容を書き込んでください。</body></page>表示を確認しようここまで全てできたら、一旦Magentoのキャッシュをクリアして、フッターに設定した文字列が表示されるかを確認してみましょう。cache:cleanを実行します。キャッシュがクリアできたら、フロントエンドにアクセスして、フッターを確認しましょう。「値が保存されるか試してみよう」のところで設定・保存した文字列がフッターに表示されています。(「これはカスタムメッセージ」が設定した文字列です)今回のまとめ今回は、簡単なMagentoエクステンションの作り方をご説明しました。今回のエクステンションはかなり単純なものなので、比較的簡単に作成できるのではないかと思います。次回はコントローラーを作成して、独自のURLとレイアウトの画面を作成する方法をご紹介します。