-
-
-
- - - - -- el.focus()" - @blur="handleUpdate()" - @keyup.enter="handleUpdate()" - @keyup.escape="selectedTodo = undefined" - /> -
-
- - - -
- -Halo [ˈheɪloʊ],强大易用的开源建站工具。
- -
-
-
-
-
-
-
-官网
-文档
-社区
-Gitee
-Telegram 频道
-
- - - -
- -## 贡献 - -参考 [CONTRIBUTING](https://github.com/halo-dev/halo/blob/master/CONTRIBUTING.md)。 - - - -## 状态 - -![Repobeats analytics](https://repobeats.axiom.co/api/embed/ad008b2151c22e7cf734d2688befaa795d593b95.svg "Repobeats analytics image") diff --git a/versioned_docs/version-2.10/user-guide/attachments.md b/versioned_docs/version-2.10/user-guide/attachments.md deleted file mode 100644 index 36fdb732..00000000 --- a/versioned_docs/version-2.10/user-guide/attachments.md +++ /dev/null @@ -1,108 +0,0 @@ ---- -title: 附件 -description: 附件管理相关功能说明 ---- - -## 存储策略 - -为了能够更加灵活地管理附件的存储位置,Halo 提供了存储策略的概念。 - -Halo 默认提供了本地的存储策略类型,你还可以通过安装插件的方式扩展其他的存储策略类型。一个存储策略包含了存储提供者,具体存储位置等使用该类型存储所必要的各种信息。 - -:::info -目前 Halo 官方维护了两个存储策略插件,可以根据需要选择安装: - -1. 阿里云 OSS:[https://halo.run/store/apps/app-wCJCD](https://halo.run/store/apps/app-wCJCD) -2. Amazon S3 协议(主流云存储厂商均支持):[https://halo.run/store/apps/app-Qxhpp](https://halo.run/store/apps/app-Qxhpp) -::: - -你可以点击附件页面右上角的 `存储策略` 按钮对存储策略进行管理。 - -### 新建存储策略 - -点击存储策略列表右上方的 `+` 添加按钮即可新建一个存储策略。 - -![添加存储策略](/img/user-guide/attachments/attachment-policy-add.png) - -添加时首先需要选择一种存储策略类型,系统内置的存储策略为本地存储,图中的 `S3 Object Storage` 由[对象存储(Amazon S3 协议)](https://halo.run/store/apps/app-Qxhpp)提供,此文档以本地存储为例。 - -![添加本地存储策略](/img/user-guide/attachments/attachment-policy-add-local.png) - -添加一个本地存储时,你需要输入名称及存储位置信息。其中的存储位置决定了使用该存储策略的附件,在服务器上的实际存储路径,路径规则为 `{Halo 工作目录}/attachments/{存储位置}`,其中的 Halo 工作目录由安装时指定的参数决定,默认为 `~/.halo2`。 -:::info -默认的 Docker 部署方式,实际存储位置由挂载到 Halo 容器工作目录的服务器目录所决定。 -::: - -### 管理存储策略 - -点击存储策略列表指定存储所在行后方的 `···` 更多操作按钮即可对该存储策略进行编辑或删除。 - -![存储策略操作](/img/user-guide/attachments/attachment-policy-operate.png) - -:::info -为了保护附件安全避免用户误操作,当存储策略下存在附件时,该存储策略不允许删除。如果确定要删除某个存储策略及该存储策略中的所有附件,可以先按照存储策略对附件进行筛选,先批量删除存储策略下的所有附件,再删除存储策略。 -::: - -## 附件分组 - -通过附件分组功能可以方便地将同一类型、同一用途的附件划分到一个分组中,方便后续附件的管理和插件。 - -附件所使用的存储策略决定了附件的实际存储位置和 URL 规则,而附件分组功能仅是逻辑上的归类划分,不会影响附件的存储位置及 URL。 - -### 新建分组 - -点击附件列表上方的 `添加分组` 按钮即可新建一个分组。 - -![添加分组](/img/user-guide/attachments/attachment-group-add.png) - -### 删除分组 - -点击附件列表上方指定分组上的 `···` 更多按钮,可以对分组进行重命名或删除操作。 - -Halo 目前提供了两种分组删除策略: - -1. **删除并将附件移动至未分组**:分组被删将被删除,分组下的附件移动到未分组中。 -2. **删除并同时删除附件**:先删除下的所有附件后,再删除该分组。 - - :::warning - 当使用 `删除并同时删除附件` 方式时,分组下的所有附件会被同时删除且不可恢复、无法找回,请谨慎进行该操作。 - ::: - -## 上传附件 - -点击附件列表右上方的 `上传` 按钮即可上传新的附件到 Halo。 - -![上传附件](/img/user-guide/attachments/attachment-upload.png) - -1. **分组选择**:你可以选择需要上传到的分组,为了方便,选择之后会在浏览器记住这个选项。 -2. **存储策略选择**:你可以选择需要使用的存储策略,为了方便,选择之后会在浏览器记住这个选项。 -3. **上传区域**:同时支持拖拽文件、点击上传区域选择文件、粘贴文件。 - -## 查看附件 - -点击附件列表中的某一个附件即可查看该附件的详细信息。 - -![附件详情](/img/user-guide/attachments/attachment-detail.png) - -1. **预览区域**:目前支持图片、视频、音频的预览。 -2. **链接**:目前可以显示并复制链接、HTML 格式代码、Markdown 格式代码。 - -## 删除附件 - -目前有两种删除附件的方式,你可以选中一些附件进行批量删除或者点击指定附件所在行后方的 `···` 更多按钮,对单个附件进行删除操作。 - -![批量操作附件](/img/user-guide/attachments/attachment-batch-operate.png) - -:::warning -附件删除后不可恢复、无法找回,请谨慎进行该操作。 -::: - -## 移动附件 - -![附件移动](/img/user-guide/attachments/attachment-move.png) - -与批量删除操作类似,你可以选中多个附件后在上方的批量操作按钮中选择 `移动` 操作,将所选附件移动到指定的分组中。 - -:::info -需要注意的是,目前移动附件只支持移动分组,不支持存储策略的移动。 -::: diff --git a/versioned_docs/version-2.10/user-guide/backup.md b/versioned_docs/version-2.10/user-guide/backup.md deleted file mode 100644 index f18d004d..00000000 --- a/versioned_docs/version-2.10/user-guide/backup.md +++ /dev/null @@ -1,48 +0,0 @@ ---- -title: 备份与恢复 -description: 备份与恢复功能说明 ---- - -从 Halo 2.8 开始,Halo 内置了备份和恢复的功能,可以在 Console 中一键备份和恢复完整的数据。 - -## 备份 - -在 Console 中,点击左侧菜单的 `备份`,进入备份页面。 - -点击右上角的 `创建备份` 按钮,即可创建一个新的备份请求,需要注意的是,创建备份请求并不会立即开始备份,而是会在后台异步执行,因此需要等待一段时间才能看到备份的结果。 - -![Create a backup](/img/user-guide/backup/create-backup.png) - -备份中: - -![Backup running](/img/user-guide/backup/backup-running.png) - -备份完成: - -![Backup complete](/img/user-guide/backup/backup-complete.png) - -## 恢复 - -:::info 在恢复前,需要了解以下几点: - -1. 恢复不限制部署方式,也不限制数据库,也就是说新站点的部署方式和数据库类型可以和备份的站点不同。 -2. 恢复过程可能会持续较长时间,期间请勿刷新页面。 -3. 在恢复的过程中,虽然已有的数据不会被清理掉,但如果有冲突的数据将被覆盖。 -4. 恢复完成之后会提示停止运行 Halo,停止之后可能需要手动运行。 -::: - -在 Console 中,点击左侧菜单的 `备份`,进入备份页面,然后点击 `恢复` 选项卡即可进入恢复界面,阅读完注意事项之后点击 `开始恢复` 按钮即可显示备份文件上传界面。 - -![Before restore](/img/user-guide/backup/before-restore.png) -![Restore](/img/user-guide/backup/restore.png) - -选择备份文件后,点击 `上传` 按钮即可开始上传备份文件,上传完成后会自动开始恢复。 - -![Restore upload](/img/user-guide/backup/restore-upload.png) - -恢复完成,会提示重启 Halo,点击 `确定` 按钮即可重启 Halo。 - -![Restore complete](/img/user-guide/backup/restore-complete.png) -![Waiting restart](/img/user-guide/backup/waiting-restart.png) - -最后,建议去服务器检查 Halo 的运行状态,如果没有设置自动重启,需要手动重启。 diff --git a/versioned_docs/version-2.10/user-guide/common.md b/versioned_docs/version-2.10/user-guide/common.md deleted file mode 100644 index 1e9c7678..00000000 --- a/versioned_docs/version-2.10/user-guide/common.md +++ /dev/null @@ -1,63 +0,0 @@ ---- -title: 基础说明 -description: Halo 中的基本概念说明 ---- -Halo 作为一款好用又强大的开源建站工具,配合上不同的模板与插件,可以很好地帮助你构建你心中的理想站点。它可以是你公司的官方网站,可以是你的个人博客,也可以是团队共享的知识库,甚至可以是一个论坛、一个商城。 - -为了更好地发挥出 Halo 的价值,这里有一些基本概念需要你进行了解。 - -## 控制台 - -控制台是一个 Halo 站点的后台管理系统,只有具有权限的登录用户才可以正常使用控制台功能。你可以在控制台中管理站点中的文章、页面、附件等各种内容,调整站点使用的主题或各种设置。 - -:::info -控制台的访问入口为 `/console`。忘记密码请参考[常见问题中的忘记密码章节](../user-guide/faq.md#忘记密码怎么办)进行处理。 -::: - -### 界面说明 - -![控制台界面说明](/img/user-guide/common/控制台界面说明.png) - -1. **全局搜索框**:点击或通过快捷键 `Ctrl+K` 可以呼出全局搜索框,输入关键字可以在所有文章、页面、附件、用户及设置项等所有内容中进行全局搜索。 -2. **侧边导航栏**:对控制台提供的功能进行导航,点击导航栏条目会在页面右侧显示对应功能页面。安装某些插件可能会扩展导航栏条目。 -3. **用户信息展示及操作**:展示当前登录用户的头像、名称及角色等信息,`···` 中提供更多用户相关操作。 -4. **功能页面标题**: 当前所在的功能页面标题。 -5. **功能页面操作区域**:当前所在功能页面提供的功能操作按钮。 -6. **功能页面主体**: 当前所在功能页面的主体显示区域,显示内容及形式视具体页面功能而定。 - -## 文章 - -文章是 Halo 中的核心概念之一。一篇文章主要由纯文本的文章标题和富文本的文章内容构成,除此之外你还可以为文章设置所属分类、添加标签、设置封面图等。 - -在不同的站点类型不同的应用场景中,文章的实际含义也会有所区别,它可以代表一则公司新闻、一篇博客或者产品文档中的某一章节。 - -## 页面 - -页面与文章类似,同样包含页面标题和富文本形式的页面内容。与文章不同的是页面无法设置所属分类和标签信息,一般用于站点中单一展示功能的页面,例如常见的站点关于页面、联系我们页面等。 - -## 分类 - -通过分类可以更好地组织管理文章。分类之间存在层级关系,一个父分类下可包含多个子分类。一篇文章可以同时属于多个分类。 - -## 标签 - -标签可以用于为文章添加特定标记,与分类不同的是标签之间没有层级关系。一篇文章也可以同时添加多个标签。 - -## 附件 - -由用户上传的,供文章、主题设置等各个地方引用的文件。多用于文章配图、主题配图、用户头像等场景。 - -## 主题 - -包含了各种站点页面模板的资源包。用户访问 Halo 站点浏览到的内容及样式,由 Halo 管理端所配置使用的主题所决定。 - -## 插件 - -用于扩展 Halo 功能的软件包。插件独立于 Halo 核心应用,可以单独安装、升级、卸载。 - -:::info -目前有两个官方渠道可以获取主题和插件: - -- 应用市场:[https://halo.run/store/apps](https://halo.run/store/apps) -- Awesome Halo:[https://github.com/halo-sigs/awesome-halo](https://github.com/halo-sigs/awesome-halo) -::: diff --git a/versioned_docs/version-2.10/user-guide/faq.md b/versioned_docs/version-2.10/user-guide/faq.md deleted file mode 100644 index e00318c2..00000000 --- a/versioned_docs/version-2.10/user-guide/faq.md +++ /dev/null @@ -1,139 +0,0 @@ ---- -title: 常见问题 -description: 使用上的常见问题 ---- - -### Halo 是什么? - -**Halo** [ˈheɪloʊ],是一款好用又强大的[开源建站工具](https://github.com/halo-dev/halo),配合上不同的模板与插件,可以很好地帮助你构建你心中的理想站点。它可以是你公司的官方网站,可以是你的个人博客,也可以是团队共享的知识库,甚至可以是一个论坛、一个商城。 - -### 忘记密码怎么办? - -如果安装时没有指定 `halo.security.initializer.superadminpassword` 参数,系统会随机一个初始化密码,可以通过下面的命令进行查看。 - -```bash -docker logs halo | grep 'Generated random password:' | tail -1 -``` - -如果你已经修改过初始化密码后忘记了密码,假设系统中还有可用的具有用户管理权限的其他用户,可以通过该用户参考[修改用户密码](./users#修改用户密码)部分,修改指定用户的密码。没有可用的具有用户管理权限的管理员用户时,目前需要通过删除数据库记录的方式,触发管理员用户的初始化任务进行密码重置。 - -假设 Halo 使用容器方式运行,容器名称为 `halo`,具体操作如下。 - -1. 停止 Halo 服务 - - ```bash - docker stop halo - ``` - -2. 连接 Halo 使用的数据库,删除管理员的用户记录(配置文件中的 `halo.security.initializer.superadminusername`),这里以 `admin` 为例 - - 以容器化部署的 PostgreSQL 为例,假设容器名称为 `halo_db`。 - - ```bash - # 进入 psql 命令行 - docker exec -it halo_db psql halo - - # 执行下面的 SQL 删除 admin 用户记录 - delete from extensions where name like '/registry/users/admin'; - ``` - - :::info - 其他类型的数据库处理方式类似,先通过命令行或数据库连接工具连接到数据库后,再执行上面的 `delete` SQL 语句。 - ::: - -3. 重新启动 Halo 服务 - - ```bash - docker start halo - ``` - -4. 登录 Halo 控制台 - - 如果部署时通过 `halo.security.initializer.superadminusername` 和 `halo.security.initializer.superadminpassword` 参数指定了初始化用户名和密码,使用该用户名密码登录控制台。 - - 如果未指定该配置,则默认用户名为 `admin`,默认密码将打印在 Halo 容器日志中,可以通过如下命令查看。 - - ```bash - docker logs halo | grep 'Generated random password:' | tail -1 - ``` - -### 附件上传提示 `413 Request Entity Too Large` 如何解决? - -这可能是由于 Nginx 的上传大小限制所导致的。可以在 Nginx 的配置文件下的 server 节点加入 `client_max_body_size 1024m;` 即可解决,如果 1024m 还不够,请自行断定,详细配置参考如下: - -```nginx {4} -server { - listen 80; - server_name localhost; - client_max_body_size 1024m; -} -``` - -### 网站加载速度慢,是什么问题导致的? - -导致网站加载速度慢的原因有很多,建议打开浏览器的 Developer Tools 查看具体是哪个请求时间过长,然后进行针对性的优化。这里提供一些可能的原因: - -1. 服务器带宽过小,很多厂商提供的最低带宽一般是 1M。 -2. 服务器地区过远,这个需要自行取舍。 -3. 网站上的图片过多或者体积过大,可以尝试压缩图片,或者参考 [优雅的让 Halo 支持 webp 图片输出](https://www.halo.run/archives/halo-and-webp) 的教程配置一个 Webp 图片的服务。 -4. 部分主题的静态资源可能是由公共 CDN 提供的,当这个 CDN 不稳定的时候可能会导致加载变慢。 - -一些提升网站加载速度的建议: - -1. 尽量不要选择 1M 带宽的服务器,可以根据自己的预算适当提升带宽。一般 3M 以上即可。 -2. 尽量购买网络质量较好的服务器,或者较近区域的服务器。 -3. 如果一定需要放大量的图片,建议先无损压缩一下再使用。 -4. 如上所说,可以自行搭建一个 Webp 图片转换的服务,参考 [优雅的让 Halo 支持 webp 图片输出](https://www.halo.run/archives/halo-and-webp)。 -5. 如果网站的静态资源加载慢是由三方 CDN 导致的,可以自行修改主题。 -6. 可以使用全站 CDN 加速的方案。 - -### 如何在一台服务器上部署多个站点? - -使用 Docker 创建多个容器,因为使用 Docker 可以将内部的工作目录映射到宿主机的任何目录,可以参考以下创建容器的方式: - - ```bash - # 第一个 Halo 容器 - docker run \ - -it -d \ - --name halo-1 \ - -p 8090:8090 \ - -v ~/.halo2:/root/.halo2 \ - halohub/halo:2.10 \ - - # 第二个 Halo 容器 - docker run \ - -it -d \ - --name halo-2 \ - -p 8091:8090 \ - -v ~/.halo2_2:/root/.halo2 \ - halohub/halo:2.10 \ - ``` - -更多 Docker 相关的教程请参考:[使用 Docker 部署 Halo](../getting-started/install/docker.md) - -### 如何查看运行日志? - -1. 可以在 Console 端的概览页面下载最近的日志文件。 -2. 使用 docker logs 命令进行查看。 - - ```bash - # '-f' 滚动更新日志 - # '-n 200' 从倒数第200行开始查看 - # 更多帮助可以查看 'docker logs --help' - docker logs -f halo -n 200 - ``` - -### 前台样式丢失,如何解决? - -前台样式不正常或者丢失有很多种问题的可能,最快捷定位问题的方式就是打开浏览器控制台查看具体请求的错误,以下列出了部分导致出现该问题的常见原因: - -1. 后台设置的 `博客地址` 与实际访问地址不一致。也可能是开启了 https 之后,无法正常加载 http 资源,将 `博客地址` 改为 https 协议即可。 -2. Nginx 配置了静态资源缓存,但没有设置 `proxy_pass`,参考如下: - - ```nginx - location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|flv|mp4|ico)$ { - proxy_pass http://halo; - expires 30d; - access_log off; - } - ``` diff --git a/versioned_docs/version-2.10/user-guide/pages.md b/versioned_docs/version-2.10/user-guide/pages.md deleted file mode 100644 index 39521369..00000000 --- a/versioned_docs/version-2.10/user-guide/pages.md +++ /dev/null @@ -1,20 +0,0 @@ ---- -title: 页面 -description: 页面管理相关功能说明 ---- - -页面与文章类似,同样包含页面标题和富文本形式的页面内容。与文章不同的是页面无法设置所属分类和标签信息,一般用于站点中单一展示功能的页面,例如常见的站点关于页面、联系我们页面等。 - -自定义页面的访问链接为 `/{slug}` 其中 `slug` 为自定义页面的别名。 - -对于如下的关于页面,便可以通过 `/about` 地址进行访问。 - -![链接功能页面](/img/user-guide/pages/page-about.png) - -:::info -自定义页面默认使用主题端的 `page.html` 模板进行渲染,如果主题中提供了针对自定义页面的其他模板,用户可以通过修改自定义页面高级设置中的自定义模板设置进行使用。 -::: - -#### 页面操作 - -对于页面的新建、设置、发布及删除等操作,与文章操作基本一致,具体操作请参考[《用户指南-文章》](./posts.md)章节,此处不再赘述。 diff --git a/versioned_docs/version-2.10/user-guide/plugins.md b/versioned_docs/version-2.10/user-guide/plugins.md deleted file mode 100644 index c601c580..00000000 --- a/versioned_docs/version-2.10/user-guide/plugins.md +++ /dev/null @@ -1,79 +0,0 @@ ---- -title: 插件 -description: 插件管理相关功能说明 ---- - -插件是用于扩展 Halo 功能的软件包。插件独立于 Halo 核心应用,可以单独安装、升级、卸载。 - -本文档仅对插件的基本管理功能进行说明,关于插件的详细使用说明请参考对应插件的文档。 - -:::info -目前有两个官方渠道可以获取插件: - -- 应用市场:[https://halo.run/store/apps](https://halo.run/store/apps) -- Awesome Halo:[https://github.com/halo-sigs/awesome-halo](https://github.com/halo-sigs/awesome-halo) -::: - -## 安装插件 - -进入插件管理页面,点击右上角的 `安装` 按钮即可打开插件安装的对话框。 - -和主题一样,插件同时支持本地上传安装和远程下载安装。 - -### 本地上传安装 - -![安装插件](/img/user-guide/plugins/plugin-install.png) - -插件安装成功后,便会出现在插件管理的列表中。 - -### 远程下载安装 - -同样,在安装插件的对话框中,切换到远程下载选项卡,输入插件的下载地址,点击 `下载` 按钮即可开始下载插件。 - -插件安装成功后,便会出现在插件管理的列表中。 - -此外, Halo 的[应用市场](https://halo.run/store/apps)也支持通过输入站点地址的方式自动跳转到你的站点进行安装,演示视频: - - - - -:::info -插件安装成功后会提示你是否需要启动该插件,你可以根据需要选择是否启动。 -::: - -## 插件设置 - -点击插件列表中的某个插件进入插件详情页面。与主题设置类似,插件详情页面默认显示出了当前插件的详细信息,在详细信息标签页后方的标签页,即为插件提供的相关设置。不同的插件提供的设置项各不相同,设置项的详细说明请参考对应插件的文档。 - -![插件设置](/img/user-guide/plugins/plugin-setting.png) - -此处以 `plugin-umami` 插件为例。 - -:::info -你可以点击插件列表指定插件所在行后方的 `···` 更多操作按钮,选择其中的 `重置` 选项将插件提供的设置项恢复为默认值。 -::: - -## 启用/禁用插件 - -点击插件列表或插件详情页中的启用/禁用开关,即可切换插件的启用禁用状态。 - -![插件启用/禁用](/img/user-guide/plugins/plugin-switch.png) - -## 升级插件 - -点击具体插件的 `···` 更多操作按钮,选择其中的 `升级` 选项即可打开升级插件的对话框,与安装插件一样,同时支持本地上传和远程下载。 - -## 重置 - -如果你需要清空所有插件配置并重新配置插件,你可以通过 `···` 更多操作中的 `重置` 选项将主题提供的设置项恢复为默认值。 - -## 卸载插件 - -点击插件列表指定插件所在行后方的 `···` 更多操作按钮,选择其中的 `卸载` 选项即可对当前插件进行卸载。 - -![卸载插件](/img/user-guide/plugins/plugin-uninstall.png) - -:::info -目前提供了 `卸载` 及 `卸载并删除配置` 两种卸载方式。 -仅卸载插件时插件的配置信息会进行保留,当重新安装插件后还可以使用之前已保存的配置。 -::: diff --git a/versioned_docs/version-2.10/user-guide/posts.md b/versioned_docs/version-2.10/user-guide/posts.md deleted file mode 100644 index 21cdf08f..00000000 --- a/versioned_docs/version-2.10/user-guide/posts.md +++ /dev/null @@ -1,139 +0,0 @@ ---- -title: 文章 -description: 文章管理相关功能说明 ---- -## 新建文章 - -目前你可以通过以下两种方式新建一篇文章: - -1. 点击仪表盘快捷访问组件中的创建文章 -2. 通过左侧导航栏进入文章页面,点击右上角的新建按钮 - -进入到如下页面后,你就可以开始编辑自己的文章内容了: - -![文章编辑界面说明](/img/user-guide/posts/post-edit.png) - -1. **编辑器切换**:如果安装了其他的编辑器插件,那么就可以在这个位置选择所需的编辑器。 -2. **预览**:点击预览按钮可以在未发布的时候预览文章的渲染效果。 -3. **保存**:仅保存文章内容,但是不发布。 -4. **发布**:保存并发布文章内容。 - -:::info -Halo 支持通过插件来拓展文章编辑器,目前 Halo 官方维护了另外两款编辑器插件,可以按需安装使用: - -1. StackEdit:[https://halo.run/store/apps/app-hDXMG](https://halo.run/store/apps/app-hDXMG) -2. ByteMD:[https://halo.run/store/apps/app-HTyhC](https://halo.run/store/apps/app-HTyhC) -::: - -## 文章设置 - -当你想修改一篇文章的标题、所属分类等信息时,你可以通过以下方式进行操作: - -1. 点击文章列表指定文章所在行的 `···` 更多操作按钮,选择设置。 -2. 在文章列表点击指定文章的标题进入文章编辑页面,点击页面右上角的设置按钮。 - -![文章编辑界面说明](/img/user-guide/posts/post-setting.png) - -### 设置说明 - -- **标题**:用于在主题端显示的文章标题。 -- **别名**:通常用于生成文章访问地址,如:`/archives/{slug}`。 -- **分类目录**:文章所属分类,方便用户区分文章类型进行针对性浏览,一篇文章可以属于多个分类。 -- **标签**:文章添加的标签,方便用户更进一步标识文章信息,一篇文章可以添加多个标签。 -- **自动生成摘要**:文章摘要是对文章内容的概括性描述。 - - **是**: 系统根据文章内容,自动生成一段摘要。 - - **否**: 用户自行输入文章摘要文本。 -- **自定义摘要**:用户自行输入的文章摘要文本,仅当 `自动生成摘要` 为否时生效。 -- **允许评论**:是否允许用户在主题端浏览文章时对该文章发起评论。 -- **是否置顶**:文章是否排序在文章列表的最顶部。 -- **可见性**:访问站点主题端时,哪些人可以看到这篇文章。 - - **公开**:所有用户均可看到这篇文章,包括未登录用户。 - - **私有**:仅文章作者可以看到这篇文章。 -- **发表时间**:手动指定文章的发表时间,未指定时以实际发布时间为准。 -- **自定义模板**:自定义文章的渲染模板,由主题提供支持。 -- **封面图**:文章封面图设置,需要主题支持该功能。 -- **元数据**:供主题、插件使用的额外数据信息。比如主题在文章页面提供了一个下载按钮,那么就可以通过元数据来指定下载地址。 - -## 发布及取消发布 - -对于已发布的文章,默认可以通过站点地址进行公开访问,用户可以在文章高级设置中修改可见性。 - -你可以在上文介绍的文章设置对话框中,修改文章的发布状态。 - -在文章设置对话框中,若文章当前处于已发布状态,下方会显示取消发布按钮。若文章处于未发布状态,下方则不会显示发布按钮。 - -## 删除文章 - -当你不再需要一篇文章时,你可以通过以下方式删除该文章: - -1. 点击文章列表指定文章所在行的 `···` 更多操作按钮,选择删除。 -2. 勾选文章列表中的全选/多选框,选中一篇或多篇文章进行批量删除。 - -文章删除后会进入回收站中,点击右上角的回收站按钮进入回收站。在回收站中,你可以永久删除或恢复指定的文章。 - -:::warning -文章永久删除后将从数据库删除该记录,后续无法再恢复找回。 -::: - -## 文章分类管理 - -通过分类可以更好地组织管理文章。分类之间存在层级关系,一个父分类下可包含多个子分类。一篇文章可以同时属于多个分类。 - -在文章管理页面,点击页面右上角的 `分类` 按钮即可进入分类管理页面。 - -### 新建文章分类 - -点击分类管理页面右上角的 `新建` 按钮即可新建一个分类。 - -![文章分类编辑界面说明](/img/user-guide/posts/category-create.png) - -#### 设置说明 - -- **名称**:用于在主题端显示的分类名称。 -- **别名**:通常用于生成分类归档页面的访问地址。默认路径规则为 `/categories/{slug}`,其中 `slug` 为分类别名,访问该地址即可浏览该分类下的所有文章。分类页路由前缀可[在设置中修改](./settings#主题路由设置)。 -- **自定义模板**:自定义分类归档页面的渲染模板,由主题提供支持。 -- **封面图**:分类封面图设置,需要主题支持该功能。 -- **描述**:关于该文章分类的更多描述信息。 -- **元数据**:供主题、插件使用的额外数据信息。例如部分主题期望使用不同的颜色对分类进行区分,便可以使用该功能为分类增加颜色相关的元数据。 - -### 调整分类层级 - -分类之间存在层级关系,一个父分类下可包含多个子分类。 - -你可以按住分类前的图标,通过拖拽来调整分类间的层级关系和顺序。 - -![移动文章分类](/img/user-guide/posts/category-move.gif) - -### 修改/删除分类 - -点击指定分类所在行后方的 `···` 更多操作按钮,可以对文章分类进行修改或删除。 - -:::warning -文章分类删除后,对应文章的关联将被解除,且该操作不可恢复,请谨慎进行该操作。 -::: - -## 文章标签管理 - -标签可以用于为文章添加特定标记,与分类不同的是标签之间没有层级关系。一篇文章也可以同时添加多个标签。 - -### 新建文章标签 - -点击分类管理页面右上角的 `新建` 按钮即可新建一个分类。 - -![标签编辑界面说明](/img/user-guide/posts/tag-create.png) - -#### 设置说明 - -- **名称**:用于在主题端显示的标签名称。 -- **别名**:通常用于生成标签归档页面的访问地址。默认路径规则为 `/tags/{slug}`,其中 `slug` 为标签别名,访问该地址即可浏览具有该标签的所有文章。标签页路由前缀可[在设置中修改](./settings#主题路由设置)。 -- **颜色**:用于在控制台及主题端显示的标签颜色,主题端显示颜色需要主题支持该功能。 -- **封面图**:标签封面图设置,需要主题支持该功能。 -- **元数据**:供主题、插件使用的额外数据信息。 - -### 修改/删除标签 - -在列表模式下,点击指定标签所在行后方的 `···` 更多操作按钮,可以对文章标签进行修改或删除。 - -:::warning -文章标签删除后,对应文章的关联将被解除,且该操作不可恢复,请谨慎进行该操作。 -::: diff --git a/versioned_docs/version-2.10/user-guide/settings.md b/versioned_docs/version-2.10/user-guide/settings.md deleted file mode 100644 index a16b2787..00000000 --- a/versioned_docs/version-2.10/user-guide/settings.md +++ /dev/null @@ -1,113 +0,0 @@ ---- -title: 站点设置 -description: 站点设置相关功能说明 ---- - -## 基本设置 - -Halo 提供了以下站点基本信息设置: - -- **站点标题** -- **站点副标题** -- **Logo** -- **Favicon** - -在控制台设置完成后,主题端可以通过特定的表达式获取到这些信息并且在对应的位置进行展示。具体是否读取使用这些配置、在哪些位置显示这些信息由使用的不同主题而决定。 - -以 Halo 2.0 的[默认主题 Earth](https://github.com/halo-dev/theme-earth) 为例,这些设置信息将在如下位置进行展示。 - -![默认主题基本设置说明](/img/user-guide/settings/setting-basic.png) - -## 文章设置 - -针对主题端的文章展示,Halo 提供了以下设置项: - -- **文章列表显示条数** -- **归档页文章显示条数** -- **分类页文章显示条数** -- **标签页文章显示条数** - -## SEO 设置 - -针对站点的 SEO(搜索引擎优化)需求,Halo 提供了以下设置项: - -- **屏蔽搜索引擎**:配置后会在所有页面 HTML 源码的 head 部分添加 ``。 -- **站点关键词**:格式为以`,`分隔的关键词列表,配置后会在所有页面 HTML 源码的 head 部分添加 ` content="{关键词}" />`。 - - :::warning 注意 - 目前主流的搜索引擎(如 Google、Bing、百度搜索等)已经不再使用该标签作为关键词的参考,因此该设置项的作用已经不大,未来我们也可能会移除该设置项。 - ::: - -- **站点描述**:配置后会在所有页面 HTML 源码的 head 部分添加 ``。 - -## 用户设置 - -- **开放注册**:是否允许访客注册,勾选之后在登录页面会显示注册入口。 -- **默认角色**:新注册用户的默认角色。 - -## 评论设置 - -针对站点的评论功能,Halo 提供了以下设置项: - -- **启用评论**:全局评论功能开关配置,修改后影响所有文章、页面的评论功能。 -- **新评论审核**:新增的评论是否需要在控制台进行审核,审核通过后其他访问者才能看到该条评论。 -- **仅允许注册用户评论**:开启后只有登录用户才能添加评论,关闭后匿名(未登录)的访客也可以通过自行填写昵称、邮箱、网址等信息进行评论。 - -## 主题路由设置 - -针对访问站点各种类型页面的 URL 生成规则,Halo 提供了以下主题路由设置项: - -- **分类页路由前缀**:定位到分类列表页面以及分类归档页面。 - - 默认的分类列表页面 URL 规则前缀为 `/categories` - - 默认的分类归档页面 URL 规则前缀为 `/categories/{slug}` -- **标签页路由前缀**:定位到标签列表页面以及标签归档页面。 - - 默认的标签列表页面 URL 规则前缀为 `/tags` - - 默认的标签归档页面 URL 规则前缀为 `/tags/{slug}` -- **归档页路由前缀**:定位到文章归档页面的 URL 规则前缀,默认为 `/archives`。 -- **文章详情页访问规则**:定位到具体文章详情页面的 URL 规则前缀,默认为 `/archives/{slug}` ,用户可从以下路径规则进行选择: - - `/archives/{slug}` - - `/archives/{name}` - - `/?p={name}` - - `/?p={slug}` - - `/?p={slug}` - - `/{year}/{slug}` - - `/{year}/{month}/{slug}` - - `/{year}/{month}/{day}/{slug}` - - :::info 变量说明 - - `slug`:文章别名 - - `name`:文章 `metadata.name` 字段值 - - `year`:四位数格式的文章发布年份 - - `month`:两位数格式的文章发布月份 - - `day`:两位数格式的文章发布日 - ::: - -## 代码注入 - -你可以使用代码注入功能,在特定类型的页面中注入额外的代码。你可以通过该功能覆盖或补充部分主题 CSS 样式,或者引入额外的 JavaScript 脚本扩展主题端功能。 - -- **全局 head 标签**:该代码将会被注入到所有页面的 head 标签中。 -- **内容页 head 标签**:该代码将会被注入到文章、页面详情页的 head 标签中。 -- **页脚**:该代码将会被注入到所有页面的页脚中。 - -## 通知设置 - -从本版本开始, Halo 提供了 **通知** 功能,当有新的评论、留言、回复等事件发生时,Halo 会通过配置的方式通知站长或者相关用户。同时,个人中心配置的电子邮箱也会作为通知的接收邮箱。 - -### 邮件通知 - -- **启用邮件通知器**:开启后,当有新的评论、留言、回复等事件发生时,Halo 会通过 **邮件** 的方式通知站长或者相关用户。 -- **用户名**:你需要在此处填写你的 **邮箱账号**。 -- **密码**:你需要在此处填写你的 **邮箱密码** 或相关的 **授权码**,具体请参考你所使用邮箱的相关说明。 -- **显示名称**:你需要在此处填写你的 **邮箱显示名称**,该名称将会作为邮件发送者的名称显示。 -- **SMTP 服务器地址**:你需要在此处填写你的 **SMTP 服务器地址**,具体请参考你所使用邮箱的相关说明。 -- **端口号**:你需要在此处填写你的 **SMTP 服务器端口号**,具体请参考你所使用邮箱的相关说明。 -- **加密方式**:你需要在此处选择你的 **SMTP 服务器加密方式**,具体请参考你所使用邮箱的相关说明。 - -> 常见邮箱服务商的文档如下: -> -> - [QQ 邮箱](https://service.mail.qq.com/detail/0/310) -> - [163 邮箱](https://help.mail.163.com/faqDetail.do?code=d7a5dc8471cd0c0e8b4b8f4f8e49998b374173cfe9171305fa1ce630d7f67ac2a5feb28b66796d3b) -> - [Gmail](https://support.google.com/mail/answer/7104828?hl=zh-Hans) -> - [阿里云企业邮箱](https://help.aliyun.com/document_detail/36687.html) -> - [腾讯企业邮箱](https://open.work.weixin.qq.com/help2/pc/19870) diff --git a/versioned_docs/version-2.10/user-guide/themes.md b/versioned_docs/version-2.10/user-guide/themes.md deleted file mode 100644 index 60dac413..00000000 --- a/versioned_docs/version-2.10/user-guide/themes.md +++ /dev/null @@ -1,96 +0,0 @@ ---- -title: 主题 -description: 主题管理相关功能说明 ---- - -主题包含了各种站点页面模板的资源包。用户访问 Halo 站点浏览到的内容及样式,由 Halo 管理端所配置使用的主题所决定。 - -:::info -目前有两个官方渠道可以获取主题: - -- 应用市场:[https://halo.run/store/apps](https://halo.run/store/apps) -- Awesome Halo:[https://github.com/halo-sigs/awesome-halo](https://github.com/halo-sigs/awesome-halo) -::: - -## 安装主题 - -点击主题页面右上方的 `主题管理` 按钮即可弹出主题管理对话框。 - -目前 Halo 提供了两种主题安装方式。 - -### 本地上传安装 - -你可以点击主题管理对话框下方的 `安装主题` 按钮,在弹出的安装主题对话框中上传主题压缩包。 - -![安装主题](/img/user-guide/themes/theme-install.png) - -主题安装成功后,便会出现在已安装主题列表中。 - -### 远程下载安装 - -同样,在安装主题的对话框中,切换到远程下载选项卡,输入主题的下载地址,点击 `下载` 按钮即可开始下载主题。 - -下载完成后,便会出现在已安装主题列表中。 - -此外, Halo 的[应用市场](https://halo.run/store/apps)也支持通过输入站点地址的方式自动跳转到你的站点进行安装,演示视频: - - - - -## 切换主题 - -同样点击主题页面右上方的 `主题管理` 按钮弹出主题管理对话框。 - -在弹框中点击选中要切换的目标主题,此时页面返回到主题详情页,点击右上角的 `启用` 按钮即可将当前主题切换为实际使用的主题。 - -:::info -仅选中主题不点击右上角的 `启用` 按钮时,不会影响当前实际使用的主题。 -::: - -你也可以在已安装主题列表中,通过后方 `···` 的更多操作中的启用选项直接启用指定的主题。 - -## 修改主题设置 - -主题页面默认显示出了当前主题的详细信息,在详细信息标签页后方的标签页,即为主题提供的相关设置。不同的主题提供的设置项各不相同,设置项的详细说明请参考对应主题的文档。 - -![主题设置](/img/user-guide/themes/theme-setting.png) - -以 Halo 的默认主题 Earth 为例,该主题提供了布局、样式、侧边栏、页脚及备案设置共五组配置项。 - -:::info -你可以点击主题列表指定主题所在行后方的 `···` 更多操作按钮,选择其中的 `重置` 选项将主题提供的设置项恢复为默认值。 -::: - -## 预览主题 - -通过预览功能,你可以在不更改当前启用主题的情况下查看不同主题的效果。点击主题详情页面右上角的 `预览` 按钮预览当前主题,或者进入已安装主题列表,通过后方 `···` 的更多操作中的预览选项预览指定的主题。 - -在主题预览页面你可以切换不同分辨率的设备,模拟主题在不同终端下的显示效果。也可以通过右上角的功能菜单切换预览的主题,或者调整当前主题的设置,查看不同设置下主题所展现的区别。 - -演示视频: - - - - -## 升级主题 - -点击主题详情页右上角的 `···` 更多操作按钮,选择其中的 `升级` 选项即可打开升级主题的对话框,与安装主题一样,同时支持本地上传和远程下载。 - -## 重载主题配置 - -如果当前主题提供的设置项发生变化,可以通过 `···` 更多操作中的 `重载主题配置` 选项对主题配置项进行更新。 - -## 重置 - -如果你需要清空所有主题配置并重新配置主题,你可以通过 `···` 更多操作中的 `重置` 选项将主题提供的设置项恢复为默认值。 - -## 卸载主题 - -进入已安装主题列表,点击指定主题所在行后方的 `···` 更多操作按钮,选择其中的 `卸载` 选项即可对当前主题进行卸载。 - -![卸载主题](/img/user-guide/themes/theme-uninstall.png) - -:::info -目前提供了 `卸载` 及 `卸载并删除配置` 两种卸载方式。 -仅卸载主题时主题的配置信息会进行保留,当重新安装主题后还可以使用之前已保存的配置。 -::: diff --git a/versioned_docs/version-2.10/user-guide/users.md b/versioned_docs/version-2.10/user-guide/users.md deleted file mode 100644 index c025a32c..00000000 --- a/versioned_docs/version-2.10/user-guide/users.md +++ /dev/null @@ -1,111 +0,0 @@ ---- -title: 用户与权限 -description: 用户管理、权限配置相关功能说明 ---- - -## 概览 - -Halo 2.0 版本采用了基于角色的权限控制(RBAC)体系。不同于之前 1.x 版本的单用户设计,现在你可以创建多个用户并且通过赋予不同用户不同角色的方式,为他们分配不同的权限。 - -## 用户 - -点击左侧导航栏的 `用户` 条目进入用户管理页面。 - -### 创建用户 - -在用户管理页面,点击右上角的 `添加用户` 按钮即可弹出新建用户对话框。 - -![创建用户](/img/user-guide/users/user-setting.png) - -目前支持配置的用户属性有: - -- **用户名**:用户登录 Halo 控制台使用的用户名,不可与已有的用户名重复; -- **显示名称**:用于显示文章作者等用户信息时使用的,更友好的用户名称; -- **密码** -- **电子邮箱** -- **手机号** -- **头像** -- **描述** -- **元数据**:供主题、插件使用的额外数据信息。例如部分主题期望展示作者的学历、工作单位等信息,便可以使用该功能为用户增加相关的元数据。 - -### 其他操作 - -点击用户列表中的 `···` 更多操作按钮,可以对指定用户进行修改资料、修改密码等其他更多操作。 - -![用户列表其他操作](/img/user-guide/users/user-operate.png) - -#### 修改用户资料 - -你可以修改除用户名以外的所有资料,具有用户管理相关权限的用户,也可对其他用户的资料进行修改。 - -#### 修改用户密码 - -对于已有的用户,你可以在 `···` 更多操作中修改指定用户的登录密码。 - -#### 分配角色 - -对于已有的用户,你可以在 `···` 更多操作中为该用户分配角色,分配角色后该用户具有角色所对应的权限。 - -:::info -修改用户分配的角色会影响用户所拥有的权限,可能影响用户使用。 -::: - -#### 删除用户 - -对于已有的用户,你可以在 `···` 更多操作中删除该用户。 - -:::warning -删除用户后,该用户之前创建的文章、页面等内容的作者信息将会丢失,可能影响站点内容浏览。此操作不可恢复。 -::: - -## 角色 - -如下图所示,在用户管理页面,点击右上角红色区域的 `角色管理` 按钮,即可进入到角色管理页面。 - -![角色管理](/img/user-guide/users/role-management.png) - -### 创建角色 - -Halo 提供了全新创建和基于已有角色创建两种角色创建方式。 - -#### 全新创建 - -点击角色管理页面右上角的 `新建角色` 按钮即可弹出新建角色对话框,通过这种方式创建的角色默认未勾选任何权限,你需要在对话框中点击切换到权限标签页,为该角色勾选需要的权限。 - -#### 基于已有角色创建 - -当系统中已经存在一些基础角色时,你可以点击某个角色所在行中的 `···` 更多操作按钮,选择 `基于此角色创建` 来创建一个新的角色。通过这种方式创建的角色默认继承了原有角色的权限,但你同样可以对新角色的权限进行进一步调整。 - -![基于已有角色创建角色](/img/user-guide/users/role-fork.png) - -### 修改角色信息 - -对于已有的角色,你可以在 `···` 更多操作中修改指定角色的名称和该角色所拥有的权限。 - -### 其他操作 - -对于已有的角色,你可以在 `···` 更多操作中删除指定角色。 - -:::warning -删除角色后,分配了该角色的用户会丧失对应的权限,影响用户使用。此操作不可恢复。 -::: - -## 身份认证 - -目前 Halo 默认仅支持本地身份认证,但可以通过插件的方式拓展其他三方的身份认证方式。 - -:::info -目前 Halo 官方提供的身份认证插件: - -- OAuth2 认证:[https://halo.run/store/apps/app-ESVDK](https://halo.run/store/apps/app-ESVDK) -::: - -你可以在用户管理界面的右上角点击 `身份认证` 按钮,进入身份认证管理页面。 - -![身份认证](/img/user-guide/users/auth-providers-entry.png) - -进入身份认证管理页面之后,如果你已经安装了提供身份认证方式的插件,你就可以在列表中看到对应的身份认证方式,你可以对其进行设置并启用。 - -![身份认证方式](/img/user-guide/users/auth-providers.png) - -> 这里是安装了 [OAuth2 认证](https://halo.run/store/apps/app-ESVDK) 插件,提供了 `GitHub`、`GitLab`、`Gitee` 三种 OAuth2 认证方式。 diff --git a/versioned_docs/version-2.11/about.md b/versioned_docs/version-2.11/about.md deleted file mode 100644 index d0eb7313..00000000 --- a/versioned_docs/version-2.11/about.md +++ /dev/null @@ -1,16 +0,0 @@ ---- -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.11/contribution/issue.md b/versioned_docs/version-2.11/contribution/issue.md deleted file mode 100644 index f1184855..00000000 --- a/versioned_docs/version-2.11/contribution/issue.md +++ /dev/null @@ -1,28 +0,0 @@ ---- -title: 问题反馈 -description: 问题反馈渠道及指南 ---- - -:::info -如果您在使用过程中遇到了什么问题,您可以通过下面的方式反馈,但请尽量按照要求提出反馈。 -::: - -## GitHub Issues - -链接:[https://github.com/halo-dev/halo/issues](https://github.com/halo-dev/halo/issues) - -如果你在使用过程中,遇到了一些 bug 或者需要添加某些新特性,请尽量在 GitHub Issues 进行反馈,这非常有助于我们跟踪解决此问题,您也可以很方便的接收到处理状态。 - -建议步骤: - -1. 在 [Issues 列表](https://github.com/halo-dev/halo/issues) 搜索相关问题,看看是否有其他人已经提到了此问题。 -2. 如果当前还没有人遇到您类似的问题,那么请点击右上角的 `New issue` 按钮创建新的 issue。 -3. 选择正确的反馈类型。 -4. 请尽可能详细的按照模板填写内容。 -5. 点击 `Submit new issue` 提交 issue。 - -## Halo 官方社区 - -链接:[https://bbs.halo.run](https://bbs.halo.run) - -此平台主要目的用于与其他 Halo 用户进行交流。但如果您对 GitHub 不是很熟悉或者没有账号,您也可以在此平台进行反馈。 diff --git a/versioned_docs/version-2.11/contribution/pr.md b/versioned_docs/version-2.11/contribution/pr.md deleted file mode 100644 index 10d26ffb..00000000 --- a/versioned_docs/version-2.11/contribution/pr.md +++ /dev/null @@ -1,110 +0,0 @@ ---- -title: 代码贡献 -description: 代码贡献指南 ---- - -欢迎关注并有想法参与 Halo 的开发,以下是关于如何参与到 Halo 项目的指南,仅供参考。 - -## 发现 Issue - -所有的代码尽可能都有依据(Issue),不是凭空产生。 - -### 寻找一个 Good First Issue - -> 这个步骤非常适合首次贡献者。 - -在 [halo-dev](https://github.com/halo-dev) 和 [halo-sigs](https://github.com/halo-sigs) 组织下,有非常多的仓库。每个仓库下都有可能包含一些“首次贡献者”友好的 Issue,主要是为了给贡献者提供一个友好的体验。 该类 Issue -一般会用 `good-first-issue` 标签标记。标签 `good-first-issue` 表示该 Issue 不需要对 Halo 有深入的理解也能够参与。 - -请点击:[good-first-issue](https://github.com/issues?q=org%3Ahalo-dev+is%3Aopen+is%3Aissue+label%3A%22good+first+issue%22+no%3Aassignee+) -查看关于 Halo 的 Good First Issue。 - -### 认领 Issue - -若对任何一个 Issue 感兴趣,请尝试在 Issue 进行回复,讨论解决 Issue 的思路。确定后可直接通过 `/assign` 或者 `/assign @GitHub 用户名` 认领这个 -Issue。这样可避免两位贡献者在同一个问题上花时间。 - -## 代码贡献步骤 - -1. Fork 此仓库 - - 点击 Halo 仓库主页右上角的 `Fork` 按钮即可。 - -2. Clone 仓库到本地 - - ```bash - git clone https://github.com/{YOUR_USERNAME}/halo --recursive - # 或者 git clone git@github.com:{YOUR_USERNAME}/halo.git --recursive - ``` - -3. 添加主仓库 - - 添加主仓库方便未来同步主仓库最新的 commits 以及创建新的分支。 - - ```bash - git remote add upstream https://github.com/halo-dev/halo.git - # 或者 git remote add upstream git@github.com:halo-dev/halo.git - git fetch upstream main - ``` - -4. 创建新的开发分支 - - 我们需要从主仓库的主分支创建一个新的开发分支。 - - ```bash - git checkout upstream/main - git checkout -b {BRANCH_NAME} - ``` - -5. 提交代码 - - ```bash - git add . - git commit -s -m "Fix a bug king" - git push origin {BRANCH_NAME} - ``` - -6. 合并主分支 - - 在提交 Pull Request 之前,尽量保证当前分支和主分支的代码尽可能同步,这时需要我们手动操作。示例: - - ```bash - git fetch upstream/main - git merge upstream/main - git push origin {BRANCH_NAME} - ``` - -## Pull Request - -进入此阶段说明已经完成了代码的编写,测试和自测,并且准备好接受 Code Review。 - -### 创建 Pull Request - -回到自己的仓库页面,选择 `New pull request` 按钮,创建 `Pull request` 到原仓库的 `main` 分支。 -然后等待我们 Review 即可,如有 `Change Request`,再本地修改之后再次提交即可。 - -提交 Pull Request 的注意事项: - -- 提交 Pull Request 请充分自测。 -- 每个 Pull Request 尽量只解决一个 Issue,特殊情况除外。 -- 应尽可能多的添加单元测试,其他测试(集成测试和 E2E 测试)可看情况添加。 -- 不论需要解决的 Issue 发生在哪个版本,提交 Pull Request 的时候,请将主仓库的主分支设置为 `main`。例如:即使某个 Bug 于 Halo 2.0.x 被发现,但是提交 Pull Request 仍只针对 - `main` 分支,等待 Pull Request 合并之后,我们会通过 `/cherrypick release-2.0` 或者 `/cherry-pick release-2.1` 指令将此 Pull Request - 的修改应用到 `release-2.0` 和 `release-2.1` 分支上。 - -### 更新 commits - -Code Review 阶段可能需要 Pull Request 作者重新修改代码,请直接在当前分支 commit 并 push 即可,无需关闭并重新提交 Pull Request。示例: - -```bash -git add . -git commit -s -m "Refactor some code according code review" -git push origin bug/king -``` - -同时,若已经进入 Code Review 阶段,请不要强制推送 commits 到当前分支。否则 Reviewers 需要从头开始 Code Review。 - -### 开发规范 - -请参考 [https://docs.halo.run/developer-guide/core/code-style](https://docs.halo.run/developer-guide/core/code-style) -,请确保所有代码格式化之后再提交。 diff --git a/versioned_docs/version-2.11/contribution/sponsor.md b/versioned_docs/version-2.11/contribution/sponsor.md deleted file mode 100644 index eede34e3..00000000 --- a/versioned_docs/version-2.11/contribution/sponsor.md +++ /dev/null @@ -1,26 +0,0 @@ ---- -title: 赞助我们 -description: 如果 Halo 对你有帮助,不妨赞助我们 ---- - -## 为什么需要赞助 - -我们花费了大量的精力来维护这个软件,并且也提供了不少资金来维护服务器,域名等。因此我们需要赞助来节省部分开发成本。你的赞助不仅仅会被我们用来支付一些开发成本(比如服务器,OSS,域名等),还会让我们有更多的信心和精力投入到这个开源项目的开发中。从而让项目保持更加健康的成长以及迭代。 - -## 赞助形式 - -:::info -你可以通过任何形式对我们赞助,不限于资金。 -::: - -### 资金赞助 - -- 爱发电:[https://afdian.com/a/halo-dev](https://afdian.com/a/halo-dev) - -### 通过我们的推广链接购买服务器 - -如果你当前还没有购买服务器,可以考虑通过以下链接购买,这会为我们带来一部分收益。 - -- 阿里云:[https://www.aliyun.com/daily-act/ecs/activity_selection?userCode=j57gyupo](https://www.aliyun.com/daily-act/ecs/activity_selection?userCode=j57gyupo) -- 阿里云新人专享:[https://www.aliyun.com/minisite/goods?userCode=j57gyupo](https://www.aliyun.com/minisite/goods?userCode=j57gyupo) -- 腾讯云:[https://curl.qcloud.com/9Ogon25Y](https://curl.qcloud.com/9Ogon25Y) diff --git a/versioned_docs/version-2.11/developer-guide/annotations-form.md b/versioned_docs/version-2.11/developer-guide/annotations-form.md deleted file mode 100644 index 06ec8fee..00000000 --- a/versioned_docs/version-2.11/developer-guide/annotations-form.md +++ /dev/null @@ -1,89 +0,0 @@ ---- -title: 元数据表单定义 ---- - -在 Halo 2.0,所有的模型都包含了 `metadata.annotations` 字段,用于存储元数据信息。元数据信息可以用于存储一些自定义的信息,可以等同于扩展字段。此文档主要介绍如何在 Halo 中为具体的模型定义元数据编辑表单,至于如何在插件或者主题模板中使用,请看插件或者主题的文档。 - -定义元数据编辑表单同样使用 `FormKit Schema`,但和主题或插件的定义方式稍有不同,其中输入组件类型可参考 [表单定义](./form-schema.md)。 - -:::info 提示 -因为 `metadata.annotations` 是一个键值都为字符串类型的对象,所以表单项的值必须为字符串类型。这就意味着,FormKit 的 `number`、`group`、`repeater` 等类型的输入组件都不能使用。 -::: - -## AnnotationSetting 资源定义方式 - -```yaml title="annotation-setting.yaml" -apiVersion: v1alpha1 -kind: AnnotationSetting -metadata: - name: my-annotation-setting -spec: - targetRef: - group: content.halo.run - kind: Post - formSchema: - - $formkit: "text" - name: "download" - label: "下载地址" - - $formkit: "text" - name: "version" - label: "版本" -``` - -以上定义为文章模型添加了两个元数据字段,分别为 `download` 和 `version`,分别对应了下载地址和版本号,最终效果: - -![Annotation Setting Preview](/img/annotation-setting/annotation-setting-preview.png) - -字段说明: - -1. `metadata.name`:唯一标识,为了尽可能避免冲突,建议自定义前缀以及追加随机字符串,如:`theme-earth-post-wanfs5`。 -2. `spec.targetRef`:模型的关联,即为哪个模型添加元数据表单,目前支持的模型可查看下方的列表。 -3. `spec.formSchema`:表单的定义,使用 FormKit Schema 来定义。虽然我们使用的 YAML,但与 FormKit Schema 完全一致。 - -targetRef 支持列表: - -| 对应模型 | group | kind | -| ---------- | ---------------- | ---------- | -| 文章 | content.halo.run | Post | -| 自定义页面 | content.halo.run | SinglePage | -| 文章分类 | content.halo.run | Category | -| 文章标签 | content.halo.run | Tag | -| 菜单项 | `""` | MenuItem | -| 用户 | `""` | User | - -## 为多个模型定义表单 - -考虑到某些情况可能会同时为多个模型添加元数据表单,推荐在一个 `yaml` 文件中使用 `---` 来分割多个资源定义,如下: - -```yaml title="annotation-setting.yaml" -apiVersion: v1alpha1 -kind: AnnotationSetting -metadata: - name: my-annotation-setting -spec: - targetRef: - group: content.halo.run - kind: Post - formSchema: - - $formkit: "text" - name: "download" - label: "下载地址" - - $formkit: "text" - name: "version" - label: "版本" - ---- - -apiVersion: v1alpha1 -kind: AnnotationSetting -metadata: - name: my-annotation-setting -spec: - targetRef: - group: "" - kind: MenuItem - formSchema: - - $formkit: "text" - name: "icon" - label: "图标" -``` diff --git a/versioned_docs/version-2.11/developer-guide/core/build.md b/versioned_docs/version-2.11/developer-guide/core/build.md deleted file mode 100644 index 29518936..00000000 --- a/versioned_docs/version-2.11/developer-guide/core/build.md +++ /dev/null @@ -1,105 +0,0 @@ ---- -title: 构建 -description: 构建为可执行 JAR 和 Docker 镜像的文档 ---- - -:::info -在此之前,我们推荐你先阅读[《准备工作》](./prepare),检查本地环境是否满足要求。 -::: - -一般情况下,为了保证版本一致性和可维护性,我们并不推荐自行构建和二次开发。但考虑到我们目前仅提供 Docker 镜像的发行版本,不再提供可执行 JAR 的发行版本,因此我们提供了构建的文档,以供用户自行构建。 - -## 克隆项目 - -如果你已经 fork 了相关仓库,请将以下命令中的 halo-dev 替换为你的 GitHub 用户名。 - -```bash -git clone https://github.com/halo-dev/halo - -# 或者使用 ssh 的方式 clone(推荐) - -git clone git@github.com:halo-dev/halo.git - -# 切换到最新的 tag - -cd halo - -git checkout v2.4.0 -``` - -:::tip -请务必按照以上要求切换到最新的 tag,而不是直接使用 main 分支构建,main 分支是我们的开发分支。此文档以 `2.11.0` 为例,查看最新的 tag 可使用 `git tag --column` 查看。 -::: - -## 构建 Console 和个人中心 - -```bash -cd path/to/halo -``` - -Linux / macOS 平台: - -```bash -make -C console build -``` - -Windows 平台: - -```bash -cd console - -pnpm install - -pnpm build:packages - -pnpm build -``` - -## 构建 Fat Jar - -构建之前需要修改 `gradle.properties` 中的 `version` 为当前 tag 的版本号,如:`version=2.11.0` - -```bash -cd path/to/halo -``` - -下载预设插件: - -```bash -# Windows -./gradlew.bat downloadPluginPresets - -# macOS / Linux -./gradlew downloadPluginPresets -``` - -构建: - -```bash -# Windows -./gradlew.bat clean build -x check - -# macOS / Linux -./gradlew clean build -x check -``` - -构建完成之后,在 halo 项目下产生的 `application/build/libs/application-$version.jar` 即为构建完成的文件。 - -## 构建 Docker 镜像 - -在进行之前,请确保已经完成上述操作,最终需要确认在 halo 项目的 `application/build/libs/` 目录已经包含了 `application-$version.jar` 文件。 - -```bash -cd path/to/halo -``` - -```bash -docker build -t halo-dev/halo:2.11.0 . -``` - -```bash -# 插件构建完成的版本 -docker images | grep halo -``` - -最终部署文档可参考:[使用 Docker Compose 部署](../../getting-started/install/docker-compose.md) diff --git a/versioned_docs/version-2.11/developer-guide/core/code-style.md b/versioned_docs/version-2.11/developer-guide/core/code-style.md deleted file mode 100644 index 90bdd686..00000000 --- a/versioned_docs/version-2.11/developer-guide/core/code-style.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: 代码风格 -description: 代码风格的相关配置说明 ---- - -Halo 添加了 checkstyle 插件,来保证每位提交者代码的风格保持一致,减少无效代码的修改。本篇文章主要讲解如何在 IDEA 中添加 CheckStyle 插件,并引入项目所提供的 checkstyle.xml 配置。 - -## 安装 CheckStyle-IDEA - -- 进入 IDEA 插件市场。 -- 搜索 CheckStyle-IDEA,点击安装即可。 - -## 配置 CheckStyle - -- 进入 CheckStyle 配置(File | Settings | Tools | Checkstyle)。 -- 选择 Checkstyle 版本:8.39。 -- 在配置文件中点击添加按钮,配置描述可随便填写(推荐 Halo Checks),选择 ./config/checkstyle/checkstyle.xml,点击下一步和完成。 -- 勾选刚刚创建的配置文件。 - -## 配置 Editor - -- 进入编辑器配置(File | Settings | Editor | Code Style) - -- 导入 checkstyle.xm 配置: - -![image.png](https://halo.run/upload/2020/2/image-0c7a018e73f74634a534fa3ba8806628.png) - -- 选择 `./config/checkstyle/checkstyle.xml` 配置文件,点击确定即可。 - -至此,有关代码风格检查工具和格式化配置已经完成。 diff --git a/versioned_docs/version-2.11/developer-guide/core/prepare.md b/versioned_docs/version-2.11/developer-guide/core/prepare.md deleted file mode 100644 index 04401b57..00000000 --- a/versioned_docs/version-2.11/developer-guide/core/prepare.md +++ /dev/null @@ -1,25 +0,0 @@ ---- -title: 准备工作 -description: 开发环境的准备工作 ---- - -## 环境要求 - -- [OpenJDK 17 LTS](https://github.com/openjdk/jdk) -- [Node.js 18 LTS](https://nodejs.org) -- [pnpm 8](https://pnpm.io/) -- [IntelliJ IDEA](https://www.jetbrains.com/idea/) -- [Git](https://git-scm.com/) -- [Docker](https://www.docker.com/)(可选) - -## 名词解释 - -### 工作目录 - -指 Halo 所依赖的工作目录,在 Halo 运行的时候会在系统当前用户目录下产生一个 halo-next 的文件夹,绝对路径为 ~/halo-next。里面通常包含下列目录或文件: - -1. `db`:存放 H2 Database 的物理文件,如果你使用其他数据库,那么不会存在这个目录。 -2. `themes`:里面包含用户所安装的主题。 -2. `plugins`:里面包含用户所安装的插件。 -5. `attachments`:附件目录。 -4. `logs`:运行日志目录。 diff --git a/versioned_docs/version-2.11/developer-guide/core/run.md b/versioned_docs/version-2.11/developer-guide/core/run.md deleted file mode 100644 index d2cbf104..00000000 --- a/versioned_docs/version-2.11/developer-guide/core/run.md +++ /dev/null @@ -1,131 +0,0 @@ ---- -title: 开发环境运行 -description: 开发环境运行的指南 ---- - -:::info -在此之前,我们推荐你先阅读[《准备工作》](./prepare),检查本地环境是否满足要求。 -::: - -## 项目结构说明 - -目前如果需要完整的运行 Halo,总共需要三个部分: - -1. Halo 主项目([halo-dev/halo](https://github.com/halo-dev/halo)) -2. UI,包括 Console 控制台和 UC 个人中心(托管在 Halo 主项目) -3. 主题(Halo 主项目内已包含默认主题) - -:::info 说明 -从 Halo 2.11 开始,Halo 项目的 console 目录同时包含了 Console(管理控制台)和 UC(个人中心),以下统称为 UI。 - -当前 Halo 主项目并不会将 UI 的构建资源托管到 Git 版本控制,所以在开发环境是需要同时运行 UI 项目的。当然,在我们的最终发布版本的时候会在 CI 中自动构建 UI 到 Halo 主项目。 -::: - -## 克隆项目 - -如果你已经 fork 了相关仓库,请将以下命令中的 halo-dev 替换为你的 GitHub 用户名。 - -```bash -git clone https://github.com/halo-dev/halo - -# 或者使用 ssh 的方式 clone(推荐) - -git clone git@github.com:halo-dev/halo.git -``` - -## 运行 UI 服务 - -```bash -cd path/to/halo -``` - -Linux / macOS 平台: - -```bash -make -C console dev -``` - -Windows 平台: - -```bash -cd console - -pnpm install - -pnpm build:packages - -pnpm dev -``` - -最终控制台打印了如下信息即代表运行正常: - -```bash -VITE v4.2.3 ready in 638 ms - -# Console 控制台服务 -➜ Local: http://localhost:3000/console/ - -# UC 个人中心服务 -➜ Local: http://localhost:4000/uc/ -``` - -:::info 提示 -请不要直接使用 UI 的运行端口(3000 / 4000)访问,会因为跨域问题导致无法正常登录,建议按照后续的步骤以 dev 的配置文件运行 Halo,在 dev 的配置文件中,我们默认代理了 UI 页面的访问地址,所以后续访问 UI 页面使用 `http://localhost:8090/console` 和 `http://localhost:8090/uc` 访问即可,代理的相关配置: - -```yaml -halo: - console: - proxy: - endpoint: http://localhost:3000/ - enabled: true - uc: - proxy: - endpoint: http://localhost:4000/ - enabled: true -``` - -::: - -## 运行 Halo - -1. 在 IntelliJ IDEA 中打开 Halo 项目,等待 Gradle 初始化和依赖下载完成。 - -2. 下载预设插件(可选) - - ```bash - # Windows - ./gradlew.bat downloadPluginPresets - - # macOS / Linux - ./gradlew downloadPluginPresets - ``` - -3. 修改 IntelliJ IDEA 的运行配置 - - macOS / Linux - - 将 Active Profiles 改为 `dev`,如图所示: - - ![IntelliJ IDEA Profiles](/img/developer-run/IntelliJ-IDEA-Profiles-macOS.png) - - - Windows - - 将 Active Profiles 改为 `dev,win`,如图所示: - - ![IntelliJ IDEA Profiles](/img/developer-run/IntelliJ-IDEA-Profiles-Win.png) - -4. 点击 IntelliJ IDEA 的运行按钮,等待项目启动完成。 - -5. 或者使用 Gradle 运行 - - ```bash - # macOS / Linux - ./gradlew bootRun --args="--spring.profiles.active=dev" - - # Windows - gradlew.bat bootRun --args="--spring.profiles.active=dev,win" - ``` - -6. 最终提供以下访问地址: - 1. 网站首页:[http://localhost:8090](http://localhost:8090) - 2. Console 控制台:[http://localhost:8090/console](http://localhost:8090/console) - 3. UC 个人中心:[http://localhost:8090/uc](http://localhost:8090/uc) diff --git a/versioned_docs/version-2.11/developer-guide/core/structure.md b/versioned_docs/version-2.11/developer-guide/core/structure.md deleted file mode 100644 index cf76cd78..00000000 --- a/versioned_docs/version-2.11/developer-guide/core/structure.md +++ /dev/null @@ -1,36 +0,0 @@ ---- -title: 系统结构 -description: Halo 项目的构成 ---- - -[Halo](https://github.com/halo-dev/halo) 博客系统分为以下四个部分: - -| 项目名称 | 简介 | -| :------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------- | -| [halo](https://github.com/halo-dev/halo) | 提供整个系统的服务,采用 [Spring Boot](https://spring.io/) 开发 | -| [halo-admin](https://github.com/halo-dev/halo-admin) | 负责后台管理的渲染,采用 [Vue](https://vuejs.org/) 开发,已集成在 Halo 运行包内,无需独立部署。 | -| [halo-comment](https://github.com/halo-dev/halo-comment) | 评论插件,采用 [Vue](https://vuejs.org/) 开发,在主题中运行方式引入构建好的 `JavaScript` 文件即可 | -| [halo-theme-\*](https://github.com/halo-dev) | 主题项目集,采用 [FreeMarker](https://freemarker.apache.org/) 模板引擎编写,需要包含一些特殊的配置才能够被 halo 所使用 | - -## 自定义配置 - -> 为什么要提前讲自定义配置呢?是因为在这里让大家了解到 `Halo` 的`配置方式`,以及`配置优先级`,不至于未来运行项目的时候不知道如何优雅地修改配置。 - -`Halo` 配置目录优先级如下(从上到下优先级越来越小,上层的配置将会覆盖下层): - -- `Halo` 自定义配置 - - file:~/.halo/ - - file:~/.halo-dev/ -- `Spring Boot` 默认配置 - - file:./config/ - - file:./ - - classpath:/config/ - - classpath:/ - -> 参考: [Application Property Files](https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-external-config.html#boot-features-external-config-application-property-files) - -在开发的时候,希望大家能够在 `~/halo-dev/application.yml` 中进行添加自定义配置。当然后面也会讲到如何用`运行参数` 和 `VM options` 进行控制配置,届时可根据具体情况进行选择。 - -:::warning -开发的时候,我们不建议直接更改`项目源码`中的所包含的`配置文件`,包括 `application.yml`、`application-dev.yml`、`application-test.yml` 和 `application-user.yml`。 -::: diff --git a/versioned_docs/version-2.11/developer-guide/form-schema.md b/versioned_docs/version-2.11/developer-guide/form-schema.md deleted file mode 100644 index d7158983..00000000 --- a/versioned_docs/version-2.11/developer-guide/form-schema.md +++ /dev/null @@ -1,302 +0,0 @@ ---- -title: 表单定义 ---- - -在 Halo 2.0,在 Console 端的所有表单我们都使用了 [FormKit](https://github.com/formkit/formkit) 的方案。FormKit 不仅支持使用 Vue 组件的形式来构建表单,同时支持使用 Schema 的形式来构建。因此,我们的 [Setting](https://github.com/halo-dev/halo/blob/87ccd61ae5cd35a38324c30502d4e9c0ced41c6a/src/main/java/run/halo/app/core/extension/Setting.java#L20) 资源中的表单定义,都是使用 FormKit Schema 来定义的,最常用的场景即主题和插件的设置表单定义。当然,如果要在 Halo 2.0 的插件中使用,也可以参考 FormKit 的文档使用 Vue 组件的形式使用,但不需要在插件中引入 FormKit。 - -此文档将不会介绍 FormKit 的具体使用教程,因为我们已经很好的集成了 FormKit,并且使用方式基本无异。此文章将介绍 Halo 2.0 中表单定义的一些规范,以及额外的一些输入组件。 - -FormKit 相关文档: - -- Form Schema: [https://formkit.com/essentials/schema](https://formkit.com/essentials/schema) -- FormKit Inputs: [https://formkit.com/inputs](https://formkit.com/inputs) - -:::tip -目前不支持 FormKit Pro 中的输入组件,但 Halo 额外提供了部分输入组件,将在下面文档列出。 -::: - -## Setting 资源定义方式 - -```yaml title="settings.yaml" -apiVersion: v1alpha1 -kind: Setting -metadata: - name: foo-setting -spec: - forms: - - group: group_1 - label: 分组 1 - formSchema: - - $formkit: radio - name: color_scheme - label: 默认配色 - value: system - options: - - label: 跟随系统 - value: system - - label: 深色 - value: dark - - label: 浅色 - value: light - - - group: group_2 - label: 分组 2 - formSchema: - - $formkit: text - name: username - label: 用户名 - value: "" - - $formkit: password - name: password - label: 密码 - value: "" -``` - -:::tip -需要注意的是,FormKit Schema 本身应该是 JSON 格式的,但目前我们定义一个表单所使用的是 YAML,可能在参考 FormKit 写法时需要手动转换一下。 -::: - -字段说明: - -1. `metadata.name`:设置资源的名称,建议以 `-setting` 结尾。 -2. `spec.forms`:表单定义,可以定义多个表单,每个表单都有一个 `group` 字段,用于区分不同的表单。 -3. `spec.forms[].label`:表单的标题。 -4. `spec.forms[].formSchema`:表单的定义,使用 FormKit Schema 来定义。虽然我们使用的 YAML,但与 FormKit Schema 完全一致。 - -## 组件类型 - -除了 FormKit 官方提供的常用输入组件之外,Halo 还额外提供了一些输入组件,这些输入组件可以在 Form Schema 中使用。 - -### repeater - -#### 描述 - -一组重复的输入组件,可以用于定义一组数据,最终得到的数据为一个对象的数组,可以方便地让使用者对其进行增加、移除、排序等操作。 - -#### 参数 - -- `min`:数组最小要求数量,默认为 `0` -- `max`:数组最大容量,默认为 `Infinity`,即无限制 -- `addButton`:是否显示添加按钮 -- `addLabel`:添加按钮的文本 -- `upControl`:是否显示上移按钮 -- `downControl`:是否显示下移按钮 -- `insertControl`:是否显示插入按钮 -- `removeControl`:是否显示移除按钮 - -#### 示例 - -```yaml -- $formkit: repeater - name: socials - label: 社交账号 - value: [] - max: 5 - min: 1 - children: - - $formkit: select - name: enabled - id: enabled - label: 是否启用 - options: - - label: 是 - value: true - - label: 否 - value: false - - $formkit: text - # 在 Repeater 中进行条件判断的方式,当 enabled 为 true 时才显示 - if: "$value.enabled === true", - name: name - label: 名称 - value: "" - - $formkit: text - if: "$value.enabled === true", - name: url - label: 地址 - value: "" -``` - -:::tip -使用 `repeater` 类型时,一定要设置默认值,如果不需要默认有任何元素,可以设置为 `[]`。 -::: - -其中 `name` 和 `url` 即数组对象的属性,最终保存表单之后得到的值为以下形式: - -```json -{ - "socials": [ - { - "name": "GitHub", - "url": "https://github.com/halo-dev" - } - ] -} -``` - -UI 效果: - - - -### attachment - -#### 描述 - -附件类型的输入框,支持直接调用附件库弹框选择附件。 - -#### 参数 - -- `accepts`:文件类型,数据类型为 `string[]`。 - -#### 示例 - -```yaml -- $formkit: attachment - name: logo - label: Logo - accepts: - - "image/png" - - "video/mp4" - - "audio/*" - value: "" -``` - -### code - -#### 描述 - -代码编辑器的输入组件,集成了 [Codemirror](https://codemirror.net/)。 - -#### 参数 - -- `language`:代码语言,目前支持 `yaml` `html` `javascript` `css` `json`。 -- `height`:代码编辑器的高度。 - -#### 示例 - -```yaml -- $formkit: code - name: footer_code - label: 页脚代码注入 - value: "" - language: yaml -``` - -### menuCheckbox - -#### 描述 - -菜单复选框,用于选择系统内的导航菜单。其中选择的值为菜单资源 `metadata.name` 的集合。 - -#### 示例 - -```yaml -- $formkit: menuCheckbox - name: menus - label: 菜单 - value: [] -``` - -### menuRadio - -#### 描述 - -菜单单选框,用于选择系统内的导航菜单。其中选择的值为菜单资源 `metadata.name`。 - -#### 示例 - -```yaml -- $formkit: menuRadio - name: menu - label: 菜单 - value: "" -``` - -### postSelect - -#### 描述 - -文章选择器,用于选择系统内的文章。其中选择的值为文章资源 `metadata.name`。 - -#### 示例 - -```yaml -- $formkit: postSelect - name: post - label: 文章 - value: "" -``` - -### singlePageSelect - -#### 描述 - -单页选择器,用于选择系统内的独立页面。其中选择的值为独立页面资源 `metadata.name`。 - -#### 示例 - -```yaml -- $formkit: singlePageSelect - name: singlePage - label: 单页 - value: "" -``` - -### categorySelect - -#### 描述 - -文章分类选择器,用于选择系统内的文章分类。其中选择的值为文章分类资源 `metadata.name`。 - -#### 示例 - -```yaml -- $formkit: categorySelect - name: category - label: 分类 - value: "" -``` - -### categoryCheckbox - -#### 描述 - -文章分类复选框,用于选择系统内的文章分类。其中选择的值为文章分类资源 `metadata.name` 的集合。 - -#### 示例 - -```yaml -- $formkit: categoryCheckbox - name: categories - label: 分类 - value: [] -``` - -### tagSelect - -#### 描述 - -文章标签选择器,用于选择系统内的文章标签。其中选择的值为文章标签资源 `metadata.name`。 - -#### 示例 - -```yaml -- $formkit: tagSelect - name: tag - label: 标签 - value: "" -``` - -### tagCheckbox - -#### 描述 - -文章标签复选框,用于选择系统内的文章标签。其中选择的值为文章标签资源 `metadata.name` 的集合。 - -#### 示例 - -```yaml -- $formkit: tagCheckbox - name: tags - label: 标签 - value: [] -``` diff --git a/versioned_docs/version-2.11/developer-guide/plugin/api-reference/extension-client.md b/versioned_docs/version-2.11/developer-guide/plugin/api-reference/extension-client.md deleted file mode 100644 index d7f88a26..00000000 --- a/versioned_docs/version-2.11/developer-guide/plugin/api-reference/extension-client.md +++ /dev/null @@ -1,104 +0,0 @@ ---- -title: 与自定义模型交互 -description: 了解如果通过代码的方式操作数据 ---- - -Halo 提供了两个类用于与自定义模型数据交互 `ExtensionClient` 和 `ReactiveExtensionClient`。 - -它们的本质就是操作数据库,区别在于 `ExtensionClient` 是阻塞式 API,而 `ReactiveExtensionClient` 是响应式 API,接口返回值只有两种 Mono 或 Flux,它们由 [reactor](https://projectreactor.io/) 提供。 - -```java -public interface ReactiveExtensionClient { - - /** - * Lists Extensions by Extension type, filter and sorter. - * - * @param type is the class type of Extension. - * @param predicate filters the reEnqueue. - * @param comparator sorts the reEnqueue. - * @param- - - -
- -Halo [ˈheɪloʊ],强大易用的开源建站工具。
- -
-
-
-
-
-
-
-官网
-文档
-社区
-Gitee
-Telegram 频道
-
- - - -
- -## 贡献 - -参考 [CONTRIBUTING](https://github.com/halo-dev/halo/blob/master/CONTRIBUTING.md)。 - - - -## 状态 - -![Repobeats analytics](https://repobeats.axiom.co/api/embed/ad008b2151c22e7cf734d2688befaa795d593b95.svg "Repobeats analytics image") diff --git a/versioned_docs/version-2.11/user-guide/attachments.md b/versioned_docs/version-2.11/user-guide/attachments.md deleted file mode 100644 index 36fdb732..00000000 --- a/versioned_docs/version-2.11/user-guide/attachments.md +++ /dev/null @@ -1,108 +0,0 @@ ---- -title: 附件 -description: 附件管理相关功能说明 ---- - -## 存储策略 - -为了能够更加灵活地管理附件的存储位置,Halo 提供了存储策略的概念。 - -Halo 默认提供了本地的存储策略类型,你还可以通过安装插件的方式扩展其他的存储策略类型。一个存储策略包含了存储提供者,具体存储位置等使用该类型存储所必要的各种信息。 - -:::info -目前 Halo 官方维护了两个存储策略插件,可以根据需要选择安装: - -1. 阿里云 OSS:[https://halo.run/store/apps/app-wCJCD](https://halo.run/store/apps/app-wCJCD) -2. Amazon S3 协议(主流云存储厂商均支持):[https://halo.run/store/apps/app-Qxhpp](https://halo.run/store/apps/app-Qxhpp) -::: - -你可以点击附件页面右上角的 `存储策略` 按钮对存储策略进行管理。 - -### 新建存储策略 - -点击存储策略列表右上方的 `+` 添加按钮即可新建一个存储策略。 - -![添加存储策略](/img/user-guide/attachments/attachment-policy-add.png) - -添加时首先需要选择一种存储策略类型,系统内置的存储策略为本地存储,图中的 `S3 Object Storage` 由[对象存储(Amazon S3 协议)](https://halo.run/store/apps/app-Qxhpp)提供,此文档以本地存储为例。 - -![添加本地存储策略](/img/user-guide/attachments/attachment-policy-add-local.png) - -添加一个本地存储时,你需要输入名称及存储位置信息。其中的存储位置决定了使用该存储策略的附件,在服务器上的实际存储路径,路径规则为 `{Halo 工作目录}/attachments/{存储位置}`,其中的 Halo 工作目录由安装时指定的参数决定,默认为 `~/.halo2`。 -:::info -默认的 Docker 部署方式,实际存储位置由挂载到 Halo 容器工作目录的服务器目录所决定。 -::: - -### 管理存储策略 - -点击存储策略列表指定存储所在行后方的 `···` 更多操作按钮即可对该存储策略进行编辑或删除。 - -![存储策略操作](/img/user-guide/attachments/attachment-policy-operate.png) - -:::info -为了保护附件安全避免用户误操作,当存储策略下存在附件时,该存储策略不允许删除。如果确定要删除某个存储策略及该存储策略中的所有附件,可以先按照存储策略对附件进行筛选,先批量删除存储策略下的所有附件,再删除存储策略。 -::: - -## 附件分组 - -通过附件分组功能可以方便地将同一类型、同一用途的附件划分到一个分组中,方便后续附件的管理和插件。 - -附件所使用的存储策略决定了附件的实际存储位置和 URL 规则,而附件分组功能仅是逻辑上的归类划分,不会影响附件的存储位置及 URL。 - -### 新建分组 - -点击附件列表上方的 `添加分组` 按钮即可新建一个分组。 - -![添加分组](/img/user-guide/attachments/attachment-group-add.png) - -### 删除分组 - -点击附件列表上方指定分组上的 `···` 更多按钮,可以对分组进行重命名或删除操作。 - -Halo 目前提供了两种分组删除策略: - -1. **删除并将附件移动至未分组**:分组被删将被删除,分组下的附件移动到未分组中。 -2. **删除并同时删除附件**:先删除下的所有附件后,再删除该分组。 - - :::warning - 当使用 `删除并同时删除附件` 方式时,分组下的所有附件会被同时删除且不可恢复、无法找回,请谨慎进行该操作。 - ::: - -## 上传附件 - -点击附件列表右上方的 `上传` 按钮即可上传新的附件到 Halo。 - -![上传附件](/img/user-guide/attachments/attachment-upload.png) - -1. **分组选择**:你可以选择需要上传到的分组,为了方便,选择之后会在浏览器记住这个选项。 -2. **存储策略选择**:你可以选择需要使用的存储策略,为了方便,选择之后会在浏览器记住这个选项。 -3. **上传区域**:同时支持拖拽文件、点击上传区域选择文件、粘贴文件。 - -## 查看附件 - -点击附件列表中的某一个附件即可查看该附件的详细信息。 - -![附件详情](/img/user-guide/attachments/attachment-detail.png) - -1. **预览区域**:目前支持图片、视频、音频的预览。 -2. **链接**:目前可以显示并复制链接、HTML 格式代码、Markdown 格式代码。 - -## 删除附件 - -目前有两种删除附件的方式,你可以选中一些附件进行批量删除或者点击指定附件所在行后方的 `···` 更多按钮,对单个附件进行删除操作。 - -![批量操作附件](/img/user-guide/attachments/attachment-batch-operate.png) - -:::warning -附件删除后不可恢复、无法找回,请谨慎进行该操作。 -::: - -## 移动附件 - -![附件移动](/img/user-guide/attachments/attachment-move.png) - -与批量删除操作类似,你可以选中多个附件后在上方的批量操作按钮中选择 `移动` 操作,将所选附件移动到指定的分组中。 - -:::info -需要注意的是,目前移动附件只支持移动分组,不支持存储策略的移动。 -::: diff --git a/versioned_docs/version-2.11/user-guide/backup.md b/versioned_docs/version-2.11/user-guide/backup.md deleted file mode 100644 index f18d004d..00000000 --- a/versioned_docs/version-2.11/user-guide/backup.md +++ /dev/null @@ -1,48 +0,0 @@ ---- -title: 备份与恢复 -description: 备份与恢复功能说明 ---- - -从 Halo 2.8 开始,Halo 内置了备份和恢复的功能,可以在 Console 中一键备份和恢复完整的数据。 - -## 备份 - -在 Console 中,点击左侧菜单的 `备份`,进入备份页面。 - -点击右上角的 `创建备份` 按钮,即可创建一个新的备份请求,需要注意的是,创建备份请求并不会立即开始备份,而是会在后台异步执行,因此需要等待一段时间才能看到备份的结果。 - -![Create a backup](/img/user-guide/backup/create-backup.png) - -备份中: - -![Backup running](/img/user-guide/backup/backup-running.png) - -备份完成: - -![Backup complete](/img/user-guide/backup/backup-complete.png) - -## 恢复 - -:::info 在恢复前,需要了解以下几点: - -1. 恢复不限制部署方式,也不限制数据库,也就是说新站点的部署方式和数据库类型可以和备份的站点不同。 -2. 恢复过程可能会持续较长时间,期间请勿刷新页面。 -3. 在恢复的过程中,虽然已有的数据不会被清理掉,但如果有冲突的数据将被覆盖。 -4. 恢复完成之后会提示停止运行 Halo,停止之后可能需要手动运行。 -::: - -在 Console 中,点击左侧菜单的 `备份`,进入备份页面,然后点击 `恢复` 选项卡即可进入恢复界面,阅读完注意事项之后点击 `开始恢复` 按钮即可显示备份文件上传界面。 - -![Before restore](/img/user-guide/backup/before-restore.png) -![Restore](/img/user-guide/backup/restore.png) - -选择备份文件后,点击 `上传` 按钮即可开始上传备份文件,上传完成后会自动开始恢复。 - -![Restore upload](/img/user-guide/backup/restore-upload.png) - -恢复完成,会提示重启 Halo,点击 `确定` 按钮即可重启 Halo。 - -![Restore complete](/img/user-guide/backup/restore-complete.png) -![Waiting restart](/img/user-guide/backup/waiting-restart.png) - -最后,建议去服务器检查 Halo 的运行状态,如果没有设置自动重启,需要手动重启。 diff --git a/versioned_docs/version-2.11/user-guide/common.md b/versioned_docs/version-2.11/user-guide/common.md deleted file mode 100644 index 7e2038ba..00000000 --- a/versioned_docs/version-2.11/user-guide/common.md +++ /dev/null @@ -1,67 +0,0 @@ ---- -title: 基础说明 -description: Halo 中的基本概念说明 ---- -Halo 作为一款好用又强大的开源建站工具,配合上不同的模板与插件,可以很好地帮助你构建你心中的理想站点。它可以是你公司的官方网站,可以是你的个人博客,也可以是团队共享的知识库,甚至可以是一个论坛、一个商城。 - -为了更好地发挥出 Halo 的价值,这里有一些基本概念需要你进行了解。 - -## 控制台 - -控制台是一个 Halo 站点的后台管理系统,只有具有权限的登录用户才可以正常使用控制台功能。你可以在控制台中管理站点中的文章、页面、附件等各种内容,调整站点使用的主题或各种设置。 - -:::info -控制台的访问入口为 `/console`。忘记密码请参考[常见问题中的忘记密码章节](../user-guide/faq.md#忘记密码怎么办)进行处理。 -::: - -### 界面说明 - -![控制台界面说明](/img/user-guide/common/控制台界面说明.png) - -1. **全局搜索框**:点击或通过快捷键 `Ctrl+K` 可以呼出全局搜索框,输入关键字可以在所有文章、页面、附件、用户及设置项等所有内容中进行全局搜索。 -2. **侧边导航栏**:对控制台提供的功能进行导航,点击导航栏条目会在页面右侧显示对应功能页面。安装某些插件可能会扩展导航栏条目。 -3. **用户信息展示及操作**:展示当前登录用户的头像、名称及角色等信息,`···` 中提供更多用户相关操作。 -4. **功能页面标题**: 当前所在的功能页面标题。 -5. **功能页面操作区域**:当前所在功能页面提供的功能操作按钮。 -6. **功能页面主体**: 当前所在功能页面的主体显示区域,显示内容及形式视具体页面功能而定。 - -## 个人中心 - -从 Halo 2.11 开始,除了 Console 管理控制台,我们新增加了个人中心,用于管理和用户相关的所有功能。有了个人中心之后,也可以让网站有更多的使用和开发场景,个人中心独立访问入口为 `/uc`。 - -## 文章 - -文章是 Halo 中的核心概念之一。一篇文章主要由纯文本的文章标题和富文本的文章内容构成,除此之外你还可以为文章设置所属分类、添加标签、设置封面图等。 - -在不同的站点类型不同的应用场景中,文章的实际含义也会有所区别,它可以代表一则公司新闻、一篇博客或者产品文档中的某一章节。 - -## 页面 - -页面与文章类似,同样包含页面标题和富文本形式的页面内容。与文章不同的是页面无法设置所属分类和标签信息,一般用于站点中单一展示功能的页面,例如常见的站点关于页面、联系我们页面等。 - -## 分类 - -通过分类可以更好地组织管理文章。分类之间存在层级关系,一个父分类下可包含多个子分类。一篇文章可以同时属于多个分类。 - -## 标签 - -标签可以用于为文章添加特定标记,与分类不同的是标签之间没有层级关系。一篇文章也可以同时添加多个标签。 - -## 附件 - -由用户上传的,供文章、主题设置等各个地方引用的文件。多用于文章配图、主题配图、用户头像等场景。 - -## 主题 - -包含了各种站点页面模板的资源包。用户访问 Halo 站点浏览到的内容及样式,由 Halo 管理端所配置使用的主题所决定。 - -## 插件 - -用于扩展 Halo 功能的软件包。插件独立于 Halo 核心应用,可以单独安装、升级、卸载。 - -:::info -目前有两个官方渠道可以获取主题和插件: - -- 应用市场:[https://halo.run/store/apps](https://halo.run/store/apps) -- Awesome Halo:[https://github.com/halo-sigs/awesome-halo](https://github.com/halo-sigs/awesome-halo) -::: diff --git a/versioned_docs/version-2.11/user-guide/faq.md b/versioned_docs/version-2.11/user-guide/faq.md deleted file mode 100644 index bd8e108a..00000000 --- a/versioned_docs/version-2.11/user-guide/faq.md +++ /dev/null @@ -1,134 +0,0 @@ ---- -title: 常见问题 -description: 使用上的常见问题 ---- - -### Halo 是什么? - -**Halo** [ˈheɪloʊ],是一款好用又强大的[开源建站工具](https://github.com/halo-dev/halo),配合上不同的模板与插件,可以很好地帮助你构建你心中的理想站点。它可以是你公司的官方网站,可以是你的个人博客,也可以是团队共享的知识库,甚至可以是一个论坛、一个商城。 - -### 忘记密码怎么办? - -1. 站点管理员已经配置好邮件通知,并且用户已完成电子邮箱验证时,可以点击登录页面的 `找回密码` 选项或直接访问 `/console/reset-password` 地址,填写用户名及对应邮箱后,系统将向该邮箱发送密码重置链接,用户可通过该链接重置密码; -2. 如果不满足上述条件,或者密码重置邮件不能发送成功,请直接联系具有用户管理权限的管理员进行密码重置操作,管理员可参考文档[修改用户密码](./users#修改用户密码)部分修改指定用户的密码; -3. 如果系统没有任何一个能够正常登录控制台且具有用户管理权限的管理员账号,则用户需要通过更新数据库记录的方式重置指定用户的密码。 - - :::info 参考 SQL 语句 - - 通过以下 SQL 语句,可以将 `admin` 用户的密码重置为 `password`,密码重置后请尽快修改为更加安全的密码。 - - **PostgreSQL** 数据库 - - ```SQL - UPDATE - extensions - SET - data = convert_to( - jsonb_set( - convert_from(data, 'UTF-8') :: jsonb, - '{spec,password}', - '"{bcrypt}$2a$10$7tBEL1sNQSr/uWtLZHLmCeA9IGx0I9/Jz//3Uwo/anIm9xdxv.xrO"' - ) :: text, - 'UTF-8' - ) - WHERE - name LIKE '/registry/users/admin'; - ``` - - **MySQL** 数据库 - - ```SQL - UPDATE - extensions - SET - data = JSON_SET( - CONVERT(data USING utf8mb4), - '$.spec.password', - '{bcrypt}$2a$10$7tBEL1sNQSr/uWtLZHLmCeA9IGx0I9/Jz//3Uwo/anIm9xdxv.xrO' - ) - WHERE - name LIKE '/registry/users/admin'; - ``` - - ::: - -### 附件上传提示 `413 Request Entity Too Large` 如何解决? - -这可能是由于 Nginx 的上传大小限制所导致的。可以在 Nginx 的配置文件下的 server 节点加入 `client_max_body_size 1024m;` 即可解决,如果 1024m 还不够,请自行断定,详细配置参考如下: - -```nginx {4} -server { - listen 80; - server_name localhost; - client_max_body_size 1024m; -} -``` - -### 网站加载速度慢,是什么问题导致的? - -导致网站加载速度慢的原因有很多,建议打开浏览器的 Developer Tools 查看具体是哪个请求时间过长,然后进行针对性的优化。这里提供一些可能的原因: - -1. 服务器带宽过小,很多厂商提供的最低带宽一般是 1M。 -2. 服务器地区过远,这个需要自行取舍。 -3. 网站上的图片过多或者体积过大,可以尝试压缩图片,或者参考 [优雅的让 Halo 支持 webp 图片输出](https://www.halo.run/archives/halo-and-webp) 的教程配置一个 Webp 图片的服务。 -4. 部分主题的静态资源可能是由公共 CDN 提供的,当这个 CDN 不稳定的时候可能会导致加载变慢。 - -一些提升网站加载速度的建议: - -1. 尽量不要选择 1M 带宽的服务器,可以根据自己的预算适当提升带宽。一般 3M 以上即可。 -2. 尽量购买网络质量较好的服务器,或者较近区域的服务器。 -3. 如果一定需要放大量的图片,建议先无损压缩一下再使用。 -4. 如上所说,可以自行搭建一个 Webp 图片转换的服务,参考 [优雅的让 Halo 支持 webp 图片输出](https://www.halo.run/archives/halo-and-webp)。 -5. 如果网站的静态资源加载慢是由三方 CDN 导致的,可以自行修改主题。 -6. 可以使用全站 CDN 加速的方案。 - -### 如何在一台服务器上部署多个站点? - -使用 Docker 创建多个容器,因为使用 Docker 可以将内部的工作目录映射到宿主机的任何目录,可以参考以下创建容器的方式: - - ```bash - # 第一个 Halo 容器 - docker run \ - -it -d \ - --name halo-1 \ - -p 8090:8090 \ - -v ~/.halo2:/root/.halo2 \ - halohub/halo:2.11 \ - - # 第二个 Halo 容器 - docker run \ - -it -d \ - --name halo-2 \ - -p 8091:8090 \ - -v ~/.halo2_2:/root/.halo2 \ - halohub/halo:2.11 \ - ``` - -更多 Docker 相关的教程请参考:[使用 Docker 部署 Halo](../getting-started/install/docker.md) - -### 如何查看运行日志? - -1. 可以在 Console 端的概览页面下载最近的日志文件。 -2. 使用 docker logs 命令进行查看。 - - ```bash - # '-f' 滚动更新日志 - # '-n 200' 从倒数第200行开始查看 - # 更多帮助可以查看 'docker logs --help' - docker logs -f halo -n 200 - ``` - -### 前台样式丢失,如何解决? - -前台样式不正常或者丢失有很多种问题的可能,最快捷定位问题的方式就是打开浏览器控制台查看具体请求的错误,以下列出了部分导致出现该问题的常见原因: - -1. 后台设置的 `博客地址` 与实际访问地址不一致。也可能是开启了 https 之后,无法正常加载 http 资源,将 `博客地址` 改为 https 协议即可。 -2. Nginx 配置了静态资源缓存,但没有设置 `proxy_pass`,参考如下: - - ```nginx - location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|flv|mp4|ico)$ { - proxy_pass http://halo; - expires 30d; - access_log off; - } - ``` diff --git a/versioned_docs/version-2.11/user-guide/pages.md b/versioned_docs/version-2.11/user-guide/pages.md deleted file mode 100644 index 39521369..00000000 --- a/versioned_docs/version-2.11/user-guide/pages.md +++ /dev/null @@ -1,20 +0,0 @@ ---- -title: 页面 -description: 页面管理相关功能说明 ---- - -页面与文章类似,同样包含页面标题和富文本形式的页面内容。与文章不同的是页面无法设置所属分类和标签信息,一般用于站点中单一展示功能的页面,例如常见的站点关于页面、联系我们页面等。 - -自定义页面的访问链接为 `/{slug}` 其中 `slug` 为自定义页面的别名。 - -对于如下的关于页面,便可以通过 `/about` 地址进行访问。 - -![链接功能页面](/img/user-guide/pages/page-about.png) - -:::info -自定义页面默认使用主题端的 `page.html` 模板进行渲染,如果主题中提供了针对自定义页面的其他模板,用户可以通过修改自定义页面高级设置中的自定义模板设置进行使用。 -::: - -#### 页面操作 - -对于页面的新建、设置、发布及删除等操作,与文章操作基本一致,具体操作请参考[《用户指南-文章》](./posts.md)章节,此处不再赘述。 diff --git a/versioned_docs/version-2.11/user-guide/plugins.md b/versioned_docs/version-2.11/user-guide/plugins.md deleted file mode 100644 index c601c580..00000000 --- a/versioned_docs/version-2.11/user-guide/plugins.md +++ /dev/null @@ -1,79 +0,0 @@ ---- -title: 插件 -description: 插件管理相关功能说明 ---- - -插件是用于扩展 Halo 功能的软件包。插件独立于 Halo 核心应用,可以单独安装、升级、卸载。 - -本文档仅对插件的基本管理功能进行说明,关于插件的详细使用说明请参考对应插件的文档。 - -:::info -目前有两个官方渠道可以获取插件: - -- 应用市场:[https://halo.run/store/apps](https://halo.run/store/apps) -- Awesome Halo:[https://github.com/halo-sigs/awesome-halo](https://github.com/halo-sigs/awesome-halo) -::: - -## 安装插件 - -进入插件管理页面,点击右上角的 `安装` 按钮即可打开插件安装的对话框。 - -和主题一样,插件同时支持本地上传安装和远程下载安装。 - -### 本地上传安装 - -![安装插件](/img/user-guide/plugins/plugin-install.png) - -插件安装成功后,便会出现在插件管理的列表中。 - -### 远程下载安装 - -同样,在安装插件的对话框中,切换到远程下载选项卡,输入插件的下载地址,点击 `下载` 按钮即可开始下载插件。 - -插件安装成功后,便会出现在插件管理的列表中。 - -此外, Halo 的[应用市场](https://halo.run/store/apps)也支持通过输入站点地址的方式自动跳转到你的站点进行安装,演示视频: - - - - -:::info -插件安装成功后会提示你是否需要启动该插件,你可以根据需要选择是否启动。 -::: - -## 插件设置 - -点击插件列表中的某个插件进入插件详情页面。与主题设置类似,插件详情页面默认显示出了当前插件的详细信息,在详细信息标签页后方的标签页,即为插件提供的相关设置。不同的插件提供的设置项各不相同,设置项的详细说明请参考对应插件的文档。 - -![插件设置](/img/user-guide/plugins/plugin-setting.png) - -此处以 `plugin-umami` 插件为例。 - -:::info -你可以点击插件列表指定插件所在行后方的 `···` 更多操作按钮,选择其中的 `重置` 选项将插件提供的设置项恢复为默认值。 -::: - -## 启用/禁用插件 - -点击插件列表或插件详情页中的启用/禁用开关,即可切换插件的启用禁用状态。 - -![插件启用/禁用](/img/user-guide/plugins/plugin-switch.png) - -## 升级插件 - -点击具体插件的 `···` 更多操作按钮,选择其中的 `升级` 选项即可打开升级插件的对话框,与安装插件一样,同时支持本地上传和远程下载。 - -## 重置 - -如果你需要清空所有插件配置并重新配置插件,你可以通过 `···` 更多操作中的 `重置` 选项将主题提供的设置项恢复为默认值。 - -## 卸载插件 - -点击插件列表指定插件所在行后方的 `···` 更多操作按钮,选择其中的 `卸载` 选项即可对当前插件进行卸载。 - -![卸载插件](/img/user-guide/plugins/plugin-uninstall.png) - -:::info -目前提供了 `卸载` 及 `卸载并删除配置` 两种卸载方式。 -仅卸载插件时插件的配置信息会进行保留,当重新安装插件后还可以使用之前已保存的配置。 -::: diff --git a/versioned_docs/version-2.11/user-guide/posts.md b/versioned_docs/version-2.11/user-guide/posts.md deleted file mode 100644 index 21cdf08f..00000000 --- a/versioned_docs/version-2.11/user-guide/posts.md +++ /dev/null @@ -1,139 +0,0 @@ ---- -title: 文章 -description: 文章管理相关功能说明 ---- -## 新建文章 - -目前你可以通过以下两种方式新建一篇文章: - -1. 点击仪表盘快捷访问组件中的创建文章 -2. 通过左侧导航栏进入文章页面,点击右上角的新建按钮 - -进入到如下页面后,你就可以开始编辑自己的文章内容了: - -![文章编辑界面说明](/img/user-guide/posts/post-edit.png) - -1. **编辑器切换**:如果安装了其他的编辑器插件,那么就可以在这个位置选择所需的编辑器。 -2. **预览**:点击预览按钮可以在未发布的时候预览文章的渲染效果。 -3. **保存**:仅保存文章内容,但是不发布。 -4. **发布**:保存并发布文章内容。 - -:::info -Halo 支持通过插件来拓展文章编辑器,目前 Halo 官方维护了另外两款编辑器插件,可以按需安装使用: - -1. StackEdit:[https://halo.run/store/apps/app-hDXMG](https://halo.run/store/apps/app-hDXMG) -2. ByteMD:[https://halo.run/store/apps/app-HTyhC](https://halo.run/store/apps/app-HTyhC) -::: - -## 文章设置 - -当你想修改一篇文章的标题、所属分类等信息时,你可以通过以下方式进行操作: - -1. 点击文章列表指定文章所在行的 `···` 更多操作按钮,选择设置。 -2. 在文章列表点击指定文章的标题进入文章编辑页面,点击页面右上角的设置按钮。 - -![文章编辑界面说明](/img/user-guide/posts/post-setting.png) - -### 设置说明 - -- **标题**:用于在主题端显示的文章标题。 -- **别名**:通常用于生成文章访问地址,如:`/archives/{slug}`。 -- **分类目录**:文章所属分类,方便用户区分文章类型进行针对性浏览,一篇文章可以属于多个分类。 -- **标签**:文章添加的标签,方便用户更进一步标识文章信息,一篇文章可以添加多个标签。 -- **自动生成摘要**:文章摘要是对文章内容的概括性描述。 - - **是**: 系统根据文章内容,自动生成一段摘要。 - - **否**: 用户自行输入文章摘要文本。 -- **自定义摘要**:用户自行输入的文章摘要文本,仅当 `自动生成摘要` 为否时生效。 -- **允许评论**:是否允许用户在主题端浏览文章时对该文章发起评论。 -- **是否置顶**:文章是否排序在文章列表的最顶部。 -- **可见性**:访问站点主题端时,哪些人可以看到这篇文章。 - - **公开**:所有用户均可看到这篇文章,包括未登录用户。 - - **私有**:仅文章作者可以看到这篇文章。 -- **发表时间**:手动指定文章的发表时间,未指定时以实际发布时间为准。 -- **自定义模板**:自定义文章的渲染模板,由主题提供支持。 -- **封面图**:文章封面图设置,需要主题支持该功能。 -- **元数据**:供主题、插件使用的额外数据信息。比如主题在文章页面提供了一个下载按钮,那么就可以通过元数据来指定下载地址。 - -## 发布及取消发布 - -对于已发布的文章,默认可以通过站点地址进行公开访问,用户可以在文章高级设置中修改可见性。 - -你可以在上文介绍的文章设置对话框中,修改文章的发布状态。 - -在文章设置对话框中,若文章当前处于已发布状态,下方会显示取消发布按钮。若文章处于未发布状态,下方则不会显示发布按钮。 - -## 删除文章 - -当你不再需要一篇文章时,你可以通过以下方式删除该文章: - -1. 点击文章列表指定文章所在行的 `···` 更多操作按钮,选择删除。 -2. 勾选文章列表中的全选/多选框,选中一篇或多篇文章进行批量删除。 - -文章删除后会进入回收站中,点击右上角的回收站按钮进入回收站。在回收站中,你可以永久删除或恢复指定的文章。 - -:::warning -文章永久删除后将从数据库删除该记录,后续无法再恢复找回。 -::: - -## 文章分类管理 - -通过分类可以更好地组织管理文章。分类之间存在层级关系,一个父分类下可包含多个子分类。一篇文章可以同时属于多个分类。 - -在文章管理页面,点击页面右上角的 `分类` 按钮即可进入分类管理页面。 - -### 新建文章分类 - -点击分类管理页面右上角的 `新建` 按钮即可新建一个分类。 - -![文章分类编辑界面说明](/img/user-guide/posts/category-create.png) - -#### 设置说明 - -- **名称**:用于在主题端显示的分类名称。 -- **别名**:通常用于生成分类归档页面的访问地址。默认路径规则为 `/categories/{slug}`,其中 `slug` 为分类别名,访问该地址即可浏览该分类下的所有文章。分类页路由前缀可[在设置中修改](./settings#主题路由设置)。 -- **自定义模板**:自定义分类归档页面的渲染模板,由主题提供支持。 -- **封面图**:分类封面图设置,需要主题支持该功能。 -- **描述**:关于该文章分类的更多描述信息。 -- **元数据**:供主题、插件使用的额外数据信息。例如部分主题期望使用不同的颜色对分类进行区分,便可以使用该功能为分类增加颜色相关的元数据。 - -### 调整分类层级 - -分类之间存在层级关系,一个父分类下可包含多个子分类。 - -你可以按住分类前的图标,通过拖拽来调整分类间的层级关系和顺序。 - -![移动文章分类](/img/user-guide/posts/category-move.gif) - -### 修改/删除分类 - -点击指定分类所在行后方的 `···` 更多操作按钮,可以对文章分类进行修改或删除。 - -:::warning -文章分类删除后,对应文章的关联将被解除,且该操作不可恢复,请谨慎进行该操作。 -::: - -## 文章标签管理 - -标签可以用于为文章添加特定标记,与分类不同的是标签之间没有层级关系。一篇文章也可以同时添加多个标签。 - -### 新建文章标签 - -点击分类管理页面右上角的 `新建` 按钮即可新建一个分类。 - -![标签编辑界面说明](/img/user-guide/posts/tag-create.png) - -#### 设置说明 - -- **名称**:用于在主题端显示的标签名称。 -- **别名**:通常用于生成标签归档页面的访问地址。默认路径规则为 `/tags/{slug}`,其中 `slug` 为标签别名,访问该地址即可浏览具有该标签的所有文章。标签页路由前缀可[在设置中修改](./settings#主题路由设置)。 -- **颜色**:用于在控制台及主题端显示的标签颜色,主题端显示颜色需要主题支持该功能。 -- **封面图**:标签封面图设置,需要主题支持该功能。 -- **元数据**:供主题、插件使用的额外数据信息。 - -### 修改/删除标签 - -在列表模式下,点击指定标签所在行后方的 `···` 更多操作按钮,可以对文章标签进行修改或删除。 - -:::warning -文章标签删除后,对应文章的关联将被解除,且该操作不可恢复,请谨慎进行该操作。 -::: diff --git a/versioned_docs/version-2.11/user-guide/settings.md b/versioned_docs/version-2.11/user-guide/settings.md deleted file mode 100644 index c04b3a1c..00000000 --- a/versioned_docs/version-2.11/user-guide/settings.md +++ /dev/null @@ -1,113 +0,0 @@ ---- -title: 站点设置 -description: 站点设置相关功能说明 ---- - -## 基本设置 - -Halo 提供了以下站点基本信息设置: - -- **站点标题** -- **站点副标题** -- **Logo** -- **Favicon** - -在控制台设置完成后,主题端可以通过特定的表达式获取到这些信息并且在对应的位置进行展示。具体是否读取使用这些配置、在哪些位置显示这些信息由使用的不同主题而决定。 - -以 Halo 2.0 的[默认主题 Earth](https://github.com/halo-dev/theme-earth) 为例,这些设置信息将在如下位置进行展示。 - -![默认主题基本设置说明](/img/user-guide/settings/setting-basic.png) - -## 文章设置 - -针对主题端的文章展示,Halo 提供了以下设置项: - -- **文章列表显示条数** -- **归档页文章显示条数** -- **分类页文章显示条数** -- **标签页文章显示条数** - -## SEO 设置 - -针对站点的 SEO(搜索引擎优化)需求,Halo 提供了以下设置项: - -- **屏蔽搜索引擎**:配置后会在所有页面 HTML 源码的 head 部分添加 ``。 -- **站点关键词**:格式为以`,`分隔的关键词列表,配置后会在所有页面 HTML 源码的 head 部分添加 ` content="{关键词}" />`。 - - :::warning 注意 - 目前主流的搜索引擎(如 Google、Bing、百度搜索等)已经不再使用该标签作为关键词的参考,因此该设置项的作用已经不大,未来我们也可能会移除该设置项。 - ::: - -- **站点描述**:配置后会在所有页面 HTML 源码的 head 部分添加 ``。 - -## 用户设置 - -- **开放注册**:是否允许访客注册,勾选之后在登录页面会显示注册入口。 -- **默认角色**:新注册用户的默认角色。 - -## 评论设置 - -针对站点的评论功能,Halo 提供了以下设置项: - -- **启用评论**:全局评论功能开关配置,修改后影响所有文章、页面的评论功能。 -- **新评论审核**:新增的评论是否需要在控制台进行审核,审核通过后其他访问者才能看到该条评论。 -- **仅允许注册用户评论**:开启后只有登录用户才能添加评论,关闭后匿名(未登录)的访客也可以通过自行填写昵称、邮箱、网址等信息进行评论。 - -## 主题路由设置 - -针对访问站点各种类型页面的 URL 生成规则,Halo 提供了以下主题路由设置项: - -- **分类页路由前缀**:定位到分类列表页面以及分类归档页面。 - - 默认的分类列表页面 URL 规则前缀为 `/categories` - - 默认的分类归档页面 URL 规则前缀为 `/categories/{slug}` -- **标签页路由前缀**:定位到标签列表页面以及标签归档页面。 - - 默认的标签列表页面 URL 规则前缀为 `/tags` - - 默认的标签归档页面 URL 规则前缀为 `/tags/{slug}` -- **归档页路由前缀**:定位到文章归档页面的 URL 规则前缀,默认为 `/archives`。 -- **文章详情页访问规则**:定位到具体文章详情页面的 URL 规则前缀,默认为 `/archives/{slug}` ,用户可从以下路径规则进行选择: - - `/archives/{slug}` - - `/archives/{name}` - - `/?p={name}` - - `/?p={slug}` - - `/?p={slug}` - - `/{year}/{slug}` - - `/{year}/{month}/{slug}` - - `/{year}/{month}/{day}/{slug}` - - :::info 变量说明 - - `slug`:文章别名 - - `name`:文章 `metadata.name` 字段值 - - `year`:四位数格式的文章发布年份 - - `month`:两位数格式的文章发布月份 - - `day`:两位数格式的文章发布日 - ::: - -## 代码注入 - -你可以使用代码注入功能,在特定类型的页面中注入额外的代码。你可以通过该功能覆盖或补充部分主题 CSS 样式,或者引入额外的 JavaScript 脚本扩展主题端功能。 - -- **全局 head 标签**:该代码将会被注入到所有页面的 head 标签中。 -- **内容页 head 标签**:该代码将会被注入到文章、页面详情页的 head 标签中。 -- **页脚**:该代码将会被注入到所有页面的页脚中。 - -## 通知设置 - -从 2.10.0 版本开始, Halo 提供了 **通知** 功能,当有新的评论、留言、回复等事件发生时,Halo 会通过配置的方式通知站长或者相关用户。同时,个人中心配置的电子邮箱也会作为通知的接收邮箱。 - -### 邮件通知 - -- **启用邮件通知器**:开启后,当有新的评论、留言、回复等事件发生时,Halo 会通过 **邮件** 的方式通知站长或者相关用户。 -- **用户名**:你需要在此处填写你的 **邮箱账号**。 -- **密码**:你需要在此处填写你的 **邮箱密码** 或相关的 **授权码**,具体请参考你所使用邮箱的相关说明。 -- **显示名称**:你需要在此处填写你的 **邮箱显示名称**,该名称将会作为邮件发送者的名称显示。 -- **SMTP 服务器地址**:你需要在此处填写你的 **SMTP 服务器地址**,具体请参考你所使用邮箱的相关说明。 -- **端口号**:你需要在此处填写你的 **SMTP 服务器端口号**,具体请参考你所使用邮箱的相关说明。 -- **加密方式**:你需要在此处选择你的 **SMTP 服务器加密方式**,具体请参考你所使用邮箱的相关说明。 - -> 常见邮箱服务商的文档如下: -> -> - [QQ 邮箱](https://service.mail.qq.com/detail/0/310) -> - [163 邮箱](https://help.mail.163.com/faqDetail.do?code=d7a5dc8471cd0c0e8b4b8f4f8e49998b374173cfe9171305fa1ce630d7f67ac2a5feb28b66796d3b) -> - [Gmail](https://support.google.com/mail/answer/7104828?hl=zh-Hans) -> - [阿里云企业邮箱](https://help.aliyun.com/document_detail/36687.html) -> - [腾讯企业邮箱](https://open.work.weixin.qq.com/help2/pc/19870) diff --git a/versioned_docs/version-2.11/user-guide/themes.md b/versioned_docs/version-2.11/user-guide/themes.md deleted file mode 100644 index 60dac413..00000000 --- a/versioned_docs/version-2.11/user-guide/themes.md +++ /dev/null @@ -1,96 +0,0 @@ ---- -title: 主题 -description: 主题管理相关功能说明 ---- - -主题包含了各种站点页面模板的资源包。用户访问 Halo 站点浏览到的内容及样式,由 Halo 管理端所配置使用的主题所决定。 - -:::info -目前有两个官方渠道可以获取主题: - -- 应用市场:[https://halo.run/store/apps](https://halo.run/store/apps) -- Awesome Halo:[https://github.com/halo-sigs/awesome-halo](https://github.com/halo-sigs/awesome-halo) -::: - -## 安装主题 - -点击主题页面右上方的 `主题管理` 按钮即可弹出主题管理对话框。 - -目前 Halo 提供了两种主题安装方式。 - -### 本地上传安装 - -你可以点击主题管理对话框下方的 `安装主题` 按钮,在弹出的安装主题对话框中上传主题压缩包。 - -![安装主题](/img/user-guide/themes/theme-install.png) - -主题安装成功后,便会出现在已安装主题列表中。 - -### 远程下载安装 - -同样,在安装主题的对话框中,切换到远程下载选项卡,输入主题的下载地址,点击 `下载` 按钮即可开始下载主题。 - -下载完成后,便会出现在已安装主题列表中。 - -此外, Halo 的[应用市场](https://halo.run/store/apps)也支持通过输入站点地址的方式自动跳转到你的站点进行安装,演示视频: - - - - -## 切换主题 - -同样点击主题页面右上方的 `主题管理` 按钮弹出主题管理对话框。 - -在弹框中点击选中要切换的目标主题,此时页面返回到主题详情页,点击右上角的 `启用` 按钮即可将当前主题切换为实际使用的主题。 - -:::info -仅选中主题不点击右上角的 `启用` 按钮时,不会影响当前实际使用的主题。 -::: - -你也可以在已安装主题列表中,通过后方 `···` 的更多操作中的启用选项直接启用指定的主题。 - -## 修改主题设置 - -主题页面默认显示出了当前主题的详细信息,在详细信息标签页后方的标签页,即为主题提供的相关设置。不同的主题提供的设置项各不相同,设置项的详细说明请参考对应主题的文档。 - -![主题设置](/img/user-guide/themes/theme-setting.png) - -以 Halo 的默认主题 Earth 为例,该主题提供了布局、样式、侧边栏、页脚及备案设置共五组配置项。 - -:::info -你可以点击主题列表指定主题所在行后方的 `···` 更多操作按钮,选择其中的 `重置` 选项将主题提供的设置项恢复为默认值。 -::: - -## 预览主题 - -通过预览功能,你可以在不更改当前启用主题的情况下查看不同主题的效果。点击主题详情页面右上角的 `预览` 按钮预览当前主题,或者进入已安装主题列表,通过后方 `···` 的更多操作中的预览选项预览指定的主题。 - -在主题预览页面你可以切换不同分辨率的设备,模拟主题在不同终端下的显示效果。也可以通过右上角的功能菜单切换预览的主题,或者调整当前主题的设置,查看不同设置下主题所展现的区别。 - -演示视频: - - - - -## 升级主题 - -点击主题详情页右上角的 `···` 更多操作按钮,选择其中的 `升级` 选项即可打开升级主题的对话框,与安装主题一样,同时支持本地上传和远程下载。 - -## 重载主题配置 - -如果当前主题提供的设置项发生变化,可以通过 `···` 更多操作中的 `重载主题配置` 选项对主题配置项进行更新。 - -## 重置 - -如果你需要清空所有主题配置并重新配置主题,你可以通过 `···` 更多操作中的 `重置` 选项将主题提供的设置项恢复为默认值。 - -## 卸载主题 - -进入已安装主题列表,点击指定主题所在行后方的 `···` 更多操作按钮,选择其中的 `卸载` 选项即可对当前主题进行卸载。 - -![卸载主题](/img/user-guide/themes/theme-uninstall.png) - -:::info -目前提供了 `卸载` 及 `卸载并删除配置` 两种卸载方式。 -仅卸载主题时主题的配置信息会进行保留,当重新安装主题后还可以使用之前已保存的配置。 -::: diff --git a/versioned_docs/version-2.11/user-guide/user-center.md b/versioned_docs/version-2.11/user-guide/user-center.md deleted file mode 100644 index 6f9c5560..00000000 --- a/versioned_docs/version-2.11/user-guide/user-center.md +++ /dev/null @@ -1,61 +0,0 @@ ---- -title: 个人中心 -description: 关于个人中心的功能说明 ---- - -从 Halo 2.11 开始,除了 Console 管理控制台,我们新增加了个人中心,用于管理和用户相关的所有功能。有了个人中心之后,也可以让网站有更多的使用和开发场景。 - -## 进入个人中心 - -你可以通过点击 Console 左下角的个人中心图标进入个人中心,也可以直接访问 `/uc` 进入个人中心。 - -:::info 提示 -此外,如果用户拥有进入 Console 的权限,也会在个人中心的左侧导航栏中看到 Console 的入口。 - -详情可见:[创建角色](./users.md#创建角色) -::: - -![Entry](/img/uc/uc-entry.png) - -## 个人资料 - -这个页面会显示和用户相关的一些信息。 - -![Entry](/img/uc/uc-profile.png) - -## 通知配置 - -这个页面可以配置用户的通知偏好,可以选择接收哪些类型的通知。 - -![Entry](/img/uc/uc-notification-preferences.png) - -## 个人令牌 - -个人令牌是一种用于访问 Halo API 的凭证,可以通过个人令牌访问 Halo 的 REST API,而无需通过用户名和密码授权。 - -![Entry](/img/uc/uc-pat.png) - -创建新的个人令牌: - -![Entry](/img/uc/uc-pat-creation.png) - -- **名称**:个人令牌的名称。 -- **过期时间**:个人令牌的过期时间,不选择则表示永不过期。 -- **描述**:个人令牌的描述信息,用于描述个人令牌的用途。 -- **权限**:个人令牌的权限,可以选择多个权限。 - -创建好的个人令牌: - -![Entry](/img/uc/uc-pat-token.png) - -## 消息 - -此页面用于显示用户收到的站内消息。 - -![Entry](/img/uc/uc-notifications.png) - -## 我的文章 - -Halo 默认为个人中心提供了管理个人文章的功能,每个用户都可以在个人中心创建、编辑自己的文章。当然,也可以通过配置角色权限,自行决定是否开放此功能,可查阅[创建角色](./users.md#创建角色)。 - -![Entry](/img/uc/uc-posts.png) diff --git a/versioned_docs/version-2.11/user-guide/users.md b/versioned_docs/version-2.11/user-guide/users.md deleted file mode 100644 index 6621ad6d..00000000 --- a/versioned_docs/version-2.11/user-guide/users.md +++ /dev/null @@ -1,118 +0,0 @@ ---- -title: 用户与权限 -description: 用户管理、权限配置相关功能说明 ---- - -## 概览 - -Halo 2.0 版本采用了基于角色的权限控制(RBAC)体系。不同于之前 1.x 版本的单用户设计,现在你可以创建多个用户并且通过赋予不同用户不同角色的方式,为他们分配不同的权限。 - -## 用户 - -点击左侧导航栏的 `用户` 条目进入用户管理页面。 - -### 创建用户 - -在用户管理页面,点击右上角的 `添加用户` 按钮即可弹出新建用户对话框。 - -![创建用户](/img/user-guide/users/user-setting.png) - -目前支持配置的用户属性有: - -- **用户名**:用户登录 Halo 控制台使用的用户名,不可与已有的用户名重复; -- **显示名称**:用于显示文章作者等用户信息时使用的,更友好的用户名称; -- **密码** -- **电子邮箱** -- **手机号** -- **头像** -- **描述** -- **元数据**:供主题、插件使用的额外数据信息。例如部分主题期望展示作者的学历、工作单位等信息,便可以使用该功能为用户增加相关的元数据。 - -### 其他操作 - -点击用户列表中的 `···` 更多操作按钮,可以对指定用户进行修改资料、修改密码等其他更多操作。 - -![用户列表其他操作](/img/user-guide/users/user-operate.png) - -#### 修改用户资料 - -你可以修改除用户名以外的所有资料,具有用户管理相关权限的用户,也可对其他用户的资料进行修改。 - -#### 修改用户密码 - -对于已有的用户,你可以在 `···` 更多操作中修改指定用户的登录密码。 - -#### 分配角色 - -对于已有的用户,你可以在 `···` 更多操作中为该用户分配角色,分配角色后该用户具有角色所对应的权限。 - -:::info -修改用户分配的角色会影响用户所拥有的权限,可能影响用户使用。 -::: - -#### 删除用户 - -对于已有的用户,你可以在 `···` 更多操作中删除该用户。 - -:::warning -删除用户后,该用户之前创建的文章、页面等内容的作者信息将会丢失,可能影响站点内容浏览。此操作不可恢复。 -::: - -## 角色 - -如下图所示,在用户管理页面,点击右上角红色区域的 `角色管理` 按钮,即可进入到角色管理页面。 - -![角色管理](/img/user-guide/users/role-management.png) - -### 创建角色 - -Halo 提供了全新创建和基于已有角色创建两种角色创建方式。 - -#### 全新创建 - -点击角色管理页面右上角的 `新建角色` 按钮即可弹出新建角色对话框,通过这种方式创建的角色默认未勾选任何权限,你需要在对话框中点击切换到权限标签页,为该角色勾选需要的权限。 - -#### 基于已有角色创建 - -![基于已有角色创建角色](/img/user-guide/users/role-fork.png) - -当系统中已经存在一些基础角色时,你可以点击某个角色所在行中的 `···` 更多操作按钮,选择 `基于此角色创建` 来创建一个新的角色。通过这种方式创建的角色默认继承了原有角色的权限,但你同样可以对新角色的权限进行进一步调整。 - -![创建角色](/img/user-guide/users/role-creation.png) - -- **名称**:角色的名称。 -- **登录之后默认跳转位置**:用户登录成功后,跳转到指定的页面。 -- **禁止访问 Console**:勾选后,该角色的用户将无法进入 Console 管理控制台,只能访问个人中心(/uc)。 -- **权限**:角色的权限,可以选择多个权限。 - -### 修改角色信息 - -对于已有的角色,你可以在 `···` 更多操作中修改指定角色的名称和该角色所拥有的权限。 - -### 其他操作 - -对于已有的角色,你可以在 `···` 更多操作中删除指定角色。 - -:::warning -删除角色后,分配了该角色的用户会丧失对应的权限,影响用户使用。此操作不可恢复。 -::: - -## 身份认证 - -目前 Halo 默认仅支持本地身份认证,但可以通过插件的方式拓展其他三方的身份认证方式。 - -:::info -目前 Halo 官方提供的身份认证插件: - -- OAuth2 认证:[https://halo.run/store/apps/app-ESVDK](https://halo.run/store/apps/app-ESVDK) -::: - -你可以在用户管理界面的右上角点击 `身份认证` 按钮,进入身份认证管理页面。 - -![身份认证](/img/user-guide/users/auth-providers-entry.png) - -进入身份认证管理页面之后,如果你已经安装了提供身份认证方式的插件,你就可以在列表中看到对应的身份认证方式,你可以对其进行设置并启用。 - -![身份认证方式](/img/user-guide/users/auth-providers.png) - -> 这里是安装了 [OAuth2 认证](https://halo.run/store/apps/app-ESVDK) 插件,提供了 `GitHub`、`GitLab`、`Gitee` 三种 OAuth2 认证方式。 diff --git a/versioned_docs/version-2.12/about.md b/versioned_docs/version-2.12/about.md deleted file mode 100644 index d0eb7313..00000000 --- a/versioned_docs/version-2.12/about.md +++ /dev/null @@ -1,16 +0,0 @@ ---- -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.12/contribution/issue.md b/versioned_docs/version-2.12/contribution/issue.md deleted file mode 100644 index f1184855..00000000 --- a/versioned_docs/version-2.12/contribution/issue.md +++ /dev/null @@ -1,28 +0,0 @@ ---- -title: 问题反馈 -description: 问题反馈渠道及指南 ---- - -:::info -如果您在使用过程中遇到了什么问题,您可以通过下面的方式反馈,但请尽量按照要求提出反馈。 -::: - -## GitHub Issues - -链接:[https://github.com/halo-dev/halo/issues](https://github.com/halo-dev/halo/issues) - -如果你在使用过程中,遇到了一些 bug 或者需要添加某些新特性,请尽量在 GitHub Issues 进行反馈,这非常有助于我们跟踪解决此问题,您也可以很方便的接收到处理状态。 - -建议步骤: - -1. 在 [Issues 列表](https://github.com/halo-dev/halo/issues) 搜索相关问题,看看是否有其他人已经提到了此问题。 -2. 如果当前还没有人遇到您类似的问题,那么请点击右上角的 `New issue` 按钮创建新的 issue。 -3. 选择正确的反馈类型。 -4. 请尽可能详细的按照模板填写内容。 -5. 点击 `Submit new issue` 提交 issue。 - -## Halo 官方社区 - -链接:[https://bbs.halo.run](https://bbs.halo.run) - -此平台主要目的用于与其他 Halo 用户进行交流。但如果您对 GitHub 不是很熟悉或者没有账号,您也可以在此平台进行反馈。 diff --git a/versioned_docs/version-2.12/contribution/pr.md b/versioned_docs/version-2.12/contribution/pr.md deleted file mode 100644 index 10d26ffb..00000000 --- a/versioned_docs/version-2.12/contribution/pr.md +++ /dev/null @@ -1,110 +0,0 @@ ---- -title: 代码贡献 -description: 代码贡献指南 ---- - -欢迎关注并有想法参与 Halo 的开发,以下是关于如何参与到 Halo 项目的指南,仅供参考。 - -## 发现 Issue - -所有的代码尽可能都有依据(Issue),不是凭空产生。 - -### 寻找一个 Good First Issue - -> 这个步骤非常适合首次贡献者。 - -在 [halo-dev](https://github.com/halo-dev) 和 [halo-sigs](https://github.com/halo-sigs) 组织下,有非常多的仓库。每个仓库下都有可能包含一些“首次贡献者”友好的 Issue,主要是为了给贡献者提供一个友好的体验。 该类 Issue -一般会用 `good-first-issue` 标签标记。标签 `good-first-issue` 表示该 Issue 不需要对 Halo 有深入的理解也能够参与。 - -请点击:[good-first-issue](https://github.com/issues?q=org%3Ahalo-dev+is%3Aopen+is%3Aissue+label%3A%22good+first+issue%22+no%3Aassignee+) -查看关于 Halo 的 Good First Issue。 - -### 认领 Issue - -若对任何一个 Issue 感兴趣,请尝试在 Issue 进行回复,讨论解决 Issue 的思路。确定后可直接通过 `/assign` 或者 `/assign @GitHub 用户名` 认领这个 -Issue。这样可避免两位贡献者在同一个问题上花时间。 - -## 代码贡献步骤 - -1. Fork 此仓库 - - 点击 Halo 仓库主页右上角的 `Fork` 按钮即可。 - -2. Clone 仓库到本地 - - ```bash - git clone https://github.com/{YOUR_USERNAME}/halo --recursive - # 或者 git clone git@github.com:{YOUR_USERNAME}/halo.git --recursive - ``` - -3. 添加主仓库 - - 添加主仓库方便未来同步主仓库最新的 commits 以及创建新的分支。 - - ```bash - git remote add upstream https://github.com/halo-dev/halo.git - # 或者 git remote add upstream git@github.com:halo-dev/halo.git - git fetch upstream main - ``` - -4. 创建新的开发分支 - - 我们需要从主仓库的主分支创建一个新的开发分支。 - - ```bash - git checkout upstream/main - git checkout -b {BRANCH_NAME} - ``` - -5. 提交代码 - - ```bash - git add . - git commit -s -m "Fix a bug king" - git push origin {BRANCH_NAME} - ``` - -6. 合并主分支 - - 在提交 Pull Request 之前,尽量保证当前分支和主分支的代码尽可能同步,这时需要我们手动操作。示例: - - ```bash - git fetch upstream/main - git merge upstream/main - git push origin {BRANCH_NAME} - ``` - -## Pull Request - -进入此阶段说明已经完成了代码的编写,测试和自测,并且准备好接受 Code Review。 - -### 创建 Pull Request - -回到自己的仓库页面,选择 `New pull request` 按钮,创建 `Pull request` 到原仓库的 `main` 分支。 -然后等待我们 Review 即可,如有 `Change Request`,再本地修改之后再次提交即可。 - -提交 Pull Request 的注意事项: - -- 提交 Pull Request 请充分自测。 -- 每个 Pull Request 尽量只解决一个 Issue,特殊情况除外。 -- 应尽可能多的添加单元测试,其他测试(集成测试和 E2E 测试)可看情况添加。 -- 不论需要解决的 Issue 发生在哪个版本,提交 Pull Request 的时候,请将主仓库的主分支设置为 `main`。例如:即使某个 Bug 于 Halo 2.0.x 被发现,但是提交 Pull Request 仍只针对 - `main` 分支,等待 Pull Request 合并之后,我们会通过 `/cherrypick release-2.0` 或者 `/cherry-pick release-2.1` 指令将此 Pull Request - 的修改应用到 `release-2.0` 和 `release-2.1` 分支上。 - -### 更新 commits - -Code Review 阶段可能需要 Pull Request 作者重新修改代码,请直接在当前分支 commit 并 push 即可,无需关闭并重新提交 Pull Request。示例: - -```bash -git add . -git commit -s -m "Refactor some code according code review" -git push origin bug/king -``` - -同时,若已经进入 Code Review 阶段,请不要强制推送 commits 到当前分支。否则 Reviewers 需要从头开始 Code Review。 - -### 开发规范 - -请参考 [https://docs.halo.run/developer-guide/core/code-style](https://docs.halo.run/developer-guide/core/code-style) -,请确保所有代码格式化之后再提交。 diff --git a/versioned_docs/version-2.12/contribution/sponsor.md b/versioned_docs/version-2.12/contribution/sponsor.md deleted file mode 100644 index eede34e3..00000000 --- a/versioned_docs/version-2.12/contribution/sponsor.md +++ /dev/null @@ -1,26 +0,0 @@ ---- -title: 赞助我们 -description: 如果 Halo 对你有帮助,不妨赞助我们 ---- - -## 为什么需要赞助 - -我们花费了大量的精力来维护这个软件,并且也提供了不少资金来维护服务器,域名等。因此我们需要赞助来节省部分开发成本。你的赞助不仅仅会被我们用来支付一些开发成本(比如服务器,OSS,域名等),还会让我们有更多的信心和精力投入到这个开源项目的开发中。从而让项目保持更加健康的成长以及迭代。 - -## 赞助形式 - -:::info -你可以通过任何形式对我们赞助,不限于资金。 -::: - -### 资金赞助 - -- 爱发电:[https://afdian.com/a/halo-dev](https://afdian.com/a/halo-dev) - -### 通过我们的推广链接购买服务器 - -如果你当前还没有购买服务器,可以考虑通过以下链接购买,这会为我们带来一部分收益。 - -- 阿里云:[https://www.aliyun.com/daily-act/ecs/activity_selection?userCode=j57gyupo](https://www.aliyun.com/daily-act/ecs/activity_selection?userCode=j57gyupo) -- 阿里云新人专享:[https://www.aliyun.com/minisite/goods?userCode=j57gyupo](https://www.aliyun.com/minisite/goods?userCode=j57gyupo) -- 腾讯云:[https://curl.qcloud.com/9Ogon25Y](https://curl.qcloud.com/9Ogon25Y) diff --git a/versioned_docs/version-2.12/developer-guide/annotations-form.md b/versioned_docs/version-2.12/developer-guide/annotations-form.md deleted file mode 100644 index 0fa3d8d3..00000000 --- a/versioned_docs/version-2.12/developer-guide/annotations-form.md +++ /dev/null @@ -1,89 +0,0 @@ ---- -title: 元数据表单定义 ---- - -在 Halo 2.0,所有的模型都包含了 `metadata.annotations` 字段,用于存储元数据信息。元数据信息可以用于存储一些自定义的信息,可以等同于扩展字段。此文档主要介绍如何在 Halo 中为具体的模型定义元数据编辑表单,至于如何在插件或者主题模板中使用,请看插件或者主题的文档。 - -定义元数据编辑表单同样使用 `FormKit Schema`,但和主题或插件的定义方式稍有不同,其中输入组件类型可参考 [表单定义](./form-schema.md)。 - -:::info 提示 -因为 `metadata.annotations` 是一个键值都为字符串类型的对象,所以表单项的值必须为字符串类型。这就意味着,FormKit 的 `number`、`group`、`repeater` 等类型的输入组件都不能使用。 -::: - -## AnnotationSetting 资源定义方式 - -```yaml title="annotation-setting.yaml" -apiVersion: v1alpha1 -kind: AnnotationSetting -metadata: - name: my-annotation-setting -spec: - targetRef: - group: content.halo.run - kind: Post - formSchema: - - $formkit: "text" - name: "download" - label: "下载地址" - - $formkit: "text" - name: "version" - label: "版本" -``` - -以上定义为文章模型添加了两个元数据字段,分别为 `download` 和 `version`,分别对应了下载地址和版本号,最终效果: - -![Annotation Setting Preview](/img/annotation-setting/annotation-setting-preview.png) - -字段说明: - -1. `metadata.name`:唯一标识,命名规范可参考 [metadata name](./plugin/api-reference/server/extension.md#metadata-name),为了尽可能避免冲突,建议自定义前缀以及追加随机字符串,如:`theme-earth-post-wanfs5`。 -2. `spec.targetRef`:模型的关联,即为哪个模型添加元数据表单,目前支持的模型可查看下方的列表。 -3. `spec.formSchema`:表单的定义,使用 FormKit Schema 来定义。虽然我们使用的 YAML,但与 FormKit Schema 完全一致。 - -targetRef 支持列表: - -| 对应模型 | group | kind | -| ---------- | ---------------- | ---------- | -| 文章 | content.halo.run | Post | -| 自定义页面 | content.halo.run | SinglePage | -| 文章分类 | content.halo.run | Category | -| 文章标签 | content.halo.run | Tag | -| 菜单项 | `""` | MenuItem | -| 用户 | `""` | User | - -## 为多个模型定义表单 - -考虑到某些情况可能会同时为多个模型添加元数据表单,推荐在一个 `yaml` 文件中使用 `---` 来分割多个资源定义,如下: - -```yaml title="annotation-setting.yaml" -apiVersion: v1alpha1 -kind: AnnotationSetting -metadata: - name: my-annotation-setting -spec: - targetRef: - group: content.halo.run - kind: Post - formSchema: - - $formkit: "text" - name: "download" - label: "下载地址" - - $formkit: "text" - name: "version" - label: "版本" - ---- - -apiVersion: v1alpha1 -kind: AnnotationSetting -metadata: - name: my-annotation-setting -spec: - targetRef: - group: "" - kind: MenuItem - formSchema: - - $formkit: "text" - name: "icon" - label: "图标" -``` diff --git a/versioned_docs/version-2.12/developer-guide/core/build.md b/versioned_docs/version-2.12/developer-guide/core/build.md deleted file mode 100644 index 530953cd..00000000 --- a/versioned_docs/version-2.12/developer-guide/core/build.md +++ /dev/null @@ -1,105 +0,0 @@ ---- -title: 构建 -description: 构建为可执行 JAR 和 Docker 镜像的文档 ---- - -:::info -在此之前,我们推荐你先阅读[《准备工作》](./prepare),检查本地环境是否满足要求。 -::: - -一般情况下,为了保证版本一致性和可维护性,我们并不推荐自行构建和二次开发。但考虑到我们目前仅提供 Docker 镜像的发行版本,不再提供可执行 JAR 的发行版本,因此我们提供了构建的文档,以供用户自行构建。 - -## 克隆项目 - -如果你已经 fork 了相关仓库,请将以下命令中的 halo-dev 替换为你的 GitHub 用户名。 - -```bash -git clone https://github.com/halo-dev/halo - -# 或者使用 ssh 的方式 clone(推荐) - -git clone git@github.com:halo-dev/halo.git - -# 切换到最新的 tag - -cd halo - -git checkout v2.4.0 -``` - -:::tip -请务必按照以上要求切换到最新的 tag,而不是直接使用 main 分支构建,main 分支是我们的开发分支。此文档以 `2.12.0` 为例,查看最新的 tag 可使用 `git tag --column` 查看。 -::: - -## 构建 Console 和个人中心 - -```bash -cd path/to/halo -``` - -Linux / macOS 平台: - -```bash -make -C console build -``` - -Windows 平台: - -```bash -cd console - -pnpm install - -pnpm build:packages - -pnpm build -``` - -## 构建 Fat Jar - -构建之前需要修改 `gradle.properties` 中的 `version` 为当前 tag 的版本号,如:`version=2.12.0` - -```bash -cd path/to/halo -``` - -下载预设插件: - -```bash -# Windows -./gradlew.bat downloadPluginPresets - -# macOS / Linux -./gradlew downloadPluginPresets -``` - -构建: - -```bash -# Windows -./gradlew.bat clean build -x check - -# macOS / Linux -./gradlew clean build -x check -``` - -构建完成之后,在 halo 项目下产生的 `application/build/libs/application-$version.jar` 即为构建完成的文件。 - -## 构建 Docker 镜像 - -在进行之前,请确保已经完成上述操作,最终需要确认在 halo 项目的 `application/build/libs/` 目录已经包含了 `application-$version.jar` 文件。 - -```bash -cd path/to/halo -``` - -```bash -docker build -t halo-dev/halo:2.12.0 . -``` - -```bash -# 插件构建完成的版本 -docker images | grep halo -``` - -最终部署文档可参考:[使用 Docker Compose 部署](../../getting-started/install/docker-compose.md) diff --git a/versioned_docs/version-2.12/developer-guide/core/code-style.md b/versioned_docs/version-2.12/developer-guide/core/code-style.md deleted file mode 100644 index 90bdd686..00000000 --- a/versioned_docs/version-2.12/developer-guide/core/code-style.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: 代码风格 -description: 代码风格的相关配置说明 ---- - -Halo 添加了 checkstyle 插件,来保证每位提交者代码的风格保持一致,减少无效代码的修改。本篇文章主要讲解如何在 IDEA 中添加 CheckStyle 插件,并引入项目所提供的 checkstyle.xml 配置。 - -## 安装 CheckStyle-IDEA - -- 进入 IDEA 插件市场。 -- 搜索 CheckStyle-IDEA,点击安装即可。 - -## 配置 CheckStyle - -- 进入 CheckStyle 配置(File | Settings | Tools | Checkstyle)。 -- 选择 Checkstyle 版本:8.39。 -- 在配置文件中点击添加按钮,配置描述可随便填写(推荐 Halo Checks),选择 ./config/checkstyle/checkstyle.xml,点击下一步和完成。 -- 勾选刚刚创建的配置文件。 - -## 配置 Editor - -- 进入编辑器配置(File | Settings | Editor | Code Style) - -- 导入 checkstyle.xm 配置: - -![image.png](https://halo.run/upload/2020/2/image-0c7a018e73f74634a534fa3ba8806628.png) - -- 选择 `./config/checkstyle/checkstyle.xml` 配置文件,点击确定即可。 - -至此,有关代码风格检查工具和格式化配置已经完成。 diff --git a/versioned_docs/version-2.12/developer-guide/core/prepare.md b/versioned_docs/version-2.12/developer-guide/core/prepare.md deleted file mode 100644 index 04401b57..00000000 --- a/versioned_docs/version-2.12/developer-guide/core/prepare.md +++ /dev/null @@ -1,25 +0,0 @@ ---- -title: 准备工作 -description: 开发环境的准备工作 ---- - -## 环境要求 - -- [OpenJDK 17 LTS](https://github.com/openjdk/jdk) -- [Node.js 18 LTS](https://nodejs.org) -- [pnpm 8](https://pnpm.io/) -- [IntelliJ IDEA](https://www.jetbrains.com/idea/) -- [Git](https://git-scm.com/) -- [Docker](https://www.docker.com/)(可选) - -## 名词解释 - -### 工作目录 - -指 Halo 所依赖的工作目录,在 Halo 运行的时候会在系统当前用户目录下产生一个 halo-next 的文件夹,绝对路径为 ~/halo-next。里面通常包含下列目录或文件: - -1. `db`:存放 H2 Database 的物理文件,如果你使用其他数据库,那么不会存在这个目录。 -2. `themes`:里面包含用户所安装的主题。 -2. `plugins`:里面包含用户所安装的插件。 -5. `attachments`:附件目录。 -4. `logs`:运行日志目录。 diff --git a/versioned_docs/version-2.12/developer-guide/core/run.md b/versioned_docs/version-2.12/developer-guide/core/run.md deleted file mode 100644 index d2cbf104..00000000 --- a/versioned_docs/version-2.12/developer-guide/core/run.md +++ /dev/null @@ -1,131 +0,0 @@ ---- -title: 开发环境运行 -description: 开发环境运行的指南 ---- - -:::info -在此之前,我们推荐你先阅读[《准备工作》](./prepare),检查本地环境是否满足要求。 -::: - -## 项目结构说明 - -目前如果需要完整的运行 Halo,总共需要三个部分: - -1. Halo 主项目([halo-dev/halo](https://github.com/halo-dev/halo)) -2. UI,包括 Console 控制台和 UC 个人中心(托管在 Halo 主项目) -3. 主题(Halo 主项目内已包含默认主题) - -:::info 说明 -从 Halo 2.11 开始,Halo 项目的 console 目录同时包含了 Console(管理控制台)和 UC(个人中心),以下统称为 UI。 - -当前 Halo 主项目并不会将 UI 的构建资源托管到 Git 版本控制,所以在开发环境是需要同时运行 UI 项目的。当然,在我们的最终发布版本的时候会在 CI 中自动构建 UI 到 Halo 主项目。 -::: - -## 克隆项目 - -如果你已经 fork 了相关仓库,请将以下命令中的 halo-dev 替换为你的 GitHub 用户名。 - -```bash -git clone https://github.com/halo-dev/halo - -# 或者使用 ssh 的方式 clone(推荐) - -git clone git@github.com:halo-dev/halo.git -``` - -## 运行 UI 服务 - -```bash -cd path/to/halo -``` - -Linux / macOS 平台: - -```bash -make -C console dev -``` - -Windows 平台: - -```bash -cd console - -pnpm install - -pnpm build:packages - -pnpm dev -``` - -最终控制台打印了如下信息即代表运行正常: - -```bash -VITE v4.2.3 ready in 638 ms - -# Console 控制台服务 -➜ Local: http://localhost:3000/console/ - -# UC 个人中心服务 -➜ Local: http://localhost:4000/uc/ -``` - -:::info 提示 -请不要直接使用 UI 的运行端口(3000 / 4000)访问,会因为跨域问题导致无法正常登录,建议按照后续的步骤以 dev 的配置文件运行 Halo,在 dev 的配置文件中,我们默认代理了 UI 页面的访问地址,所以后续访问 UI 页面使用 `http://localhost:8090/console` 和 `http://localhost:8090/uc` 访问即可,代理的相关配置: - -```yaml -halo: - console: - proxy: - endpoint: http://localhost:3000/ - enabled: true - uc: - proxy: - endpoint: http://localhost:4000/ - enabled: true -``` - -::: - -## 运行 Halo - -1. 在 IntelliJ IDEA 中打开 Halo 项目,等待 Gradle 初始化和依赖下载完成。 - -2. 下载预设插件(可选) - - ```bash - # Windows - ./gradlew.bat downloadPluginPresets - - # macOS / Linux - ./gradlew downloadPluginPresets - ``` - -3. 修改 IntelliJ IDEA 的运行配置 - - macOS / Linux - - 将 Active Profiles 改为 `dev`,如图所示: - - ![IntelliJ IDEA Profiles](/img/developer-run/IntelliJ-IDEA-Profiles-macOS.png) - - - Windows - - 将 Active Profiles 改为 `dev,win`,如图所示: - - ![IntelliJ IDEA Profiles](/img/developer-run/IntelliJ-IDEA-Profiles-Win.png) - -4. 点击 IntelliJ IDEA 的运行按钮,等待项目启动完成。 - -5. 或者使用 Gradle 运行 - - ```bash - # macOS / Linux - ./gradlew bootRun --args="--spring.profiles.active=dev" - - # Windows - gradlew.bat bootRun --args="--spring.profiles.active=dev,win" - ``` - -6. 最终提供以下访问地址: - 1. 网站首页:[http://localhost:8090](http://localhost:8090) - 2. Console 控制台:[http://localhost:8090/console](http://localhost:8090/console) - 3. UC 个人中心:[http://localhost:8090/uc](http://localhost:8090/uc) diff --git a/versioned_docs/version-2.12/developer-guide/core/structure.md b/versioned_docs/version-2.12/developer-guide/core/structure.md deleted file mode 100644 index cf76cd78..00000000 --- a/versioned_docs/version-2.12/developer-guide/core/structure.md +++ /dev/null @@ -1,36 +0,0 @@ ---- -title: 系统结构 -description: Halo 项目的构成 ---- - -[Halo](https://github.com/halo-dev/halo) 博客系统分为以下四个部分: - -| 项目名称 | 简介 | -| :------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------- | -| [halo](https://github.com/halo-dev/halo) | 提供整个系统的服务,采用 [Spring Boot](https://spring.io/) 开发 | -| [halo-admin](https://github.com/halo-dev/halo-admin) | 负责后台管理的渲染,采用 [Vue](https://vuejs.org/) 开发,已集成在 Halo 运行包内,无需独立部署。 | -| [halo-comment](https://github.com/halo-dev/halo-comment) | 评论插件,采用 [Vue](https://vuejs.org/) 开发,在主题中运行方式引入构建好的 `JavaScript` 文件即可 | -| [halo-theme-\*](https://github.com/halo-dev) | 主题项目集,采用 [FreeMarker](https://freemarker.apache.org/) 模板引擎编写,需要包含一些特殊的配置才能够被 halo 所使用 | - -## 自定义配置 - -> 为什么要提前讲自定义配置呢?是因为在这里让大家了解到 `Halo` 的`配置方式`,以及`配置优先级`,不至于未来运行项目的时候不知道如何优雅地修改配置。 - -`Halo` 配置目录优先级如下(从上到下优先级越来越小,上层的配置将会覆盖下层): - -- `Halo` 自定义配置 - - file:~/.halo/ - - file:~/.halo-dev/ -- `Spring Boot` 默认配置 - - file:./config/ - - file:./ - - classpath:/config/ - - classpath:/ - -> 参考: [Application Property Files](https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-external-config.html#boot-features-external-config-application-property-files) - -在开发的时候,希望大家能够在 `~/halo-dev/application.yml` 中进行添加自定义配置。当然后面也会讲到如何用`运行参数` 和 `VM options` 进行控制配置,届时可根据具体情况进行选择。 - -:::warning -开发的时候,我们不建议直接更改`项目源码`中的所包含的`配置文件`,包括 `application.yml`、`application-dev.yml`、`application-test.yml` 和 `application-user.yml`。 -::: diff --git a/versioned_docs/version-2.12/developer-guide/form-schema.md b/versioned_docs/version-2.12/developer-guide/form-schema.md deleted file mode 100644 index d7158983..00000000 --- a/versioned_docs/version-2.12/developer-guide/form-schema.md +++ /dev/null @@ -1,302 +0,0 @@ ---- -title: 表单定义 ---- - -在 Halo 2.0,在 Console 端的所有表单我们都使用了 [FormKit](https://github.com/formkit/formkit) 的方案。FormKit 不仅支持使用 Vue 组件的形式来构建表单,同时支持使用 Schema 的形式来构建。因此,我们的 [Setting](https://github.com/halo-dev/halo/blob/87ccd61ae5cd35a38324c30502d4e9c0ced41c6a/src/main/java/run/halo/app/core/extension/Setting.java#L20) 资源中的表单定义,都是使用 FormKit Schema 来定义的,最常用的场景即主题和插件的设置表单定义。当然,如果要在 Halo 2.0 的插件中使用,也可以参考 FormKit 的文档使用 Vue 组件的形式使用,但不需要在插件中引入 FormKit。 - -此文档将不会介绍 FormKit 的具体使用教程,因为我们已经很好的集成了 FormKit,并且使用方式基本无异。此文章将介绍 Halo 2.0 中表单定义的一些规范,以及额外的一些输入组件。 - -FormKit 相关文档: - -- Form Schema: [https://formkit.com/essentials/schema](https://formkit.com/essentials/schema) -- FormKit Inputs: [https://formkit.com/inputs](https://formkit.com/inputs) - -:::tip -目前不支持 FormKit Pro 中的输入组件,但 Halo 额外提供了部分输入组件,将在下面文档列出。 -::: - -## Setting 资源定义方式 - -```yaml title="settings.yaml" -apiVersion: v1alpha1 -kind: Setting -metadata: - name: foo-setting -spec: - forms: - - group: group_1 - label: 分组 1 - formSchema: - - $formkit: radio - name: color_scheme - label: 默认配色 - value: system - options: - - label: 跟随系统 - value: system - - label: 深色 - value: dark - - label: 浅色 - value: light - - - group: group_2 - label: 分组 2 - formSchema: - - $formkit: text - name: username - label: 用户名 - value: "" - - $formkit: password - name: password - label: 密码 - value: "" -``` - -:::tip -需要注意的是,FormKit Schema 本身应该是 JSON 格式的,但目前我们定义一个表单所使用的是 YAML,可能在参考 FormKit 写法时需要手动转换一下。 -::: - -字段说明: - -1. `metadata.name`:设置资源的名称,建议以 `-setting` 结尾。 -2. `spec.forms`:表单定义,可以定义多个表单,每个表单都有一个 `group` 字段,用于区分不同的表单。 -3. `spec.forms[].label`:表单的标题。 -4. `spec.forms[].formSchema`:表单的定义,使用 FormKit Schema 来定义。虽然我们使用的 YAML,但与 FormKit Schema 完全一致。 - -## 组件类型 - -除了 FormKit 官方提供的常用输入组件之外,Halo 还额外提供了一些输入组件,这些输入组件可以在 Form Schema 中使用。 - -### repeater - -#### 描述 - -一组重复的输入组件,可以用于定义一组数据,最终得到的数据为一个对象的数组,可以方便地让使用者对其进行增加、移除、排序等操作。 - -#### 参数 - -- `min`:数组最小要求数量,默认为 `0` -- `max`:数组最大容量,默认为 `Infinity`,即无限制 -- `addButton`:是否显示添加按钮 -- `addLabel`:添加按钮的文本 -- `upControl`:是否显示上移按钮 -- `downControl`:是否显示下移按钮 -- `insertControl`:是否显示插入按钮 -- `removeControl`:是否显示移除按钮 - -#### 示例 - -```yaml -- $formkit: repeater - name: socials - label: 社交账号 - value: [] - max: 5 - min: 1 - children: - - $formkit: select - name: enabled - id: enabled - label: 是否启用 - options: - - label: 是 - value: true - - label: 否 - value: false - - $formkit: text - # 在 Repeater 中进行条件判断的方式,当 enabled 为 true 时才显示 - if: "$value.enabled === true", - name: name - label: 名称 - value: "" - - $formkit: text - if: "$value.enabled === true", - name: url - label: 地址 - value: "" -``` - -:::tip -使用 `repeater` 类型时,一定要设置默认值,如果不需要默认有任何元素,可以设置为 `[]`。 -::: - -其中 `name` 和 `url` 即数组对象的属性,最终保存表单之后得到的值为以下形式: - -```json -{ - "socials": [ - { - "name": "GitHub", - "url": "https://github.com/halo-dev" - } - ] -} -``` - -UI 效果: - - - -### attachment - -#### 描述 - -附件类型的输入框,支持直接调用附件库弹框选择附件。 - -#### 参数 - -- `accepts`:文件类型,数据类型为 `string[]`。 - -#### 示例 - -```yaml -- $formkit: attachment - name: logo - label: Logo - accepts: - - "image/png" - - "video/mp4" - - "audio/*" - value: "" -``` - -### code - -#### 描述 - -代码编辑器的输入组件,集成了 [Codemirror](https://codemirror.net/)。 - -#### 参数 - -- `language`:代码语言,目前支持 `yaml` `html` `javascript` `css` `json`。 -- `height`:代码编辑器的高度。 - -#### 示例 - -```yaml -- $formkit: code - name: footer_code - label: 页脚代码注入 - value: "" - language: yaml -``` - -### menuCheckbox - -#### 描述 - -菜单复选框,用于选择系统内的导航菜单。其中选择的值为菜单资源 `metadata.name` 的集合。 - -#### 示例 - -```yaml -- $formkit: menuCheckbox - name: menus - label: 菜单 - value: [] -``` - -### menuRadio - -#### 描述 - -菜单单选框,用于选择系统内的导航菜单。其中选择的值为菜单资源 `metadata.name`。 - -#### 示例 - -```yaml -- $formkit: menuRadio - name: menu - label: 菜单 - value: "" -``` - -### postSelect - -#### 描述 - -文章选择器,用于选择系统内的文章。其中选择的值为文章资源 `metadata.name`。 - -#### 示例 - -```yaml -- $formkit: postSelect - name: post - label: 文章 - value: "" -``` - -### singlePageSelect - -#### 描述 - -单页选择器,用于选择系统内的独立页面。其中选择的值为独立页面资源 `metadata.name`。 - -#### 示例 - -```yaml -- $formkit: singlePageSelect - name: singlePage - label: 单页 - value: "" -``` - -### categorySelect - -#### 描述 - -文章分类选择器,用于选择系统内的文章分类。其中选择的值为文章分类资源 `metadata.name`。 - -#### 示例 - -```yaml -- $formkit: categorySelect - name: category - label: 分类 - value: "" -``` - -### categoryCheckbox - -#### 描述 - -文章分类复选框,用于选择系统内的文章分类。其中选择的值为文章分类资源 `metadata.name` 的集合。 - -#### 示例 - -```yaml -- $formkit: categoryCheckbox - name: categories - label: 分类 - value: [] -``` - -### tagSelect - -#### 描述 - -文章标签选择器,用于选择系统内的文章标签。其中选择的值为文章标签资源 `metadata.name`。 - -#### 示例 - -```yaml -- $formkit: tagSelect - name: tag - label: 标签 - value: "" -``` - -### tagCheckbox - -#### 描述 - -文章标签复选框,用于选择系统内的文章标签。其中选择的值为文章标签资源 `metadata.name` 的集合。 - -#### 示例 - -```yaml -- $formkit: tagCheckbox - name: tags - label: 标签 - value: [] -``` diff --git a/versioned_docs/version-2.12/developer-guide/plugin/api-reference/server/extension-client.md b/versioned_docs/version-2.12/developer-guide/plugin/api-reference/server/extension-client.md deleted file mode 100644 index 14d48d4d..00000000 --- a/versioned_docs/version-2.12/developer-guide/plugin/api-reference/server/extension-client.md +++ /dev/null @@ -1,202 +0,0 @@ ---- -title: 与自定义模型交互 -description: 了解如果通过代码的方式操作数据 ---- - -Halo 提供了两个类用于与自定义模型对象交互 `ExtensionClient` 和 `ReactiveExtensionClient`。 - -它们提供了对自定义模型对象的增删改查操作,`ExtensionClient` 是阻塞式的用于后台任务如控制器中操作数据,而 `ReactiveExtensionClient` 返回值都是 Mono 或 Flux 是反应式非阻塞的,它们由 [reactor](https://projectreactor.io/) 提供。 - -```java -public interface ReactiveExtensionClient { - - // 已经过时,建议使用 listBy 或 listAll 代替 -