CMS Kit:互动系统
CMS Kit 提供了一套互动系统,可以为博客文章或评论等各类资源添加互动功能。
互动组件允许用户通过预定义的图标/表情对内容进行反馈。以下是互动组件的外观示例:
您还可以自定义互动组件中显示的图标。
启用互动功能
CMS Kit 功能默认处于关闭状态。因此,在使用前需要先启用所需功能。您可以通过全局功能系统在开发阶段启用/禁用 CMS Kit 功能,或使用 ABP 的功能系统在运行时控制功能状态。
请参阅 CMS Kit 模块文档的"如何安装"章节了解开发阶段启用/禁用功能的方法。
配置选项
互动系统支持按实体类型对互动进行分组。例如,若需为商品添加互动功能,需要先定义名为 Product 的实体类型,然后在该类型下配置互动选项。
可在领域层的模块 ConfigureServices 方法中配置 CmsKitReactionOptions:
Configure<CmsKitReactionOptions>(options =>
{
options.EntityTypes.Add(
new ReactionEntityTypeDefinition(
"Product",
reactions: new[]
{
new ReactionDefinition(StandardReactions.Smile),
new ReactionDefinition(StandardReactions.ThumbsUp),
new ReactionDefinition(StandardReactions.ThumbsDown),
new ReactionDefinition(StandardReactions.Confused),
new ReactionDefinition(StandardReactions.Eyes),
new ReactionDefinition(StandardReactions.Heart)
}));
});
配置参数说明:
EntityTypes:互动系统中定义的实体类型列表(CmsKitReactionOptions类型)
ReactionEntityTypeDefinition 属性:
EntityType:实体类型名称Reactions:该实体类型下定义的互动列表(ReactionDefinition类型)
互动组件
互动系统提供可视化组件以便用户对资源发送反馈。可通过以下方式在页面中嵌入组件:
@await Component.InvokeAsync(typeof(ReactionSelectionViewComponent), new
{
entityType = "Product",
entityId = "..."
})
其中 entityType 对应前文定义的实体类型,entityId 在此示例中应为商品的唯一标识符。如果使用 Product 实体,可直接传入其 Id。
实现原理
领域层
聚合体
本模块遵循实体最佳实践与规范。
用户互动(UserReaction)
表示用户发起的单次互动记录:
UserReaction(聚合根):代表系统中的单次互动记录
仓储
本模块遵循仓储最佳实践与规范。
为此功能定义的定制仓储:
IUserReactionRepository
领域服务
本模块遵循领域服务最佳实践与规范。
互动管理器
ReactionManager 用于执行 UserReaction 聚合根的相关操作。
应用层
应用服务
ReactionPublicAppService(实现IReactionPublicAppService):实现互动系统的用例逻辑
数据库支持
通用配置
数据表/集合前缀与模式
所有数据表/集合默认使用 Cms 前缀。如需修改表前缀或设置模式名称(取决于数据库提供商支持),可通过修改 CmsKitDbProperties 类的静态属性实现。
连接字符串
本模块使用 CmsKit 作为连接字符串名称。若未定义该名称的连接字符串,将回退至 Default 连接字符串。
详细说明请参阅连接字符串文档。
Entity Framework Core
数据表
- CmsUserReactions
MongoDB
集合
- CmsUserReactions
抠丁客



