機能の登録(レジストリ)
「選べるものを増やす」拡張です。ユニットの種類、ブロックの種類、一覧画面のアクションやカラムの型などを追加できます。
実験的機能
この機能は 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 | 新規追加(実験的機能) |