CMS Kit:标签管理
CMS Kit 提供了一套标签系统,可用于为各类资源(如博客文章)添加标签。
启用标签管理功能
默认情况下,CMS Kit 的各项功能处于禁用状态。因此,在使用前需要先启用所需功能。您可以通过全局功能系统在开发阶段启用/禁用 CMS Kit 功能,也可利用 ABP 的功能系统在运行时控制 CMS Kit 功能的开关。
请参阅 CMS Kit 模块文档的"如何安装"章节,了解如何在开发阶段启用/禁用 CMS Kit 功能。
配置选项
标签系统提供了按实体类型分组标签的机制。例如,若需对博客文章和产品使用标签系统,需分别定义名为 BlogPosts 和 Product 的实体类型,并在这些实体类型下添加标签。
可在领域层通过模块类的 ConfigureServices 方法配置 CmsKitTagOptions。
示例:为产品添加标签支持
Configure<CmsKitTagOptions>(options =>
{
options.EntityTypes.Add(new TagEntityTypeDefiniton("Product"));
});
若使用博客功能,ABP 会自动为博客功能定义实体类型。
CmsKitTagOptions 属性:
EntityTypes:标签系统中已定义的实体类型列表(TagEntityTypeDefiniton)
TagEntityTypeDefiniton 属性:
EntityType:实体类型名称DisplayName:实体类型的显示名称(可用于在管理网站展示用户友好的定义名称)CreatePolicies:允许用户在该实体类型下创建标签的权限策略列表UpdatePolicies:允许用户在该实体类型下更新标签的权限策略列表DeletePolicies:允许用户在该实体类型下删除标签的权限策略列表
标签组件
标签系统提供标签微件,用于展示已配置标签资源的关联标签。可通过以下方式在页面中嵌入该组件:
@await Component.InvokeAsync(typeof(TagViewComponent), new
{
entityType = "Product",
entityId = "...",
urlFormat = "/products?tagId={TagId}&tagName={TagName}"
})
其中 entityType 已在前文说明。本示例中 entityId 应为产品的唯一标识符,若存在 Product 实体,可直接使用其 Id。urlFormat 是为每个标签生成链接的 URL 字符串格式,可通过 {TagId} 和 {TagName} 占位符动态填充 URL。例如上述格式将生成类似 /products?tagId=1&tagName=tag1 的链接。
热门标签组件
标签系统提供热门标签微件,用于展示已配置标签资源的热门标签。可通过以下方式在页面中嵌入该组件:
@await Component.InvokeAsync(typeof(PopularTagsViewComponent), new
{
entityType = "Product",
urlFormat = "/products?tagId={TagId}&tagName={TagName}",
maxCount = 10
})
参数说明:
entityType:前文已说明的实体类型urlFormat:前文已说明的 URL 格式maxCount:需要展示的标签最大数量
用户界面
菜单项
标签功能为管理应用添加了以下菜单项:
- 标签:打开标签管理页面
页面
标签管理页面
该页面可用于为实体类型创建、编辑和删除标签。
在此页面可创建新标签或编辑现有标签。
内部实现
领域层
聚合
本模块遵循实体最佳实践与规范。
标签(Tag)
代表实体类型下的具体标签:
Tag(聚合根):系统中的标签实体
实体标签(EntityTag)
建立标签与被标记实体间的关联:
EntityTag(实体):表征标签与被标记实体间的连接关系
仓储
本模块遵循仓储最佳实践与规范。
为此功能定义的定制仓储:
ITagRepositoryIEntityTagRepository
领域服务
本模块遵循领域服务最佳实践与规范。
标签管理器(TagManager)
为 Tag 聚合根执行相关操作
实体标签管理器(EntityTagManager)
为 EntityTag 实体执行相关操作
应用层
应用服务
TagAdminAppService(实现ITagAdminAppService)EntityTagAdminAppService(实现IEntityTagAdminAppService)TagAppService(实现ITagAppService)
数据库支持
通用配置
表/集合前缀与模式
默认所有表/集合使用 Cms 前缀。如需修改表前缀或设置模式名称(取决于数据库提供商支持),可通过设置 CmsKitDbProperties 类的静态属性实现。
连接字符串
本模块使用 CmsKit 作为连接字符串名称。若未定义该名称的连接字符串,将回退使用 Default 连接字符串。
详情请参阅连接字符串文档。
Entity Framework Core
数据表
- CmsTags
- CmsEntityTags
MongoDB
集合
- CmsTags
- CmsEntityTags
抠丁客




