关于 umbraco-collection-action
umbraco-collection-action 是用于实现 Umbraco 集合工具栏操作的技能。它帮助开发者创建执行代码或跳转 URL 的操作,并指导编写清单、操作类及可选的模态流程。
主要功能
- 01创建集合操作清单
- 02实现工具栏代码操作
- 03跳转到静态或动态 URL
- 04打开模态对话框
- 05显示更多选项指示符
适用场景
- 01为集合添加创建操作
- 02通过操作导出集合数据
- 03从集合工具栏跳转页面
- 04从操作打开模态框
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ umbraco/ umbraco-cms-backoffice-skills --skill umbraco-collection-action安装后在 Claude Code 中输入/umbraco-collection-action确认已加载。
详细介绍
Umbraco 集合操作
这是什么?
集合操作是在集合工具栏中显示的按钮,可对整个集合执行操作(而非针对单个项目的操作;后者属于实体批量操作)。常见示例包括“新建”按钮或导出功能。操作可以执行代码,也可以导航到 URL。
文档
实现前务必获取最新文档:
- 主要文档:https://docs.umbraco.com/umbraco-cms/extend-your-project/backoffice-extensions/extending-overview/extension-types/collections
- 集合视图:https://docs.umbraco.com/umbraco-cms/extend-your-project/backoffice-extensions/extending-overview/extension-types/collections/collection-view
- 基础功能:https://docs.umbraco.com/umbraco-cms/extend-your-project/backoffice-extensions/foundation
- 扩展注册表:https://docs.umbraco.com/umbraco-cms/extend-your-project/backoffice-extensions/extending-overview/extension-registry
相关基础功能技能
-
上下文 API:用于访问集合上下文
- 参考技能:
umbraco-context-api
- 参考技能:
-
模态框:用于在操作打开模态对话框时
- 参考技能:
umbraco-modals
- 参考技能:
-
条件:用于控制操作的显示时机
- 参考技能:
umbraco-conditions
- 参考技能:
工作流
- 获取文档——对上述 URL 使用 WebFetch
- 提问——要操作哪个集合?要执行什么操作?是导航还是执行代码?
- 生成文件——根据最新文档创建清单和操作类
- 说明——展示创建的内容以及测试方法
最小示例
清单(manifests.ts)
import type { ManifestCollectionAction } from '@umbraco-cms/backoffice/extension-registry';
const manifest: ManifestCollectionAction = {
type: 'collectionAction',
alias: 'My.CollectionAction.Create',
name: 'Create Item Action',
api: () => import('./create-action.js'),
meta: {
label: 'Create New',
},
conditions: [
{
alias: 'Umb.Condition.CollectionAlias',
match: 'My.Collection',
},
],
};
export const manifests = [manifest];
操作实现(create-action.ts)
import { UmbCollectionActionBase } from '@umbraco-cms/backoffice/collection';
import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api';
export class CreateAction extends UmbCollectionActionBase {
constructor(host: UmbControllerHost) {
super(host);
}
async execute() {
// Perform the action
console.log('Create action executed');
}
}
export default CreateAction;
基于链接的操作(使用 getHref)
import { UmbCollectionActionBase } from '@umbraco-cms/backoffice/collection';
export class CreateLinkAction extends UmbCollectionActionBase {
async getHref() {
// Return URL to navigate to
return '/section/my-section/workspace/my-workspace/create';
}
async execute() {
// Not called when getHref returns a value
}
}
export default CreateLinkAction;
带模态框的操作
import { UmbCollectionActionBase } from '@umbraco-cms/backoffice/collection';
import { UMB_MODAL_MANAGER_CONTEXT } from '@umbraco-cms/backoffice/modal';
export class ExportAction extends UmbCollectionActionBase {
async execute() {
const modalManager = await this.getContext(UMB_MODAL_MANAGER_CONTEXT);
const modal = modalManager.open(this, MY_EXPORT_MODAL, {
data: {
collectionAlias: 'My.Collection',
},
});
await modal.onSubmit();
}
}
export default ExportAction;
带有其他选项指示器的操作
const manifest: ManifestCollectionAction = {
type: 'collectionAction',
alias: 'My.CollectionAction.CreateWithOptions',
name: 'Create With Options',
api: () => import('./create-options-action.js'),
meta: {
label: 'Create',
additionalOptions: true, // Shows indicator that more options are available
},
conditions: [
{
alias: 'Umb.Condition.CollectionAlias',
match: 'Umb.Collection.Document',
},
],
};
带其他选项的操作类
import { UmbCollectionActionBase } from '@umbraco-cms/backoffice/collection';
export class CreateWithOptionsAction extends UmbCollectionActionBase {
async hasAdditionalOptions() {
return true;
}
async execute() {
// Show options menu or modal
}
}
export default CreateWithOptionsAction;
元属性
| 属性 | 描述 |
|---|---|
label | 必填。按钮文本 |
href | 可选的静态 URL(动态 URL 请使用 getHref()) |
additionalOptions | 为 true 时显示下拉指示器 |
条件中常用的集合别名
Umb.Collection.DocumentUmb.Collection.MediaUmb.Collection.MemberUmb.Collection.UserUmb.Collection.DataType
就是这样!务必获取最新文档,保持示例精简,并生成完整可运行的代码。
评论
支持 Markdown