mcpField
U
umbraco-entity-bulk-actions

umbraco-entity-bulk-actions

github.com/umbraco开发27390 次安装6 周前更新
代码仓库

关于 umbraco-entity-bulk-actions

为 Umbraco 后台扩展开发提供实体批量操作的实现指导,涵盖清单、操作类和仓库处理,并强调先查阅最新文档。

主要功能

  1. 01为选中实体执行批量操作
  2. 02生成清单和操作类
  3. 03结合仓库处理实体
  4. 04按集合或权限设置可见条件

适用场景

  1. 01批量发布或删除内容
  2. 02对选中媒体执行自定义处理

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/umbraco/umbraco-cms-backoffice-skills --skill umbraco-entity-bulk-actions

安装后在 Claude Code 中输入/umbraco-entity-bulk-actions确认已加载。

详细介绍

Umbraco 实体批量操作

这是什么?

实体批量操作会对一次选中的多个项目执行操作。当用户选择多个项目时,它们会显示在集合选择工具栏中,可对多个实体同时执行批量发布、删除或自定义处理等操作。

文档

实现前请务必获取最新文档:

相关基础技能

  • 存储库模式:实现需要访问数据的批量操作时使用

    • 参考技能:umbraco-repository-pattern
  • 条件:根据集合或权限控制批量操作的可见性时使用

    • 参考技能:umbraco-conditions

工作流

  1. 获取文档 - 对上述 URL 使用 WebFetch
  2. 提出问题 - 是哪个集合?要执行什么批量操作?涉及哪些实体类型?
  3. 生成文件 - 根据最新文档创建清单和批量操作类
  4. 说明 - 展示创建的内容以及测试方法

最简示例

清单(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