-
+
-
+ + + + ++ el.focus()" + @blur="handleUpdate()" + @keyup.enter="handleUpdate()" + @keyup.escape="selectedTodo = undefined" + /> +
+
From a23ea5940f8b88c0dda334d141d6d4bd9d5147ef Mon Sep 17 00:00:00 2001
From: Ryan Wang
Date: Wed, 1 Mar 2023 22:06:19 +0800
Subject: [PATCH] docs: update documentation for Halo 2.3 (#196)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
为 Halo 2.3 更新文档。
/kind documentation
```release-note
None
```
---
.../getting-started/install/docker-compose.md | 14 +-
docs/getting-started/install/docker.md | 10 +-
docs/getting-started/install/other/traefik.md | 2 +-
docs/intro.md | 2 +-
docs/user-guide/faq.md | 4 +-
docusaurus.config.js | 15 +-
i18n/zh-Hans/code.json | 56 +-
.../current.json | 14 +-
.../version-2.2.json | 12 +
.../version-2.3.json | 62 ++
versioned_docs/version-2.3/about.md | 16 +
.../version-2.3/contribution/issue.md | 28 +
versioned_docs/version-2.3/contribution/pr.md | 110 +++
.../developer-guide/annotations-form.md | 89 +++
.../version-2.3/developer-guide/core/build.md | 103 +++
.../developer-guide/core/code-style.md | 30 +
.../developer-guide/core/prepare.md | 25 +
.../version-2.3/developer-guide/core/run.md | 118 +++
.../developer-guide/core/structure.md | 36 +
.../developer-guide/form-schema.md | 271 +++++++
.../plugin/api-reference/extension-client.md | 104 +++
.../plugin/api-reference/extension.md | 127 ++++
.../plugin/api-reference/reverseproxy.md | 36 +
.../plugin/api-reference/role-template.md | 103 +++
.../plugin/examples/todolist.md | 675 ++++++++++++++++++
.../developer-guide/plugin/hello-world.md | 55 ++
.../developer-guide/plugin/introduction.md | 27 +
.../developer-guide/plugin/lifecycle.md | 37 +
.../developer-guide/plugin/manifest.md | 44 ++
.../plugin/object-management.md | 48 ++
.../developer-guide/plugin/prepare.md | 15 +
.../developer-guide/plugin/publish.md | 19 +
.../developer-guide/plugin/runtime-mode.md | 35 +
.../developer-guide/plugin/structure.md | 76 ++
.../developer-guide/theme/annotations.md | 64 ++
.../developer-guide/theme/code-snippets.md | 47 ++
.../developer-guide/theme/config.md | 89 +++
.../developer-guide/theme/finder-apis.md | 10 +
.../theme/finder-apis/category.md | 187 +++++
.../theme/finder-apis/comment.md | 155 ++++
.../theme/finder-apis/contributor.md | 64 ++
.../developer-guide/theme/finder-apis/menu.md | 77 ++
.../theme/finder-apis/plugin.md | 33 +
.../developer-guide/theme/finder-apis/post.md | 430 +++++++++++
.../theme/finder-apis/single-page.md | 131 ++++
.../theme/finder-apis/site-stats.md | 45 ++
.../developer-guide/theme/finder-apis/tag.md | 139 ++++
.../theme/finder-apis/theme.md | 119 +++
.../developer-guide/theme/global-variables.md | 58 ++
.../developer-guide/theme/prepare.md | 104 +++
.../developer-guide/theme/settings.md | 135 ++++
.../developer-guide/theme/static-resources.md | 55 ++
.../developer-guide/theme/structure.md | 33 +
.../theme/template-route-mapping.md | 87 +++
.../developer-guide/theme/template-tag.md | 57 ++
.../theme/template-variables.md | 7 +
.../theme/template-variables/archives.md | 108 +++
.../theme/template-variables/author.md | 104 +++
.../theme/template-variables/categories.md | 54 ++
.../theme/template-variables/category.md | 105 +++
.../theme/template-variables/index_.md | 98 +++
.../theme/template-variables/page.md | 53 ++
.../theme/template-variables/post.md | 65 ++
.../theme/template-variables/tag.md | 105 +++
.../theme/template-variables/tags.md | 39 +
.../theme/vo/CategoryTreeVo.md | 33 +
.../developer-guide/theme/vo/CategoryVo.md | 31 +
.../developer-guide/theme/vo/CommentVo.md | 53 ++
.../developer-guide/theme/vo/ContentVo.md | 6 +
.../developer-guide/theme/vo/ContributorVo.md | 9 +
.../developer-guide/theme/vo/ListedPostVo.md | 65 ++
.../theme/vo/ListedSinglePageVo.md | 57 ++
.../developer-guide/theme/vo/MenuItemVo.md | 34 +
.../developer-guide/theme/vo/MenuVo.md | 21 +
.../developer-guide/theme/vo/PostVo.md | 66 ++
.../developer-guide/theme/vo/ReplyVo.md | 42 ++
.../developer-guide/theme/vo/SinglePageVo.md | 58 ++
.../developer-guide/theme/vo/SiteSettingVo.md | 26 +
.../developer-guide/theme/vo/TagVo.md | 26 +
.../developer-guide/theme/vo/ThemeVo.md | 36 +
.../developer-guide/theme/vo/UserVo.md | 28 +
.../version-2.3/getting-started/config.md | 238 ++++++
.../version-2.3/getting-started/downloads.md | 25 +
.../version-2.3/getting-started/first-post.md | 38 +
.../getting-started/install/docker-compose.md | 346 +++++++++
.../getting-started/install/docker.md | 108 +++
.../install/other/nginxproxymanager.md | 164 +++++
.../install/other/oneinstack.md | 274 +++++++
.../getting-started/install/other/traefik.md | 121 ++++
.../install/slots/docker-args.md | 17 +
.../getting-started/migrate-from-1.x.md | 60 ++
.../version-2.3/getting-started/prepare.md | 98 +++
versioned_docs/version-2.3/intro.md | 76 ++
.../version-2.3/user-guide/attachments.md | 102 +++
.../user-guide/backup-migration.md | 38 +
.../version-2.3/user-guide/common.md | 72 ++
.../version-2.3/user-guide/config.md | 172 +++++
versioned_docs/version-2.3/user-guide/faq.md | 155 ++++
.../version-2.3/user-guide/markdown.md | 454 ++++++++++++
.../version-2.3/user-guide/pages.md | 41 ++
.../version-2.3/user-guide/plugins.md | 52 ++
.../version-2.3/user-guide/posts.md | 150 ++++
.../version-2.3/user-guide/settings.md | 72 ++
.../version-2.3/user-guide/themes.md | 80 +++
.../version-2.3/user-guide/users.md | 95 +++
versioned_sidebars/version-2.3-sidebars.json | 202 ++++++
versions.json | 1 +
107 files changed, 9069 insertions(+), 48 deletions(-)
create mode 100644 i18n/zh-Hans/docusaurus-plugin-content-docs/version-2.3.json
create mode 100644 versioned_docs/version-2.3/about.md
create mode 100644 versioned_docs/version-2.3/contribution/issue.md
create mode 100644 versioned_docs/version-2.3/contribution/pr.md
create mode 100644 versioned_docs/version-2.3/developer-guide/annotations-form.md
create mode 100644 versioned_docs/version-2.3/developer-guide/core/build.md
create mode 100644 versioned_docs/version-2.3/developer-guide/core/code-style.md
create mode 100644 versioned_docs/version-2.3/developer-guide/core/prepare.md
create mode 100644 versioned_docs/version-2.3/developer-guide/core/run.md
create mode 100644 versioned_docs/version-2.3/developer-guide/core/structure.md
create mode 100644 versioned_docs/version-2.3/developer-guide/form-schema.md
create mode 100644 versioned_docs/version-2.3/developer-guide/plugin/api-reference/extension-client.md
create mode 100644 versioned_docs/version-2.3/developer-guide/plugin/api-reference/extension.md
create mode 100644 versioned_docs/version-2.3/developer-guide/plugin/api-reference/reverseproxy.md
create mode 100644 versioned_docs/version-2.3/developer-guide/plugin/api-reference/role-template.md
create mode 100644 versioned_docs/version-2.3/developer-guide/plugin/examples/todolist.md
create mode 100644 versioned_docs/version-2.3/developer-guide/plugin/hello-world.md
create mode 100644 versioned_docs/version-2.3/developer-guide/plugin/introduction.md
create mode 100644 versioned_docs/version-2.3/developer-guide/plugin/lifecycle.md
create mode 100644 versioned_docs/version-2.3/developer-guide/plugin/manifest.md
create mode 100644 versioned_docs/version-2.3/developer-guide/plugin/object-management.md
create mode 100644 versioned_docs/version-2.3/developer-guide/plugin/prepare.md
create mode 100644 versioned_docs/version-2.3/developer-guide/plugin/publish.md
create mode 100644 versioned_docs/version-2.3/developer-guide/plugin/runtime-mode.md
create mode 100644 versioned_docs/version-2.3/developer-guide/plugin/structure.md
create mode 100644 versioned_docs/version-2.3/developer-guide/theme/annotations.md
create mode 100644 versioned_docs/version-2.3/developer-guide/theme/code-snippets.md
create mode 100644 versioned_docs/version-2.3/developer-guide/theme/config.md
create mode 100644 versioned_docs/version-2.3/developer-guide/theme/finder-apis.md
create mode 100644 versioned_docs/version-2.3/developer-guide/theme/finder-apis/category.md
create mode 100644 versioned_docs/version-2.3/developer-guide/theme/finder-apis/comment.md
create mode 100644 versioned_docs/version-2.3/developer-guide/theme/finder-apis/contributor.md
create mode 100644 versioned_docs/version-2.3/developer-guide/theme/finder-apis/menu.md
create mode 100644 versioned_docs/version-2.3/developer-guide/theme/finder-apis/plugin.md
create mode 100644 versioned_docs/version-2.3/developer-guide/theme/finder-apis/post.md
create mode 100644 versioned_docs/version-2.3/developer-guide/theme/finder-apis/single-page.md
create mode 100644 versioned_docs/version-2.3/developer-guide/theme/finder-apis/site-stats.md
create mode 100644 versioned_docs/version-2.3/developer-guide/theme/finder-apis/tag.md
create mode 100644 versioned_docs/version-2.3/developer-guide/theme/finder-apis/theme.md
create mode 100644 versioned_docs/version-2.3/developer-guide/theme/global-variables.md
create mode 100644 versioned_docs/version-2.3/developer-guide/theme/prepare.md
create mode 100644 versioned_docs/version-2.3/developer-guide/theme/settings.md
create mode 100644 versioned_docs/version-2.3/developer-guide/theme/static-resources.md
create mode 100644 versioned_docs/version-2.3/developer-guide/theme/structure.md
create mode 100644 versioned_docs/version-2.3/developer-guide/theme/template-route-mapping.md
create mode 100644 versioned_docs/version-2.3/developer-guide/theme/template-tag.md
create mode 100644 versioned_docs/version-2.3/developer-guide/theme/template-variables.md
create mode 100644 versioned_docs/version-2.3/developer-guide/theme/template-variables/archives.md
create mode 100644 versioned_docs/version-2.3/developer-guide/theme/template-variables/author.md
create mode 100644 versioned_docs/version-2.3/developer-guide/theme/template-variables/categories.md
create mode 100644 versioned_docs/version-2.3/developer-guide/theme/template-variables/category.md
create mode 100644 versioned_docs/version-2.3/developer-guide/theme/template-variables/index_.md
create mode 100644 versioned_docs/version-2.3/developer-guide/theme/template-variables/page.md
create mode 100644 versioned_docs/version-2.3/developer-guide/theme/template-variables/post.md
create mode 100644 versioned_docs/version-2.3/developer-guide/theme/template-variables/tag.md
create mode 100644 versioned_docs/version-2.3/developer-guide/theme/template-variables/tags.md
create mode 100644 versioned_docs/version-2.3/developer-guide/theme/vo/CategoryTreeVo.md
create mode 100644 versioned_docs/version-2.3/developer-guide/theme/vo/CategoryVo.md
create mode 100644 versioned_docs/version-2.3/developer-guide/theme/vo/CommentVo.md
create mode 100644 versioned_docs/version-2.3/developer-guide/theme/vo/ContentVo.md
create mode 100644 versioned_docs/version-2.3/developer-guide/theme/vo/ContributorVo.md
create mode 100644 versioned_docs/version-2.3/developer-guide/theme/vo/ListedPostVo.md
create mode 100644 versioned_docs/version-2.3/developer-guide/theme/vo/ListedSinglePageVo.md
create mode 100644 versioned_docs/version-2.3/developer-guide/theme/vo/MenuItemVo.md
create mode 100644 versioned_docs/version-2.3/developer-guide/theme/vo/MenuVo.md
create mode 100644 versioned_docs/version-2.3/developer-guide/theme/vo/PostVo.md
create mode 100644 versioned_docs/version-2.3/developer-guide/theme/vo/ReplyVo.md
create mode 100644 versioned_docs/version-2.3/developer-guide/theme/vo/SinglePageVo.md
create mode 100644 versioned_docs/version-2.3/developer-guide/theme/vo/SiteSettingVo.md
create mode 100644 versioned_docs/version-2.3/developer-guide/theme/vo/TagVo.md
create mode 100644 versioned_docs/version-2.3/developer-guide/theme/vo/ThemeVo.md
create mode 100644 versioned_docs/version-2.3/developer-guide/theme/vo/UserVo.md
create mode 100644 versioned_docs/version-2.3/getting-started/config.md
create mode 100644 versioned_docs/version-2.3/getting-started/downloads.md
create mode 100644 versioned_docs/version-2.3/getting-started/first-post.md
create mode 100644 versioned_docs/version-2.3/getting-started/install/docker-compose.md
create mode 100644 versioned_docs/version-2.3/getting-started/install/docker.md
create mode 100644 versioned_docs/version-2.3/getting-started/install/other/nginxproxymanager.md
create mode 100644 versioned_docs/version-2.3/getting-started/install/other/oneinstack.md
create mode 100644 versioned_docs/version-2.3/getting-started/install/other/traefik.md
create mode 100644 versioned_docs/version-2.3/getting-started/install/slots/docker-args.md
create mode 100644 versioned_docs/version-2.3/getting-started/migrate-from-1.x.md
create mode 100644 versioned_docs/version-2.3/getting-started/prepare.md
create mode 100644 versioned_docs/version-2.3/intro.md
create mode 100644 versioned_docs/version-2.3/user-guide/attachments.md
create mode 100644 versioned_docs/version-2.3/user-guide/backup-migration.md
create mode 100644 versioned_docs/version-2.3/user-guide/common.md
create mode 100644 versioned_docs/version-2.3/user-guide/config.md
create mode 100644 versioned_docs/version-2.3/user-guide/faq.md
create mode 100644 versioned_docs/version-2.3/user-guide/markdown.md
create mode 100644 versioned_docs/version-2.3/user-guide/pages.md
create mode 100644 versioned_docs/version-2.3/user-guide/plugins.md
create mode 100644 versioned_docs/version-2.3/user-guide/posts.md
create mode 100644 versioned_docs/version-2.3/user-guide/settings.md
create mode 100644 versioned_docs/version-2.3/user-guide/themes.md
create mode 100644 versioned_docs/version-2.3/user-guide/users.md
create mode 100644 versioned_sidebars/version-2.3-sidebars.json
diff --git a/docs/getting-started/install/docker-compose.md b/docs/getting-started/install/docker-compose.md
index 5af5b22..fd16b2a 100644
--- a/docs/getting-started/install/docker-compose.md
+++ b/docs/getting-started/install/docker-compose.md
@@ -20,13 +20,13 @@ import DockerArgs from "./slots/docker-args.md"
## 创建容器组
-可用的 Halo 2.2.0 的 Docker 镜像:
+可用的 Halo 2.3.0 的 Docker 镜像:
- [halohub/halo](https://hub.docker.com/r/halohub/halo)
- [ghcr.io/halo-dev/halo](https://github.com/halo-dev/halo/pkgs/container/halo)
:::info 注意
-目前 Halo 2 并未更新 Docker 的 latest 标签镜像,主要因为 Halo 2 不兼容 1.x 版本,防止使用者误操作。我们推荐使用固定版本的标签,比如 `halohub/halo:2.2.0`。
+目前 Halo 2 并未更新 Docker 的 latest 标签镜像,主要因为 Halo 2 不兼容 1.x 版本,防止使用者误操作。我们推荐使用固定版本的标签,比如 `halohub/halo:2.3.0`。
:::
1. 在系统任意位置创建一个文件夹,此文档以 `~/halo` 为例。
@@ -54,7 +54,7 @@ import DockerArgs from "./slots/docker-args.md"
services:
halo:
- image: halohub/halo:2.2.0
+ image: halohub/halo:2.3.0
container_name: halo
restart: on-failure:3
depends_on:
@@ -116,7 +116,7 @@ import DockerArgs from "./slots/docker-args.md"
services:
halo:
- image: halohub/halo:2.2.0
+ image: halohub/halo:2.3.0
container_name: halo
restart: on-failure:3
depends_on:
@@ -184,7 +184,7 @@ import DockerArgs from "./slots/docker-args.md"
services:
halo:
- image: halohub/halo:2.2.0
+ image: halohub/halo:2.3.0
container_name: halo
restart: on-failure:3
volumes:
@@ -251,7 +251,7 @@ import DockerArgs from "./slots/docker-args.md"
```yaml {3}
services:
halo:
- image: halohub/halo:2.2.0
+ image: halohub/halo:2.3.0
container_name: halo
```
@@ -290,7 +290,7 @@ networks:
services:
halo:
- image: halohub/halo:2.2.0
+ image: halohub/halo:2.3.0
container_name: halo
restart: on-failure:3
volumes:
diff --git a/docs/getting-started/install/docker.md b/docs/getting-started/install/docker.md
index ea39021..8d88527 100644
--- a/docs/getting-started/install/docker.md
+++ b/docs/getting-started/install/docker.md
@@ -25,13 +25,13 @@ import DockerArgs from "./slots/docker-args.md"
## 使用 Docker 镜像
-可用的 Halo 2.2.0 的 Docker 镜像:
+可用的 Halo 2.3.0 的 Docker 镜像:
- [halohub/halo](https://hub.docker.com/r/halohub/halo)
- [ghcr.io/halo-dev/halo](https://github.com/halo-dev/halo/pkgs/container/halo)
:::info 注意
-目前 Halo 2 并未更新 Docker 的 latest 标签镜像,主要因为 Halo 2 不兼容 1.x 版本,防止使用者误操作。我们推荐使用固定版本的标签,比如 `halohub/halo:2.2.0`。
+目前 Halo 2 并未更新 Docker 的 latest 标签镜像,主要因为 Halo 2 不兼容 1.x 版本,防止使用者误操作。我们推荐使用固定版本的标签,比如 `halohub/halo:2.3.0`。
:::
1. 创建容器
@@ -42,7 +42,7 @@ import DockerArgs from "./slots/docker-args.md"
--name halo \
-p 8090:8090 \
-v ~/.halo2:/root/.halo2 \
- halohub/halo:2.2.0 \
+ halohub/halo:2.3.0 \
--halo.external-url=http://localhost:8090/ \
--halo.security.initializer.superadminusername=admin \
--halo.security.initializer.superadminpassword=P@88w0rd
@@ -73,7 +73,7 @@ import DockerArgs from "./slots/docker-args.md"
1. 拉取新版本镜像
```bash
- docker pull halohub/halo:2.2.0
+ docker pull halohub/halo:2.3.0
```
2. 停止运行中的容器
@@ -101,7 +101,7 @@ import DockerArgs from "./slots/docker-args.md"
--name halo \
-p 8090:8090 \
-v ~/.halo2:/root/.halo2 \
- halohub/halo:2.2.0 \
+ halohub/halo:2.3.0 \
--halo.external-url=http://localhost:8090/ \
--halo.security.initializer.superadminusername=admin \
--halo.security.initializer.superadminpassword=P@88w0rd
diff --git a/docs/getting-started/install/other/traefik.md b/docs/getting-started/install/other/traefik.md
index 93eaf93..85f3f80 100644
--- a/docs/getting-started/install/other/traefik.md
+++ b/docs/getting-started/install/other/traefik.md
@@ -96,7 +96,7 @@ networks:
services:
halo:
- image: halohub/halo:2.2.0
+ image: halohub/halo:2.3.0
container_name: halo
restart: on-failure:3
volumes:
diff --git a/docs/intro.md b/docs/intro.md
index 8dd79e5..7306cba 100644
--- a/docs/intro.md
+++ b/docs/intro.md
@@ -39,7 +39,7 @@ docker run \
--name halo \
-p 8090:8090 \
-v ~/.halo2:/root/.halo2 \
- halohub/halo:2.2 \
+ halohub/halo:2.3 \
--halo.external-url=http://localhost:8090/ \
--halo.security.initializer.superadminusername=admin \
--halo.security.initializer.superadminpassword=P@88w0rd
diff --git a/docs/user-guide/faq.md b/docs/user-guide/faq.md
index 7517e17..66f045b 100644
--- a/docs/user-guide/faq.md
+++ b/docs/user-guide/faq.md
@@ -113,7 +113,7 @@ server {
-v ~/.halo2.1:/root/.halo2 \
-e HALO_EXTERNAL_URL=http://localhost:8090/ \
-e HALO_SECURITY_INITIALIZER_SUPERADMINPASSWORD=P@88w0rd \
- halohub/halo:2.2.0
+ halohub/halo:2.3.0
# 第二个 Halo 容器
docker run \
@@ -123,7 +123,7 @@ server {
-v ~/.halo2.2:/root/.halo2 \
-e HALO_EXTERNAL_URL=http://localhost:8090/ \
-e HALO_SECURITY_INITIALIZER_SUPERADMINPASSWORD=P@88w0rd \
- halohub/halo:2.2.0
+ halohub/halo:2.3.0
```
更多 Docker 相关的教程请参考:[使用 Docker 部署 Halo](../getting-started/install/docker.md)
diff --git a/docusaurus.config.js b/docusaurus.config.js
index d13ea4d..27f680e 100644
--- a/docusaurus.config.js
+++ b/docusaurus.config.js
@@ -34,11 +34,11 @@ const config = {
showLastUpdateAuthor: true,
remarkPlugins: [math, mermaid],
rehypePlugins: [katex],
- lastVersion: "2.2",
+ lastVersion: "2.3",
versions: {
current: {
- label: "2.3.0-SNAPSHOT",
- path: "2.3.0-SNAPSHOT",
+ label: "2.4.0-SNAPSHOT",
+ path: "2.4.0-SNAPSHOT",
},
},
},
@@ -272,11 +272,12 @@ const config = {
if (existingPath.startsWith("/1.4/")) {
return [existingPath.replace("/1.4/", "/1.4.17/")];
}
- if (existingPath.startsWith("/2.3.0-SNAPSHOT/")) {
+ if (existingPath.startsWith("/2.4.0-SNAPSHOT/")) {
return [
- existingPath.replace("/2.3.0-SNAPSHOT/", "/2.0.0-SNAPSHOT/"),
- existingPath.replace("/2.3.0-SNAPSHOT/", "/2.1.0-SNAPSHOT/"),
- existingPath.replace("/2.3.0-SNAPSHOT/", "/2.2.0-SNAPSHOT/"),
+ existingPath.replace("/2.4.0-SNAPSHOT/", "/2.0.0-SNAPSHOT/"),
+ existingPath.replace("/2.4.0-SNAPSHOT/", "/2.1.0-SNAPSHOT/"),
+ existingPath.replace("/2.4.0-SNAPSHOT/", "/2.2.0-SNAPSHOT/"),
+ existingPath.replace("/2.4.0-SNAPSHOT/", "/2.3.0-SNAPSHOT/"),
];
}
return undefined;
diff --git a/i18n/zh-Hans/code.json b/i18n/zh-Hans/code.json
index 09fbe0f..dbcc06d 100644
--- a/i18n/zh-Hans/code.json
+++ b/i18n/zh-Hans/code.json
@@ -49,14 +49,6 @@
"message": "回到顶部",
"description": "The ARIA label for the back to top button"
},
- "theme.blog.archive.title": {
- "message": "历史博文",
- "description": "The page & hero title of the blog archive page"
- },
- "theme.blog.archive.description": {
- "message": "历史博文",
- "description": "The page & hero description of the blog archive page"
- },
"theme.blog.paginator.navAriaLabel": {
"message": "博文列表分页导航",
"description": "The ARIA label for the blog pagination"
@@ -69,6 +61,14 @@
"message": "较旧的博文",
"description": "The label used to navigate to the older blog posts page (next page)"
},
+ "theme.blog.archive.title": {
+ "message": "历史博文",
+ "description": "The page & hero title of the blog archive page"
+ },
+ "theme.blog.archive.description": {
+ "message": "历史博文",
+ "description": "The page & hero description of the blog archive page"
+ },
"theme.blog.post.paginator.navAriaLabel": {
"message": "博文分页导航",
"description": "The ARIA label for the blog posts pagination"
@@ -105,18 +105,14 @@
"message": "浅色模式",
"description": "The name for the light color mode"
},
- "theme.docs.breadcrumbs.home": {
- "message": "主页面",
- "description": "The ARIA label for the home page in the breadcrumbs"
+ "theme.docs.DocCard.categoryDescription": {
+ "message": "{count} 个项目",
+ "description": "The default description for a category card in the generated index about how many items this category includes"
},
"theme.docs.breadcrumbs.navAriaLabel": {
"message": "页面路径",
"description": "The ARIA label for the breadcrumbs"
},
- "theme.docs.DocCard.categoryDescription": {
- "message": "{count} 个项目",
- "description": "The default description for a category card in the generated index about how many items this category includes"
- },
"theme.docs.paginator.navAriaLabel": {
"message": "文档分页导航",
"description": "The ARIA label for the docs pagination"
@@ -137,9 +133,6 @@
"message": "{nDocsTagged}「{tagName}」",
"description": "The title of the page for a docs tag"
},
- "theme.docs.versionBadge.label": {
- "message": "版本:{versionLabel}"
- },
"theme.docs.versions.unreleasedVersionLabel": {
"message": "此为 {siteTitle} {versionLabel} 版尚未发行的文档。",
"description": "The label used to tell the user that he's browsing an unreleased doc version"
@@ -160,8 +153,11 @@
"message": "编辑此页",
"description": "The link label to edit the current page"
},
+ "theme.docs.versionBadge.label": {
+ "message": "版本:{versionLabel}"
+ },
"theme.common.headingLinkTitle": {
- "message": "标题的直接链接",
+ "message": "{heading}的直接链接",
"description": "Title for link to heading"
},
"theme.lastUpdated.atDate": {
@@ -212,6 +208,10 @@
"message": "打开/收起侧边栏菜单「{label}」",
"description": "The ARIA label to toggle the collapsible sidebar category"
},
+ "theme.NavBar.navAriaLabel": {
+ "message": "Main",
+ "description": "The ARIA label for the main navigation"
+ },
"theme.navbar.mobileLanguageDropdown.label": {
"message": "选择语言",
"description": "The label for the mobile language switcher dropdown"
@@ -220,6 +220,10 @@
"message": "本页总览",
"description": "The label used by the button on the collapsible TOC component"
},
+ "theme.blog.post.readingTime.plurals": {
+ "message": "阅读需 {readingTime} 分钟",
+ "description": "Pluralized label for \"{readingTime} min read\". Use as much plural forms (separated by \"|\") as your language support (see https://www.unicode.org/cldr/cldr-aux/charts/34/supplemental/language_plural_rules.html)"
+ },
"theme.blog.post.readMore": {
"message": "阅读更多",
"description": "The label used in blog post item excerpts to link to full blog posts"
@@ -228,9 +232,9 @@
"message": "阅读 {title} 的全文",
"description": "The ARIA label for the link to full blog posts from excerpts"
},
- "theme.blog.post.readingTime.plurals": {
- "message": "阅读需 {readingTime} 分钟",
- "description": "Pluralized label for \"{readingTime} min read\". Use as much plural forms (separated by \"|\") as your language support (see https://www.unicode.org/cldr/cldr-aux/charts/34/supplemental/language_plural_rules.html)"
+ "theme.docs.breadcrumbs.home": {
+ "message": "主页面",
+ "description": "The ARIA label for the home page in the breadcrumbs"
},
"theme.docs.sidebar.collapseButtonTitle": {
"message": "收起侧边栏",
@@ -240,8 +244,12 @@
"message": "收起侧边栏",
"description": "The title attribute for collapse button of doc sidebar"
},
+ "theme.docs.sidebar.navAriaLabel": {
+ "message": "Docs sidebar",
+ "description": "The ARIA label for the sidebar navigation"
+ },
"theme.docs.sidebar.closeSidebarButtonAriaLabel": {
- "message": "Close navigation bar",
+ "message": "关闭导航栏",
"description": "The ARIA label for close button of mobile sidebar"
},
"theme.navbar.mobileSidebarSecondaryMenu.backButtonLabel": {
@@ -249,7 +257,7 @@
"description": "The label of the back button to return to main menu, inside the mobile navbar sidebar secondary menu (notably used to display the docs sidebar)"
},
"theme.docs.sidebar.toggleSidebarButtonAriaLabel": {
- "message": "Toggle navigation bar",
+ "message": "切换导航栏",
"description": "The ARIA label for hamburger menu button of mobile navigation"
},
"theme.docs.sidebar.expandButtonTitle": {
diff --git a/i18n/zh-Hans/docusaurus-plugin-content-docs/current.json b/i18n/zh-Hans/docusaurus-plugin-content-docs/current.json
index f0e73d9..1660e14 100644
--- a/i18n/zh-Hans/docusaurus-plugin-content-docs/current.json
+++ b/i18n/zh-Hans/docusaurus-plugin-content-docs/current.json
@@ -1,6 +1,6 @@
{
"version.label": {
- "message": "2.3.0-SNAPSHOT",
+ "message": "2.4.0-SNAPSHOT",
"description": "The label for version current"
},
"sidebar.tutorialSidebar.category.入门": {
@@ -31,6 +31,18 @@
"message": "插件开发",
"description": "The label for category 插件开发 in sidebar tutorialSidebar"
},
+ "sidebar.tutorialSidebar.category.基础": {
+ "message": "基础",
+ "description": "The label for category 基础 in sidebar tutorialSidebar"
+ },
+ "sidebar.tutorialSidebar.category.示例": {
+ "message": "示例",
+ "description": "The label for category 示例 in sidebar tutorialSidebar"
+ },
+ "sidebar.tutorialSidebar.category.API 参考": {
+ "message": "API 参考",
+ "description": "The label for category API 参考 in sidebar tutorialSidebar"
+ },
"sidebar.tutorialSidebar.category.主题开发": {
"message": "主题开发",
"description": "The label for category 主题开发 in sidebar tutorialSidebar"
diff --git a/i18n/zh-Hans/docusaurus-plugin-content-docs/version-2.2.json b/i18n/zh-Hans/docusaurus-plugin-content-docs/version-2.2.json
index 0d679c6..2a3e512 100644
--- a/i18n/zh-Hans/docusaurus-plugin-content-docs/version-2.2.json
+++ b/i18n/zh-Hans/docusaurus-plugin-content-docs/version-2.2.json
@@ -31,6 +31,18 @@
"message": "插件开发",
"description": "The label for category 插件开发 in sidebar tutorialSidebar"
},
+ "sidebar.tutorialSidebar.category.基础": {
+ "message": "基础",
+ "description": "The label for category 基础 in sidebar tutorialSidebar"
+ },
+ "sidebar.tutorialSidebar.category.示例": {
+ "message": "示例",
+ "description": "The label for category 示例 in sidebar tutorialSidebar"
+ },
+ "sidebar.tutorialSidebar.category.API 参考": {
+ "message": "API 参考",
+ "description": "The label for category API 参考 in sidebar tutorialSidebar"
+ },
"sidebar.tutorialSidebar.category.主题开发": {
"message": "主题开发",
"description": "The label for category 主题开发 in sidebar tutorialSidebar"
diff --git a/i18n/zh-Hans/docusaurus-plugin-content-docs/version-2.3.json b/i18n/zh-Hans/docusaurus-plugin-content-docs/version-2.3.json
new file mode 100644
index 0000000..66cae0d
--- /dev/null
+++ b/i18n/zh-Hans/docusaurus-plugin-content-docs/version-2.3.json
@@ -0,0 +1,62 @@
+{
+ "version.label": {
+ "message": "2.3",
+ "description": "The label for version 2.3"
+ },
+ "sidebar.tutorialSidebar.category.入门": {
+ "message": "入门",
+ "description": "The label for category 入门 in sidebar tutorialSidebar"
+ },
+ "sidebar.tutorialSidebar.category.安装指南": {
+ "message": "安装指南",
+ "description": "The label for category 安装指南 in sidebar tutorialSidebar"
+ },
+ "sidebar.tutorialSidebar.category.其他指南": {
+ "message": "其他指南",
+ "description": "The label for category 其他指南 in sidebar tutorialSidebar"
+ },
+ "sidebar.tutorialSidebar.category.用户指南": {
+ "message": "用户指南",
+ "description": "The label for category 用户指南 in sidebar tutorialSidebar"
+ },
+ "sidebar.tutorialSidebar.category.开发者指南": {
+ "message": "开发者指南",
+ "description": "The label for category 开发者指南 in sidebar tutorialSidebar"
+ },
+ "sidebar.tutorialSidebar.category.系统开发": {
+ "message": "系统开发",
+ "description": "The label for category 系统开发 in sidebar tutorialSidebar"
+ },
+ "sidebar.tutorialSidebar.category.插件开发": {
+ "message": "插件开发",
+ "description": "The label for category 插件开发 in sidebar tutorialSidebar"
+ },
+ "sidebar.tutorialSidebar.category.基础": {
+ "message": "基础",
+ "description": "The label for category 基础 in sidebar tutorialSidebar"
+ },
+ "sidebar.tutorialSidebar.category.示例": {
+ "message": "示例",
+ "description": "The label for category 示例 in sidebar tutorialSidebar"
+ },
+ "sidebar.tutorialSidebar.category.API 参考": {
+ "message": "API 参考",
+ "description": "The label for category API 参考 in sidebar tutorialSidebar"
+ },
+ "sidebar.tutorialSidebar.category.主题开发": {
+ "message": "主题开发",
+ "description": "The label for category 主题开发 in sidebar tutorialSidebar"
+ },
+ "sidebar.tutorialSidebar.category.模板变量": {
+ "message": "模板变量",
+ "description": "The label for category 模板变量 in sidebar tutorialSidebar"
+ },
+ "sidebar.tutorialSidebar.category.Finder API": {
+ "message": "Finder API",
+ "description": "The label for category Finder API in sidebar tutorialSidebar"
+ },
+ "sidebar.tutorialSidebar.category.参与贡献": {
+ "message": "参与贡献",
+ "description": "The label for category 参与贡献 in sidebar tutorialSidebar"
+ }
+}
diff --git a/versioned_docs/version-2.3/about.md b/versioned_docs/version-2.3/about.md
new file mode 100644
index 0000000..d0eb731
--- /dev/null
+++ b/versioned_docs/version-2.3/about.md
@@ -0,0 +1,16 @@
+---
+title: 关于文档
+description: 关于本文档站点的一些说明
+---
+
+:::note
+此文档使用 [Docusaurus](https://docusaurus.io/) 搭建,感谢 [Docusaurus](https://github.com/facebook/docusaurus) 社区所做的贡献。
+:::
+
+## 参与贡献
+
+:::tip
+如果你发现文档中有不正确或者需要添加的内容,非常欢迎参与到文档编辑当中。
+:::
+
+当前文档的仓库地址为 [halo-dev/docs](https://github.com/halo-dev/docs) ,所以你可以 fork 此仓库,修改之后提交 `Pull request` 等待我们合并即可。
diff --git a/versioned_docs/version-2.3/contribution/issue.md b/versioned_docs/version-2.3/contribution/issue.md
new file mode 100644
index 0000000..6ab45dd
--- /dev/null
+++ b/versioned_docs/version-2.3/contribution/issue.md
@@ -0,0 +1,28 @@
+---
+title: 问题反馈
+description: 问题反馈渠道及指南
+---
+
+:::info
+如果您在使用过程中遇到了什么问题,您可以通过下面的方式反馈,但请尽量按照要求提出反馈。
+:::
+
+## GitHub Issues
+
+链接:
+
+
+
+ Halo [ˈheɪloʊ],好用又强大的开源建站工具。
+
+
+
+
+
+
+ The
+
+ HTML
+
+ specification
+ Hello Halo
+ 驿外
+
+
+ [1]
+
+
+ 断桥边,寂寞开无主。已是黄昏独自愁,更着风和雨
+
+ 驿(yì)外:指荒僻、冷清之地。驿,驿站。
+
+ ↩︎
+
+
+ todos
+
+
+
+
++
+ todos
+
+//...
+```
+
+至此,我们完成了从零开始创建一个 TodoList 插件的所有步骤,希望可以帮助你对 Halo 的插件开发有一个整体的了解。
diff --git a/versioned_docs/version-2.3/developer-guide/plugin/hello-world.md b/versioned_docs/version-2.3/developer-guide/plugin/hello-world.md
new file mode 100644
index 0000000..4aed17c
--- /dev/null
+++ b/versioned_docs/version-2.3/developer-guide/plugin/hello-world.md
@@ -0,0 +1,55 @@
+---
+title: 入门
+description: 了解如何构建你的第一个插件并在 Halo 中使用它。
+---
+
+Halo 提供了一个模板仓库用于创建插件:
+
+1. 打开 [plugin-starter](https://github.com/halo-dev/plugin-starter)。
+2. 点击 `Use this template` -> `Create a new repository`。
+3. 如图所示填写仓库名后点击 `Create repository from template`。
+![create-repository-for-hello-world-plugin](/img/create-repository-for-hello-world-plugin.png)
+
+你现在已经基于 Halo 插件模板创建了自己的存储库。接下来,你需要将它 `git clone` 到你的计算机上并使用 `IntelliJ IDEA` 打开它。
+
+## 运行插件
+
+现在有了一个空项目,我们需要让插件能最最小化的运行起来。
+
+这很简单,首先你需要构建插件:只需要在 `halo-plugin-hello-world` 项目目录下执行 Gradle 命令
+
+```shell
+./gradlew build
+```
+
+或者使用 `IntelliJ IDEA` 提供的 `Gradle build` 即可完成插件项目的构建。
+
+第二步就是使用它。
+
+使用 `IntelliJ IDEA` 打开 Halo,参考 [Halo 开发环境运行](../core/run.md)。
+然后在 `src/main/resources` 下创建一个 `application-local.yaml` 文件并做如下配置:
+
+```yaml
+halo:
+ plugin:
+ runtime-mode: development
+ fixed-plugin-path:
+ # 配置为插件绝对路径
+ - /Users/guqing/halo-plugin-hello-world
+```
+
+使用此 local profile 启动 Halo:
+
+```shell
+# macOS / Linux
+./gradlew bootRun --args="--spring.profiles.active=dev,local"
+
+# Windows
+gradlew.bat bootRun --args="--spring.profiles.active=dev,win,local"
+```
+
+然后访问 `http://localhost:8090/console`
+
+在插件列表将能看到插件已经被正确启动,并且在左侧菜单添加了一个 `示例分组`,其下有一个名 `示例页面` 的菜单。
+
+![hello-world-in-plugin-list](/img/plugin-hello-world.png)
diff --git a/versioned_docs/version-2.3/developer-guide/plugin/introduction.md b/versioned_docs/version-2.3/developer-guide/plugin/introduction.md
new file mode 100644
index 0000000..43f7f41
--- /dev/null
+++ b/versioned_docs/version-2.3/developer-guide/plugin/introduction.md
@@ -0,0 +1,27 @@
+---
+title: 介绍
+description: 插件开发的准备工作
+---
+插件是由社区创建的程序或应用程序,用于扩展 Halo 的功能。插件在 Halo 中运行并执行一项或多项用户操作。它们允许用户根据自己的喜好扩展或修改 Halo。
+
+## 插件管理
+
+### 支持
+
+Halo 不提供对第三方应用程序的支持。作为插件的开发者,你有责任帮助插件的用户解决技术问题(issues)。
+当提交插件到 [awesome-halo](https://github.com/halo-sigs/awesome-halo) 时,
+您需要添加服务支持联系人(Support contact)。这可以是用户可以联系的电子邮件地址,也可以是网站或帮助中心的链接。
+
+### 版本控制
+
+为了保持 Halo 生态系统的健康、可靠和安全,每次您对自己拥有的插件进行重大更新时,我们建议在遵循 [semantic versioning spec](http://semver.org/) 的基础上,
+发布新版本。遵循语义版本控制规范有助于其他依赖你代码的开发人员了解给定版本的更改程度,并在必要时调整自己的代码。
+
+我们建议你的包版本从1.0.0开始并递增,如下:
+
+| Code status | Stage | Rule | Example version |
+| ----------------------------------------- | ------------- | -------------------------------------------- | --------------- |
+| First release | New product | 从 1.0.0 开始 | 1.0.0 |
+| Backward compatible bug fixes | Patch release | 增加第三位数字 | 1.0.1 |
+| Backward compatible new features | Minor release | 增加中间数字并将最后一位重置为零 | 1.1.0 |
+| Changes that break backward compatibility | Major release | 增加第一位数字并将中间和最后一位数字重置为零 | 2.0.0 |
diff --git a/versioned_docs/version-2.3/developer-guide/plugin/lifecycle.md b/versioned_docs/version-2.3/developer-guide/plugin/lifecycle.md
new file mode 100644
index 0000000..11f8a84
--- /dev/null
+++ b/versioned_docs/version-2.3/developer-guide/plugin/lifecycle.md
@@ -0,0 +1,37 @@
+---
+title: 生命周期
+description: 了解插件从启动到卸载的过程
+---
+
+根据[插件项目文件结构](./structure.md)所展示的 `StarterPlugin.java` 中,具有如下方法:
+
+```java
+ @Override
+ public void start() {
+ System.out.println("插件启动成功!");
+ }
+
+ @Override
+ public void stop() {
+ System.out.println("插件停止!");
+ }
+
+ @Override
+ public void delete() {
+ System.out.println("插件被删除!");
+ }
+```
+
+### 插件启动
+
+插件被安装后,只加载了插件的 `plugin.yaml`,类及其他资源文件的加载均在启动时进行。
+当插件加载完类文件并准备好启动插件后就会调用插件的 `start()` 方法,这有助于插件在启动时做一些事情,例如初始化。
+
+### 插件停止
+
+插件停止时,会删除在启动时创建的自定义资源,例如插件设置等通过 `yaml` 创建的自定义模型资源。
+插件定义的自定义模型也需要在此时清理掉。
+
+### 插件删除
+
+插件被卸载时被调用。
diff --git a/versioned_docs/version-2.3/developer-guide/plugin/manifest.md b/versioned_docs/version-2.3/developer-guide/plugin/manifest.md
new file mode 100644
index 0000000..21ec079
--- /dev/null
+++ b/versioned_docs/version-2.3/developer-guide/plugin/manifest.md
@@ -0,0 +1,44 @@
+---
+title: 插件资源文件
+description: 了解插件资源文件 plugin.yaml 如何配置
+---
+
+一个典型的插件资源文件 plugin.yaml 如下所示:
+
+```yaml
+ apiVersion: plugin.halo.run/v1alpha1
+ kind: Plugin
+ metadata:
+ name: hello-world
+ spec:
+ enabled: true
+ requires: ">=2.0.0"
+ author:
+ name: halo-dev
+ website: https://halo.run
+ logo: https://halo.run/logo
+ # settingName: hello-world-settings
+ # configMapName: hello-world-configmap
+ homepage: https://github.com/guqing/halo-plugin-hello-world
+ displayName: "插件 Hello world"
+ description: "插件开发的 hello world,用于学习如何开发一个简单的 Halo 插件"
+ license:
+ - name: "MIT"
+```
+
+- `apiVersion` 和 `kind`:为固定写法,每个插件写法都是一样的不可变更。
+- `metadata.name`:它是插件的唯一标识名,包含不超过 253 个字符,仅包含小写字母、数字或“-”,以字母或数字开头,以字母或数字结尾。
+- `spec.enabled`:表示是否要在安装时自动启用插件,仅在插件开发模式下有效。
+- `spec.requires`:支持的 Halo 版本,SemVer expression, e.g. ">=2.0.0"
+- `spec.author`:插件作者的名称和可获得支持的网站地址。
+- `spec.logo`:插件 logo,可以是域名或相对于项目 src/main/resources 目录的相对文件路径。
+- `spec.settingName`:插件配置表单名称,参考表单定义,不需要表单设置则可删除。
+- `spec.configMapName`:表单定义对应的值标识名, 推荐命名为 "插件名-configmap",没有配置 `settingName` 则不需要配置此项。
+- `spec.homepage`:通常为插件的 Github 仓库链接,或可联系到插件作者或插件官网或帮助中心链接等。
+- `spec.displayName`:插件的显示名称,它通常是以少数几个字来概括插件的用途。
+- `spec.description`:插件描述,用一段话来介绍插件的用途。
+- `spec.license`:插件使用的软件协议,参考:
+
+
+
+
+```
+
+## 类型定义
+
+### CategoryVo
+
+
+
+```
+
+## listReply(commentName,page,size)
+
+```js
+commentFinder.listReply(commentName,page,size)
+```
+
+### 描述
+
+根据评论的 `metadata.name` 和分页参数获取回复列表。
+
+### 参数
+
+1. `commentName:string` - 评论的唯一标识 `metadata.name`。
+1. `page:int` - 分页页码,从 1 开始
+2. `size:int` - 分页条数
+
+### 返回值
+
+[#ListResult
+
+```
+
+## 类型定义
+
+### CommentVo
+
+
+
+
+
+
+
+
+
+
+
+```
+
+## 类型定义
+
+### SiteStatsVo
+
+```json title="SiteStatsVo"
+{
+ "visit": 0, // 访问数量
+ "upvote": 0, // 点赞数量
+ "comment": 0, // 评论数量
+ "post": 0, // 文章数量
+ "category": 0 // 分类数量
+}
+```
diff --git a/versioned_docs/version-2.3/developer-guide/theme/finder-apis/tag.md b/versioned_docs/version-2.3/developer-guide/theme/finder-apis/tag.md
new file mode 100644
index 0000000..315168e
--- /dev/null
+++ b/versioned_docs/version-2.3/developer-guide/theme/finder-apis/tag.md
@@ -0,0 +1,139 @@
+---
+title: 文章标签
+description: 文章标签 - TagFinder
+---
+
+import TagVo from "../vo/TagVo.md"
+
+## getByName(name)
+
+```js
+tagFinder.getByName(name)
+```
+
+### 描述
+
+根据 `metadata.name` 获取标签。
+
+### 参数
+
+1. `name:string` - 标签的唯一标识 `metadata.name`。
+
+### 返回值
+
+[#TagVo](#tagvo)
+
+### 示例
+
+```html
+
+```
+
+## getByNames(names)
+
+```js
+tagFinder.getByNames(names)
+```
+
+### 描述
+
+根据一组 `metadata.name` 获取标签。
+
+### 参数
+
+1. `names:ListHello World!
+
+
+
+```
+
+## 安装主题
+
+目前我们已经创建好了主题的项目,但并不会直接被 Halo 识别和加载,请按照以下的步骤安装和启用主题:
+
+1. 访问 Console 管理界面,进入主题管理页面。
+2. 点击右上角 `切换主题` 按钮,在选择主题弹窗中切换到 `未安装` 页面。
+3. 找到我们刚刚创建的主题,点击安装即可。
+4. 选择刚刚安装的主题,点击右上角的 `启用` 按钮。
+
+此时 Halo 就已经成功加载并使用了该主题。然后我们访问首页 [http://localhost:8090](http://localhost:8090) 就可以看到我们刚刚编写的 `index.html` 模板渲染后的页面了。
diff --git a/versioned_docs/version-2.3/developer-guide/theme/settings.md b/versioned_docs/version-2.3/developer-guide/theme/settings.md
new file mode 100644
index 0000000..b0bb850
--- /dev/null
+++ b/versioned_docs/version-2.3/developer-guide/theme/settings.md
@@ -0,0 +1,135 @@
+---
+title: 设置选项
+description: 介绍主题如何定义以及使用设置选项。
+---
+
+此文档将讲解如何在主题中定义和使用设置项,如 [表单定义](../form-schema) 中所说,目前 Halo 的 Console 端的所有表单都使用了 [FormKit](https://github.com/formkit/formkit) 的方案。
+
+:::tip
+有关 FormKit 定义表单的更多信息,请参考 [表单定义](../form-schema),此文档仅针对主题中的设置项进行讲解。
+:::
+
+## 定义表单
+
+在主题中要使用设置项非常简单,只需要在主题根目录提供 `settings.yaml`,然后在 `theme.yaml` 中配置 `spec.settingName` 和 `spec.configMapName` 即可,在安装或者初始化主题的时候会自动识别并在 Console 端的主题设置中生成表单。
+
+### 示例
+
+```yaml title="theme-foo/theme.yaml" {14,15}
+apiVersion: theme.halo.run/v1alpha1
+kind: Theme
+metadata:
+ name: theme-foo
+spec:
+ displayName: 示例主题
+ author:
+ name: halo-dev
+ website: https://halo.run
+ description: 一个示例主题
+ logo: https://halo.run/logo
+ website: https://github.com/halo-sigs/theme-foo
+ repo: https://github.com/halo-sigs/theme-foo.git
+ settingName: "theme-foo-setting"
+ configMapName: "theme-foo-configMap"
+ version: 1.0.0
+ require: 2.0.0
+```
+
+:::tip
+`settingName` 和 `configMapName` 必须同时配置,且可以自定义名称,但是 `settingName` 必须和 Setting 的 `metadata.name` 一致。
+:::
+
+```yaml title="theme-foo/settings.yaml" {4}
+apiVersion: v1alpha1
+kind: Setting
+metadata:
+ name: theme-foo-setting
+spec:
+ forms:
+ - group: style
+ label: 样式
+ formSchema:
+ - $formkit: radio
+ name: color_scheme
+ label: 默认配色
+ value: system
+ options:
+ - label: 跟随系统
+ value: system
+ - label: 深色
+ value: dark
+ - label: 浅色
+ value: light
+ - $formkit: color
+ name: background_color
+ label: 背景颜色
+ value: "#f2f2f2"
+ - group: layout
+ label: 布局
+ formSchema:
+ - $formkit: radio
+ name: nav
+ label: 导航栏布局
+ value: "single"
+ options:
+ - label: 单栏
+ value: "single"
+ - label: 双栏
+ value: "double"
+```
+
+:::tip
+Setting 资源的 `metadata.name` 必须和 `theme.yaml` 中的 `spec.settingName` 一致。
+:::
+
+### 在主题模板中使用
+
+在主题模板中,需要以 `theme.config.[group].[name]` 的形式进行调用。
+
+其中:
+
+1. `group`: 即 `spec.forms[].group`,如上面示例中的 `style` 和 `layout`。
+2. `name`: 即 `spec.forms[].formSchema[].name`,如上面示例中的 `color_scheme` 和 `nav`。
+
+示例:
+
+```html
+
+
+
+```
+
+```html
+
+
+
+
+
+
+
+
+
+```
+
+```html title="/templates/category-tree.html"
+
+
+```
+
+### _templateId
+
+#### 变量值
+
+`categories`
+
+## 类型定义
+
+### CategoryTreeVo
+
+
+
+
+```
+
+### _templateId
+
+#### 变量值
+
+`tags`
+
+## 类型定义
+
+### TagVo
+
+
+官网
+文档
+社区
+Gitee
+Telegram 频道
+
+ is maintained by the
+
+ W3C
+
+ .
+Halo
+```
+
+```html
+
+```
+
+```html
+https://halo.run
+```
+
+## Emoji
+
+支持将 Emoji 的文字形式转化为图片形式。
+
+示例:
+
+```markdown
+:100:
+```
+
+渲染结果:
+
+```html
+💯
+```
+
+## 脚注(Footnote)
+
+语法规则:
+
+```markdown
+[^脚注名]
+[^脚注名]: 脚注内容
+```
+
+示例:
+
+```html
+驿外[^1]断桥边,寂寞开无主。已是黄昏独自愁,更着风和雨
+[^1]: 驿(yì)外:指荒僻、冷清之地。驿,驿站。
+```
+
+渲染结果:
+
+```html
+
+
+
+
+
+
+
+
+ Some nice text +
++ Some even nicer text +
+``` + +## 任务列表(Task Lists) + +示例: + +```markdown +- [x] Apple +- [ ] Banana +``` + +渲染结果: + +```html +