跳到主要内容

替换评论编辑器

此扩展点用于替换 Halo Console 中的默认评论和回复编辑器,适合需要支持富文本、Markdown 或其他自定义内容格式的插件。

定义方式​

import { definePlugin } from "@halo-dev/ui-shared";
import { markRaw } from "vue";
import CommentEditor from "./components/CommentEditor.vue";

export default definePlugin({
extensionPoints: {
"comment:editor:replace": () => {
return {
component: markRaw(CommentEditor),
};
},
},
});

扩展点可以同步返回 Provider,也可以返回 Promise<CommentEditorProvider>。如果多个插件提供此扩展点,Halo 使用插件加载顺序中的第一个 Provider。

组件约定​

Provider 的 component 必须使用 markRaw() 包装。组件需要遵循以下输入和输出约定:

表 1 组件约定
类型名称说明
PropautoFocus可选的 boolean,为 true 时应在组件挂载后聚焦编辑器
Emitupdate内容变化时发送 { content: string; characterCount: number }

content 是最终提交给评论或回复 API 的内容,characterCount 是当前内容的字符数。

CommentEditorProvider
import type { Component, Raw } from "vue";

export interface CommentEditorProvider {
component: Raw<Component>;
}

实现案例​