From b125e02d8d14a71ef52422ad93f60c2bb3e14b21 Mon Sep 17 00:00:00 2001 From: guqing <38999863+guqing@users.noreply.github.com> Date: Tue, 2 Jul 2024 12:27:22 +0800 Subject: [PATCH] docs: add docs for template footer processor (#381) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ### What this PR does? 为 TemplateFooterProcessor 添加开发文档 see also https://github.com/halo-dev/halo/pull/6191 ```release-note None ``` --- .../template-footer-processor.md | 77 +++++++++++++++++++ sidebars.js | 1 + .../template-footer-processor.md | 77 +++++++++++++++++++ versioned_sidebars/version-2.17-sidebars.json | 1 + 4 files changed, 156 insertions(+) create mode 100644 docs/developer-guide/plugin/api-reference/server/extension-points/template-footer-processor.md create mode 100644 versioned_docs/version-2.17/developer-guide/plugin/api-reference/server/extension-points/template-footer-processor.md diff --git a/docs/developer-guide/plugin/api-reference/server/extension-points/template-footer-processor.md b/docs/developer-guide/plugin/api-reference/server/extension-points/template-footer-processor.md new file mode 100644 index 0000000..7035c99 --- /dev/null +++ b/docs/developer-guide/plugin/api-reference/server/extension-points/template-footer-processor.md @@ -0,0 +1,77 @@ +--- +title: 主题端 Halo Footer 标签处理 +description: 提供扩展主题端 HTML 页面中的 标签内容处理的方法。 +--- + +Halo 为主题端模板提供了自定义标签 `` 的处理扩展点,以便可以添加额外的页脚内容如版权信息、备案号等。 + +## 使用场景 + +- 添加备案号 +- 添加版权信息 +- 添加统计代码 +- 添加自定义脚本 +- 添加自定义链接 + +## 扩展点定义 + +扩展 `` 标签的扩展点定义为 `TemplateFooterProcessor`,对应的 `ExtensionPoint` 类型为 `MULTI_INSTANCE`,即可以有多个实现类。 + +```java +public interface TemplateFooterProcessor extends ExtensionPoint { + + Mono process(ITemplateContext context, IProcessableElementTag tag, + IElementTagStructureHandler structureHandler, IModel model); +} +``` + +`TemplateFooterProcessor` 对应的 `ExtensionPointDefinition` 资源描述如下: + +```yaml +apiVersion: plugin.halo.run/v1alpha1 +kind: ExtensionPointDefinition +metadata: + name: template-footer-processor +spec: + className: run.halo.app.theme.dialect.TemplateFooterProcessor + displayName: 页脚标签内容处理器 + type: MULTI_INSTANCE + description: "提供用于扩展 标签内容的扩展方式。" +``` + +即声明 `ExtensionDefinition` 自定义模型对象时对应的 `extensionPointName` 为 `template-footer-processor`。 + +## 示例实现 + +以下是一个简单的 TemplateFooterProcessor 插件实现示例: + +```java +@Component +public class FakeFooterCodeInjection implements TemplateFooterProcessor { + + @Override + public Mono process(ITemplateContext context, IProcessableElementTag tag, + IElementTagStructureHandler structureHandler, IModel model) { + var factory = context.getModelFactory(); + // regular footer text + var copyRight = factory.createText("
© 2024 Halo
"); + model.add(copyRight); + return Mono.empty(); + } +} +``` + +声明 ExtensionDefinition 自定义模型对象时对应的 extensionPointName 为 template-footer-processor。 + +```yaml +apiVersion: plugin.halo.run/v1alpha1 +kind: ExtensionDefinition +metadata: + name: custom-footer-extension +spec: + extensionPointName: template-footer-processor + className: com.example.FakeFooterCodeInjection + displayName: "Custom Footer Extension" + description: "Adds custom footer content." + icon: 'some-icon' +``` diff --git a/sidebars.js b/sidebars.js index 8556bba..b1cd5c5 100644 --- a/sidebars.js +++ b/sidebars.js @@ -198,6 +198,7 @@ module.exports = { "developer-guide/plugin/api-reference/server/extension-points/comment-widget", "developer-guide/plugin/api-reference/server/extension-points/notifier", "developer-guide/plugin/api-reference/server/extension-points/template-head-processor", + "developer-guide/plugin/api-reference/server/extension-points/template-footer-processor", "developer-guide/plugin/api-reference/server/extension-points/post-content", "developer-guide/plugin/api-reference/server/extension-points/singlepage-content", "developer-guide/plugin/api-reference/server/extension-points/username-password-authentication-manager", diff --git a/versioned_docs/version-2.17/developer-guide/plugin/api-reference/server/extension-points/template-footer-processor.md b/versioned_docs/version-2.17/developer-guide/plugin/api-reference/server/extension-points/template-footer-processor.md new file mode 100644 index 0000000..7035c99 --- /dev/null +++ b/versioned_docs/version-2.17/developer-guide/plugin/api-reference/server/extension-points/template-footer-processor.md @@ -0,0 +1,77 @@ +--- +title: 主题端 Halo Footer 标签处理 +description: 提供扩展主题端 HTML 页面中的 标签内容处理的方法。 +--- + +Halo 为主题端模板提供了自定义标签 `` 的处理扩展点,以便可以添加额外的页脚内容如版权信息、备案号等。 + +## 使用场景 + +- 添加备案号 +- 添加版权信息 +- 添加统计代码 +- 添加自定义脚本 +- 添加自定义链接 + +## 扩展点定义 + +扩展 `` 标签的扩展点定义为 `TemplateFooterProcessor`,对应的 `ExtensionPoint` 类型为 `MULTI_INSTANCE`,即可以有多个实现类。 + +```java +public interface TemplateFooterProcessor extends ExtensionPoint { + + Mono process(ITemplateContext context, IProcessableElementTag tag, + IElementTagStructureHandler structureHandler, IModel model); +} +``` + +`TemplateFooterProcessor` 对应的 `ExtensionPointDefinition` 资源描述如下: + +```yaml +apiVersion: plugin.halo.run/v1alpha1 +kind: ExtensionPointDefinition +metadata: + name: template-footer-processor +spec: + className: run.halo.app.theme.dialect.TemplateFooterProcessor + displayName: 页脚标签内容处理器 + type: MULTI_INSTANCE + description: "提供用于扩展 标签内容的扩展方式。" +``` + +即声明 `ExtensionDefinition` 自定义模型对象时对应的 `extensionPointName` 为 `template-footer-processor`。 + +## 示例实现 + +以下是一个简单的 TemplateFooterProcessor 插件实现示例: + +```java +@Component +public class FakeFooterCodeInjection implements TemplateFooterProcessor { + + @Override + public Mono process(ITemplateContext context, IProcessableElementTag tag, + IElementTagStructureHandler structureHandler, IModel model) { + var factory = context.getModelFactory(); + // regular footer text + var copyRight = factory.createText("
© 2024 Halo
"); + model.add(copyRight); + return Mono.empty(); + } +} +``` + +声明 ExtensionDefinition 自定义模型对象时对应的 extensionPointName 为 template-footer-processor。 + +```yaml +apiVersion: plugin.halo.run/v1alpha1 +kind: ExtensionDefinition +metadata: + name: custom-footer-extension +spec: + extensionPointName: template-footer-processor + className: com.example.FakeFooterCodeInjection + displayName: "Custom Footer Extension" + description: "Adds custom footer content." + icon: 'some-icon' +``` diff --git a/versioned_sidebars/version-2.17-sidebars.json b/versioned_sidebars/version-2.17-sidebars.json index 8a328b2..a56428e 100644 --- a/versioned_sidebars/version-2.17-sidebars.json +++ b/versioned_sidebars/version-2.17-sidebars.json @@ -183,6 +183,7 @@ "developer-guide/plugin/api-reference/server/extension-points/comment-widget", "developer-guide/plugin/api-reference/server/extension-points/notifier", "developer-guide/plugin/api-reference/server/extension-points/template-head-processor", + "developer-guide/plugin/api-reference/server/extension-points/template-footer-processor", "developer-guide/plugin/api-reference/server/extension-points/post-content", "developer-guide/plugin/api-reference/server/extension-points/singlepage-content", "developer-guide/plugin/api-reference/server/extension-points/username-password-authentication-manager"