umbraco-global-context について
umbraco-global-context は、Umbraco バックオフィスのセッション全体で使える、共有型付きコンテキストの構築を支援するスキルです。共有する状態やサービスを検討し、トークン、実装、マニフェストの生成を案内します。
主な機能
- 01拡張間で状態と関数を共有
- 02バックオフィスのセッション中に存続
- 03型付きコンテキストトークンと実装を提供
- 04コンテキストとマニフェストの生成を案内
活用シーン
- 01拡張間の通信の調整
- 02バックオフィス全体でのサービス共有
- 03共有状態のためのセッション全体のコンテキスト作成
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ umbraco/ umbraco-cms-backoffice-skills --skill umbraco-global-contextインストール後、Claude Code で/umbraco-global-contextを入力して読み込まれたか確認します。
詳細
Umbraco グローバルコンテキスト
これは何ですか?
グローバルコンテキストは、バックオフィス全体でアクセス可能な、共有された型安全なデータと関数のレイヤーを作成します。スコープ付きコンテキスト(Workspace Context など)とは異なり、グローバルコンテキストはバックオフィスセッション全体にわたって持続します。拡張機能間で状態を共有したり、集中管理されたサービスを管理したり、通信を調整したりするために使用します。注: 可能な場合は、より具体的なコンテキストタイプを優先してください。Umbraco はグローバルコンテキストを控えめに使用しています。
ドキュメント
実装する前に、常に最新のドキュメントを取得してください:
- メインドキュメント: https://docs.umbraco.com/umbraco-cms/extend-your-project/backoffice-extensions/extending-overview/extension-types/global-context
- Context API: https://docs.umbraco.com/umbraco-cms/extend-your-project/backoffice-extensions/foundation/context-api
- Foundation: https://docs.umbraco.com/umbraco-cms/extend-your-project/backoffice-extensions/foundation
- Extension Registry: https://docs.umbraco.com/umbraco-cms/extend-your-project/backoffice-extensions/extending-overview/extension-registry
関連する Foundation スキル
-
Context API: コンテキストの消費パターンを理解するため
- 参照スキル:
umbraco-context-api
- 参照スキル:
-
State Management: コンテキスト内のリアクティブな状態のため
- 参照スキル:
umbraco-state-management
- 参照スキル:
ワークフロー
- ドキュメントを取得 - 上記の URL に対して WebFetch を使用します
- 質問する - どの状態を共有しますか?どのようなサービスが必要ですか?代わりに workspace context で対応できますか?
- ファイルを生成 - 最新のドキュメントに基づいてコンテキストトークン + 実装 + マニフェストを作成します
- 説明 - 作成した内容とコンテキストの消費方法を示します
最小限の例
コンテキストトークン (my-global-context.token.ts)
import { UmbContextToken } from '@umbraco-cms/backoffice/context-api';
import type { MyGlobalContext } from './my-global-context.js';
export const MY_GLOBAL_CONTEXT = new UmbContextToken<MyGlobalContext>(
'My.GlobalContext'
);
コンテキストの実装 (my-global-context.ts)
import { UmbContextBase } from '@umbraco-cms/backoffice/class-api';
import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api';
import { MY_GLOBAL_CONTEXT } from './my-global-context.token.js';
export class MyGlobalContext extends UmbContextBase {
#currentValue = '';
constructor(host: UmbControllerHost) {
super(host, MY_GLOBAL_CONTEXT);
}
getValue(): string {
return this.#currentValue;
}
setValue(value: string): void {
this.#currentValue = value;
}
}
マニフェスト (umbraco-package.json)
{
"name": "My Global Context Package",
"extensions": [
{
"type": "globalContext",
"alias": "My.GlobalContext",
"name": "My Global Context",
"js": "/App_Plugins/MyPackage/my-global-context.js"
}
]
}
コンテキストの消費
import { UmbElementMixin } from '@umbraco-cms/backoffice/element-api';
import { MY_GLOBAL_CONTEXT } from './my-global-context.token.js';
class MyElement extends UmbElementMixin(LitElement) {
#myContext?: MyGlobalContext;
constructor() {
super();
this.consumeContext(MY_GLOBAL_CONTEXT, (instance) => {
this.#myContext = instance;
});
}
}
以上です!常に最新のドキュメントを取得し、例は最小限に保ち、完全に動作するコードを生成してください。
コメント
Markdown 対応