機能の登録(レジストリ)


「選べるものを増やす」拡張です。ユニットの種類、ブロックの種類、一覧画面のアクションやカラムの型などを追加できます。

実験的機能

この機能は Ver. 3.2 の間は実験的機能として提供し、Ver. 3.3 で正式に提供する予定です。

  • 変わりうる範囲: 登録 API の名前と引数は、マイナーバージョンアップで変更される可能性があります。
  • 変わらない範囲: 従来の ACMS.Config.entryAdminConfig / moduleAdminConfig による一覧のカスタマイズは、今後も動作します。
  • 公開 API の線引き: このページの表に掲載している登録 API を公開 API として扱います。掲載外のものも利用できますが、告知なく変更されることがあります。
  • サポート対象外: 管理画面に追加した独自の JavaScript・CSS は、バージョンアップ後の動作を保証しません。これらを原因とする不具合は、サポートの対象外です。

イベントとの使い分け

やりたいこと使う仕組み
既存の操作の前後に処理を挟む・中止するイベント
画面の決まった位置に UI を足すSlot / Fill
選べる種類そのものを増やすレジストリ(このページ)

登録できるもの

すべて setup(ctx) の中で呼びます。

API増えるもの反映される画面
ctx.unitEditor.registerUnitDefinition(name, def)ユニットの種類エントリー編集・インライン編集・編集設定
ctx.blockEditor.registerBlockDefinition(name, factory)ブロックの種類ブロックエディター
ctx.blockEditor.registerExtension(name, factory)ブロックエディターの要素・機能ブロックエディター
ctx.dataview.registerColumnType(name, type)一覧画面のカラムの型エントリー一覧・モジュール一覧
ctx.dataview.registerAction(view, name, def)一覧画面の行アクション同上
ctx.dataview.registerBulkAction(view, name, def)一覧画面の一括アクション同上
ctx.dataview.registerMenu(view, name, def)一覧画面のメニュー項目同上
ctx.keyboardShortcuts.registerCategory(id, category) / registerShortcut(id, shortcut)キーボードショートカット一覧のカテゴリーと項目キーボードショートカットの一覧モーダル
ctx.i18n.addResources(lng, resources)翻訳リソース(プラグイン名の名前空間に追加されます)ACMS.i18n('プラグイン名:キー') で参照

ユニットとブロックの追加手順は、専用のガイドを参照してください。

名前の付け方

同じ名前で2回登録するとエラーになります。 他のプラグインと衝突しないよう、プラグイン名を接頭辞にした名前を付けてください。

ctx.dataview.registerAction('entry', 'acme-tools/export', {
  id: 'acme-tools/export',
  label: 'エクスポート',
  onAction: (entry) => {
    window.location.href = `/api/acme-tools/export/?eid=${entry.id}`;
  },
});

一覧画面の登録(registerAction / registerBulkAction / registerMenu)は、第1引数の view ごとに名前が独立しています。'entry' と 'module' で同じ名前を使っても衝突しません。

標準の機能との関係

登録するもの標準の定義と同じ名前を使った場合
ユニットの種類上書きされます(プラグイン側が優先)
ブロックの種類上書きされます(プラグイン側が優先)
一覧画面のカラム型上書きされます(プラグイン側が優先)
一覧画面のアクション・一括アクション・メニュー上書きされません。標準のものの後ろに追加されます

標準の機能を上書きすると、そのブログ全体に影響します。意図しない場所に影響しないよう、独自の名前を使うことを推奨します。

登録内容を確認する

ACMS.plugins.getAll();
// registrations に、そのプラグインが登録した内容が一覧で入っています

従来の方法との併用

エントリー一覧・モジュール一覧のカスタマイズには、従来から ACMS.Config.entryAdminConfig / moduleAdminConfig の getActions / getBulkActions / getMenus を使う方法があります。

  • 従来の方法も今後も動作します。 既存のコードを書き換える必要はありません。
  • レジストリで登録した内容は、標準の定義の後ろに追加された状態で従来の関数にも渡ります。そのため両方を併用できます。
  • 新しく書く場合はレジストリを推奨します。プラグインの登録解除時に自動で外れるためです。

一覧のカラムの並び替えや削除(getColumns)と表示値の加工(getValues)には、現時点でレジストリの代替がありません。従来の方法を使ってください。

変更履歴

バージョン変更内容
Ver. 3.2.29新規追加(実験的機能)