关于 umbraco-entity-bulk-actions
为 Umbraco 后台扩展开发提供实体批量操作的实现指导,涵盖清单、操作类和仓库处理,并强调先查阅最新文档。
主要功能
- 01为选中实体执行批量操作
- 02生成清单和操作类
- 03结合仓库处理实体
- 04按集合或权限设置可见条件
适用场景
- 01批量发布或删除内容
- 02对选中媒体执行自定义处理
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ umbraco/ umbraco-cms-backoffice-skills --skill umbraco-entity-bulk-actions安装后在 Claude Code 中输入/umbraco-entity-bulk-actions确认已加载。
详细介绍
Umbraco 实体批量操作
这是什么?
实体批量操作会对一次选中的多个项目执行操作。当用户选择多个项目时,它们会显示在集合选择工具栏中,可对多个实体同时执行批量发布、删除或自定义处理等操作。
文档
实现前请务必获取最新文档:
- 主要文档:https://docs.umbraco.com/umbraco-cms/extend-your-project/backoffice-extensions/extending-overview/extension-types/entity-bulk-actions
- 集合: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/foundation
- 扩展注册表:https://docs.umbraco.com/umbraco-cms/extend-your-project/backoffice-extensions/extending-overview/extension-registry
相关基础技能
-
存储库模式:实现需要访问数据的批量操作时使用
- 参考技能:
umbraco-repository-pattern
- 参考技能:
-
条件:根据集合或权限控制批量操作的可见性时使用
- 参考技能:
umbraco-conditions
- 参考技能:
工作流
- 获取文档 - 对上述 URL 使用 WebFetch
- 提出问题 - 是哪个集合?要执行什么批量操作?涉及哪些实体类型?
- 生成文件 - 根据最新文档创建清单和批量操作类
- 说明 - 展示创建的内容以及测试方法
最简示例
清单(manifests.ts)
import type { ManifestEntityBulkAction } from '@umbraco-cms/backoffice/extension-registry';
import { MyBulkAction } from './my-bulk-action.js';
const manifest: ManifestEntityBulkAction = {
type: 'entityBulkAction',
alias: 'My.EntityBulkAction',
name: 'My Bulk Action',
weight: 10,
api: MyBulkAction,
meta: {
icon: 'icon-check',
label: 'Process Selected',
},
conditions: [
{
alias: 'Umb.Condition.CollectionAlias',
match: 'Umb.Collection.Document',
},
],
};
export const manifests = [manifest];
批量操作实现(my-bulk-action.ts)
import { UmbEntityBulkActionBase } from '@umbraco-cms/backoffice/entity-bulk-action';
import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api';
export class MyBulkAction extends UmbEntityBulkActionBase<never> {
constructor(host: UmbControllerHost, args: { selection: Array<string> }) {
super(host, args);
}
async execute() {
// this.selection contains array of unique identifiers
console.log('Processing items:', this.selection);
for (const unique of this.selection) {
// Process each selected item
console.log('Processing:', unique);
}
alert(`Processed ${this.selection.length} items`);
}
}
使用存储库的批量操作
import { UmbEntityBulkActionBase } from '@umbraco-cms/backoffice/entity-bulk-action';
export class MyBulkAction extends UmbEntityBulkActionBase<MyRepository> {
async execute() {
// Process all selected items via repository
for (const unique of this.selection) {
await this.repository?.processItem(unique);
}
}
}
包含多个条件的清单
const manifest: ManifestEntityBulkAction = {
type: 'entityBulkAction',
alias: 'My.MediaBulkAction',
name: 'Process Media',
api: MyBulkAction,
meta: {
icon: 'icon-picture',
label: 'Optimize Images',
},
conditions: [
{
alias: 'Umb.Condition.CollectionAlias',
match: 'Umb.Collection.Media',
},
],
};
常见集合别名
Umb.Collection.Document- 内容集合Umb.Collection.Media- 媒体集合Umb.Collection.Member- 成员集合
就是这样!请务必获取最新文档,保持示例精简,并生成完整可运行的代码。
评论
支持 Markdown