blogスタッフブログ
HOME > スタッフブログ > CMS >PowerCMS X標準で提供されているコールバックの種類

PowerCMS X標準で提供されているコールバックの種類

以前の記事でPowerCMS Xプラグインの保存・削除コールバックを紹介しましたが、PowerCMS Xには多数のコールバックが用意されています。今回は、PowerCMS X標準(オプションプラグインを除く)で提供されている主なコールバックを紹介します。

コールバックとは?

コールバックとは、特定のイベントが発生したときに自動的に実行される関数のことです。PowerCMS Xでは、様々な場面でコールバックを利用できるため、処理を挿入してCMSの動作を細かく制御することができます。

PowerCMS Xの主なコールバック

保存コールバック

コールバック名 タイミング 備考
save_filter オブジェクトの保存前(pre_saveより前) バリデーションなどに利用
pre_save オブジェクトの保存前(save_filterより後) 新規作成時はID未確定
before_save オブジェクトの生成後、DBにcommit前(pre_saveより後) 新規作成時にID確定済み
post_save オブジェクトの保存後(before_saveより後) DBにcommit後
post_save_clone オブジェクトの複製時
post_save_revision オブジェクトのリビジョン保存時

削除コールバック

コールバック名 タイミング
delete_filter オブジェクトの削除前(pre_deleteより前)
pre_delete オブジェクトの削除前(delete_filterより後)
post_delete オブジェクトの削除後(pre_deleteより後)

管理画面の一覧表示や公開側の一覧ページ再構築

コールバック名 タイミング 備考
start_listing 管理画面の一覧表示開始直後(pre_listingより前) 管理画面の一覧のみ発火
pre_listing 管理画面の一覧表示前(start_listingより後) / 一覧ページの再構築前
before_listing 一覧画面でDBからオブジェクト読み込み直前(pre_listingより後) 管理画面の一覧のみ発火
post_load_objects DBからオブジェクト読み込み後(before_listingより後) / 一覧ページの再構築時 一覧ページの再構築時にオブジェクト数を取得可能

pre_listing、post_load_objectsコールバックは、管理画面の一覧表示時と公開側の一覧ページ再構築時の両方で発火します。コールバック内での$app->idはどちらもPrototypeとなるため、実装処理次第では注意が必要です。

再構築

環境変数publish_callbacks: trueで利用可能(デフォルトはfalse)。

プラグインのconfig.jsonファイルに、以下の追記で環境変数を上書きします。

"config_overwrite": {
    "publish_callbacks": true
}

PluginStarterプラグインで再構築系コールバックを設定すると、config.jsonがpublish_callbacks: trueの状態で生成されます。

コールバック名 タイミング 備考
start_publish 再構築開始直後(pre_publishより前)
pre_publish 再構築前(start_publishより後) ダイナミックはページアクセス時に発火
post_rebuild 再構築完了直前(pre_publishより後) ダイナミックはページアクセス時に発火
post_publish ファイル生成時(post_rebuildより後) ダイナミックでは発火しない

ダイナミックの時

ポップアップで再構築時にstart_publishのみ発火し、ページにアクセスした際にpre_publishとpost_rebuildが発火します。

スタティックの時

ポップアップで再構築時にstart_publish、pre_publishとpost_rebuildが発火します。post_publishはファイル生成時に発火するため、ファイルが生成済みで更新がなかった(スキップされた)場合は発火しません。

管理画面のテンプレートカスタマイズ

コールバック名 タイミング 備考
pre_preview プレビュー時(post_previewより前) MTタグはコンパイル前
post_preview プレビュー時(pre_previewより後) MTタグのコンパイル後
template_source テンプレートのビルド前(template_outputより前) MTタグはコンパイル前
template_output テンプレートのビルド後(template_sourceより後) MTタグのコンパイル後

スケジュールタスク

コールバック名 タイミング
scheduled_published ステータス「公開予約」の公開後
scheduled_unpublish ステータス「公開」「公開終了日を指定」にチェックの入っているオブジェクトの非公開後
scheduled_replacement ステータス「差し替え予約」の公開後

インポート

コールバック名 タイミング
pre_import インポート前
post_import インポート後

ユーザー/メンバー関連

コールバック名 タイミング
post_load_object ログイン前のユーザー情報取得直後(pre_loginより前)
pre_login ログイン前(post_load_objectより後)
post_login ログイン後(pre_loginより後)
post_logout ログアウト後
recover_password パスワードリセット後

RESTfulAPI

下記コールバック以外にも保存/削除系コールバックは提供されています。

コールバック名 タイミング
generate_resource オブジェクトをロードしてレスポンスデータへ変換後
pre_response APIレスポンスが返る直前

その他

コールバック名 タイミング 備考
validation フォームのバリデーション後 フォームのみ
mail_filter メール送信前
publish_object ワークフローで公開時(ビルド前) ワークフローのみ
pre_save_plugin_config プラグイン設定の保存前

まとめ

公式ドキュメントプラグイン作成の基礎公開時よりも、多くのコールバックが提供されていることがおわかりいただけたでしょうか。

大半のコールバックは、PluginStarterプラグインで雛形を生成できますが、(バージョンアップにより追加された)未対応のコールバックは、その他に入力すると雛形ができます。ただ、引数は汎用コードになっているため調整が必要です。

引数やタイミングの調査は、PowerCMS Xのソースを読むと理解が深まります。例えば、validationコールバックであればPTFormクラスのrun_callbacks前後を読むと良いでしょう。

今回は、コールバック名とタイミングを簡単に紹介しましたが、カスタマイズの参考になれば幸いです。

最近の記事

カテゴリ

アーカイブ

スタッフ別