项目
版本

CMS Kit:标签管理

CMS Kit 提供了一套标签系统,可用于为各类资源(如博客文章)添加标签。

启用标签管理功能

默认情况下,CMS Kit 的各项功能处于禁用状态。因此,在使用前需要先启用所需功能。您可以通过全局功能系统在开发阶段启用/禁用 CMS Kit 功能,也可利用 ABP 的功能系统在运行时控制 CMS Kit 功能的开关。

请参阅 CMS Kit 模块文档的"如何安装"章节,了解如何在开发阶段启用/禁用 CMS Kit 功能。

配置选项

标签系统提供了按实体类型分组标签的机制。例如,若需对博客文章和产品使用标签系统,需分别定义名为 BlogPostsProduct 的实体类型,并在这些实体类型下添加标签。

可在领域层通过模块类的 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(实体):表征标签与被标记实体间的连接关系

仓储

本模块遵循仓储最佳实践与规范

为此功能定义的定制仓储:

  • ITagRepository
  • IEntityTagRepository

领域服务

本模块遵循领域服务最佳实践与规范

标签管理器(TagManager)

Tag 聚合根执行相关操作

实体标签管理器(EntityTagManager)

EntityTag 实体执行相关操作

应用层

应用服务

  • TagAdminAppService(实现 ITagAdminAppService
  • EntityTagAdminAppService(实现 IEntityTagAdminAppService
  • TagAppService(实现 ITagAppService

数据库支持

通用配置

表/集合前缀与模式

默认所有表/集合使用 Cms 前缀。如需修改表前缀或设置模式名称(取决于数据库提供商支持),可通过设置 CmsKitDbProperties 类的静态属性实现。

连接字符串

本模块使用 CmsKit 作为连接字符串名称。若未定义该名称的连接字符串,将回退使用 Default 连接字符串。

详情请参阅连接字符串文档

Entity Framework Core

数据表
  • CmsTags
  • CmsEntityTags

MongoDB

集合
  • CmsTags
  • CmsEntityTags
在本文档中