重要前提
安装AI Skills的关键前提是:必须科学上网,且开启TUN模式,这一点至关重要,直接决定安装能否顺利完成,在此郑重提醒三遍:科学上网,科学上网,科学上网。查看完整安装教程 →
umbraco-collection-action by umbraco/umbraco-cms-backoffice-skills
npx skills add https://github.com/umbraco/umbraco-cms-backoffice-skills --skill umbraco-collection-action集合操作是出现在集合工具栏中的按钮,提供可对整个集合执行的操作(而非针对单个项目——那些是实体批量操作)。常见的例子包括“新建”按钮或导出功能。操作可以执行代码或导航到 URL。
在实现之前,请务必获取最新文档:
上下文 API : 用于访问集合上下文
umbraco-context-api模态框 : 当操作打开模态对话框时
广告位招租
在这里展示您的产品或服务
触达数万 AI 开发者,精准高效
umbraco-modals条件 : 用于控制操作何时出现
umbraco-conditionsimport 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];
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() {
// 执行操作
console.log('Create action executed');
}
}
export default CreateAction;
import { UmbCollectionActionBase } from '@umbraco-cms/backoffice/collection';
export class CreateLinkAction extends UmbCollectionActionBase {
async getHref() {
// 返回要导航到的 URL
return '/section/my-section/workspace/my-workspace/create';
}
async execute() {
// 当 getHref 返回值时,此方法不会被调用
}
}
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, // 显示有更多选项可用的指示器
},
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() {
// 显示选项菜单或模态框
}
}
export default CreateWithOptionsAction;
| 属性 | 描述 |
|---|---|
label | 必需。按钮文本 |
href | 可选的静态 URL(动态 URL 请使用 getHref()) |
additionalOptions | 如果为 true,则显示下拉指示器 |
Umb.Collection.DocumentUmb.Collection.MediaUmb.Collection.MemberUmb.Collection.UserUmb.Collection.DataType就是这样!务必获取最新文档,保持示例简洁,生成完整可用的代码。
每周安装数
70
代码仓库
GitHub 星标数
15
首次出现
2026年2月4日
安全审计
安装于
github-copilot51
cursor23
opencode21
codex21
gemini-cli19
amp19
Collection Actions are buttons that appear in a collection's toolbar, providing actions that can be performed on the collection as a whole (not on individual items - those are Entity Bulk Actions). Common examples include "Create New" buttons or export functionality. Actions can either execute code or navigate to a URL.
Always fetch the latest docs before implementing:
Context API : For accessing collection context
umbraco-context-apiModals : When actions open modal dialogs
umbraco-modalsConditions : For controlling when actions appear
umbraco-conditionsimport 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];
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;
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;
| Property | Description |
|---|---|
label | Required. Button text |
href | Optional static URL (use getHref() for dynamic) |
additionalOptions | Shows dropdown indicator if true |
Umb.Collection.DocumentUmb.Collection.MediaUmb.Collection.MemberUmb.Collection.UserUmb.Collection.DataTypeThat's it! Always fetch fresh docs, keep examples minimal, generate complete working code.
Weekly Installs
70
Repository
GitHub Stars
15
First Seen
Feb 4, 2026
Security Audits
Gen Agent Trust HubPassSocketPassSnykWarn
Installed on
github-copilot51
cursor23
opencode21
codex21
gemini-cli19
amp19
React 组合模式指南:Vercel 组件架构最佳实践,提升代码可维护性
122,000 周安装
Salvage技能:代码开发偏离时提取学习成果,重启前捕获关键资产
62 周安装
Excel/XLSX文件编程操作指南:Python openpyxl/pandas与JavaScript xlsx库教程
291 周安装
Three.js游戏开发指南 - WebGL 3D网页游戏制作教程与代码示例
292 周安装
营销活动执行指南:规划、跨渠道执行与效果分析全流程
294 周安装
BlockRun:AI 微支付网关,集成 GPT-5.2、DALL-E、Grok 实时搜索,按需付费
294 周安装
MLflow 机器学习生命周期管理平台:实验跟踪、模型注册与部署
296 周安装