Craft CMS のプラグインやモジュールのひな形を作る

先日「Craft Generator」についてのアナウンスがありました。
これは Craft 4 向けプラグインやモジュールの作成時にひな形をサクッと生成できる composer パッケージで、Craft の CLI コマンドとして利用できます。

Craft Generator | Craft CMS
https://craftcms.com/blog/craft-generator

以前「Craft CMS のプラグインを作ってみよう」で紹介した方法は Craft 3 までしか対応しておらず、自前でひな形を用意するのがちょっと面倒に感じていた自分にとって待望のリリースとなります。

そこで、今回は Craft Generator の導入方法や基本的な使い方についてご紹介したいと思います。
これは Craft CMS Advent Calendar 2022 18日目の記事です。

Craft Generator の導入

Craft Generator を利用するには、Craft 4.3.5 以上であることが条件となります。
それ未満の環境であれば、事前にアップデートしてください。

また、リリース直後ということもあり頻繁にアップデートされているため、公式リポジトリもチェックしましょう。

craftcms/generator: Scaffold new Craft CMS plugins, modules, and system components from the CLI
https://github.com/craftcms/generator

既存の Craft CMS インストールディレクトリでパッケージをインストールします。

composer require craftcms/generator --dev

問題なくインストールできていれば、次のコマンドで詳細を確認できます。

./craft help make

composer.json の微調整

Craft CMS のインストールディレクトリ直下にある composer.json に下記を追加します。"require-dev":"autoload": の間あたりに追記される想定です。

"repositories": [
    {
        "type": "path",
        "url": "plugins/*",
        "options": {
            "symlink": true
        }
    }
],

composer require 時に pluigns/ 配下のプラグインを参照するための記述で、独自プラグインの複数設置にも対応可能です。

プラグインのひな形を作ってみる

では、実際にプラグインのひな形を作ってみましょう。次のコマンドを実行します。

./craft make plugin

プラグイン名など、順を追って入力していきます。

CLI コマンドの実行サンプル

それぞれの項目については、下記を参考にしてください。ただし、Plugin handle などは実際の入力内容に応じて初期値が変化します。

項目説明入力サンプル
Plugin nameプラグイン名Sample Plugin
Developer name開発者名dreamseeker
Plugin handleプラグインのハンドルsample-plugin(初期値)
Plugin locationプラグインの生成先plugins/sample-plugin(初期値)
Composer package nameComposer のパッケージ名dreamseeker/craft-sample-plugin(初期値)
Plugin descriptionプラグインの説明文(日本語入力は不可)This is sample plugin.(任意)
How should the plugin be licensed?ライセンス形態(mit または craft または ?mit
Support emailサポート用のメールアドレス(任意)
GitHub repo URLプラグインのリポジトリ URL(任意)
Minimum PHP versionPHP の最小バージョン8.0.2
Minimum Craft CMS versionCraft CMS の最小バージョン4.3.5
Plugin class nameプラグインのクラス名(パスカルケース)Plugin(初期値)
Root namespaceプラグインルートの名前空間dreamseeker\craftsampleplugin(初期値)
Should the plugin have settings?プラグインの設定画面が必要か?no(初期値)
Include ECS?Easy Coding Standard パッケージを含めるか?yes(初期値)
Include PHPStan?PHPStan パッケージを含めるか?yes(初期値)

プラグインの生成が終わったら、パッケージをインストールします。

composer require dreamseeker/craft-sample-plugin

次に、管理画面の 設定 > プラグイン 、または、CLI コマンドでプラグインをインストールしてください。

./craft plugin/install sample-plugin

機能を追加したくなったら

Craft Generator は、執筆時点で次のシステムコンポーネントの生成に対応しています。

  • Active Record models
  • Asset bundles
  • CLI commands
  • Element actions
  • Element condition rules
  • Element exporters
  • Element types
  • Field types
  • Filesystem types
  • Generators
  • Models
  • Queue jobs
  • Services
  • Utilities
  • Validators
  • Web controllers

そのため、既存のプラグインやモジュールに機能を追加したい場合も make コマンドを利用できます。

既存プラグインにサービスを追加してみる

先ほど作成した Sample Plugin にサービスを追加してみましょう。
--plugin= に続けて対象プラグインのハンドルを指定します。

./craft make service --plugin=sample-plugin

名称と名前空間を問われるので、任意の値を入力します。

CLI コマンドでサービスを追加

なお、システムコンポーネントの追加はインストールディレクトリの vendor/ 配下にデータが存在する前提となりますので、独自プラグインを対象とする場合は事前に composer require でパッケージをインストール(vendor/ 配下にシンボリックリンクを生成)しておきましょう。

パッケージがインストールされていないと次のようなエラーになります。

Exception 'craft\errors\InvalidPluginException' with message 'No plugin exists with the handle "simple-plugin".'

最後に

今回は Craft Generator でプラグインのひな形を作成してみました。

システム本体の開発元によって提供されているため、将来的に機能が拡張したり Craft 5 に対応したりする際も従来より容易にできそうで、嬉しいですね。

comments powered by Disqus