diff --git a/.markdownlint.json b/.markdownlint.json index 6e13aed..b4ba820 100644 --- a/.markdownlint.json +++ b/.markdownlint.json @@ -2,7 +2,11 @@ "MD033": false, "MD024": false, "MD029": false, - "MD010": { "code_blocks": true, "spaces_per_tab": 4 }, + "MD010": { + "code_blocks": true, + "spaces_per_tab": 4 + }, "MD046": false, - "line-length": false -} + "line-length": false, + "fix": true +} \ No newline at end of file diff --git a/docs/getting-started/first-post.md b/docs/getting-started/first-post.md new file mode 100644 index 0000000..87f67a3 --- /dev/null +++ b/docs/getting-started/first-post.md @@ -0,0 +1,38 @@ +--- +title: 第一篇文章 +description: 安装完成后,如何写下第一篇文章。 +--- + +![第一篇文章](/img/first-post.gif) + +## 登录管理端 + +浏览器访问 `$HALO_EXTERNAL_URL/console/`(外部访问链接)即可进入 Halo 管理端。默认的管理员用户名为 `admin`,登录密码为安装时设置的 `HALO_SECURITY_INITIALIZER_SUPERADMINPASSWORD`,文档中的默认值为 `P@88w0rd`。 + +:::info +如果你在安装时没有设置 `HALO_SECURITY_INITIALIZER_SUPERADMINPASSWORD` 变量或忘记了设置的密码,可以参考[常见问题中的忘记密码章节](../user-guide/faq.md)进行处理。 +::: + +## 新建文章 + +Halo 安装完成后,默认初始化了一篇 `Hello Halo` 文章,接下来我们将创建并发布一篇自己的文章。 + +在 Halo 管理端,点击仪表盘页面中的 `创建文章` 快捷入口,即可进入到文章编辑页面。 + +在文章编辑器中,你可以尽情写下你想展现的内容。 + +当内容编辑完成后,点击右上角的 `发布` 按钮,给文章设置一个合适的标题和别名,同时可以设置文章所属分类、标签及其他一些高级设置。 + +确认无误后,点击弹框下方的 `发布` 按钮,我们的第一篇文章就成功发布了。 + +:::info +关于文章相关其他功能及文章各种设置项的说明,请参考《[用户指南-文章](../user-guide/posts.md)》章节 +::: + +## 查看文章 + +文章发布成功后,就可以在主题端查看到我们刚刚创建的文章了。 + +浏览器访问 `$HALO_EXTERNAL_URL` 进入站点首页,站点展示的内容及样式由当前启用的主题所决定。 + +接下来,选一款喜欢的主题,尽情体验 Halo 吧! diff --git a/docs/user-guide/attachments.md b/docs/user-guide/attachments.md new file mode 100644 index 0000000..0baf9c5 --- /dev/null +++ b/docs/user-guide/attachments.md @@ -0,0 +1,102 @@ +--- +title: 附件 +description: 附件管理相关功能说明 +--- + +## 存储策略 + +为了能够更加灵活地管理附件的存储位置,Halo 提供了存储策略的概念。 + +Halo 中支持多种类型的存储策略,你可以通过安装插件的方式对支持的存储策略类型进行扩展。一个存储策略包含了存储提供者,具体存储位置等使用该类型存储所必要的各种信息。 + +你可以点击附件页面右上角的 `存储策略` 按钮对存储策略进行管理。 + +![存储策略](/img/user-guide/attachments/attachment-policy.png) + +### 新建存储策略 + +点击存储策略列表右上方的 `+` 添加按钮即可新建一个存储策略。 + +![添加存储策略](/img/user-guide/attachments/attachment-policy-add.png) + +添加时首先需要选择一种存储策略类型,系统内置的存储策略为本地存储,图中的 `Aliyun OSS` 阿里云的 OSS 对象存储由[该插件](https://github.com/halo-sigs/plugin-alioss)提供。 + +![添加本地存储策略](/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。 +:::info +附件会被上传到当前选中的分组中,如果选择的是 `全部` 附件,则附件会被默认上传到 `未分组` 中。 +::: + +![上传附件](/img/user-guide/attachments/attachment-upload.png) + +上传附件时你需要先选择一个存储策略,后续上传的附件将会存储在选中的存储策略中。 + +你可以点击 `浏览` 或 `我的设备` 图标唤起本地文件管理器进行文件选择,也可以直接将文件拖拽到待上传文件区域中。 + +![上传多个附件](/img/user-guide/attachments/attachment-upload-multiple.png) + +如上图所示,你可以同时添加多个文件一次性完成多个附件的上传。 + +## 查看附件 + +点击附件列表中的某一个附件即可查看该附件的详细信息。 +:::info +对于存储策略类型为本地存储的附件,详细信息中的的原始链接生成规则为 `/upload/{存储策略存储路径}/{文件名称}`。 +::: + +## 删除附件 + +附件页面提供两种浏览模式,列表模式和平铺模式。 + +在平铺模式下,你可以点击附件缩略图右上角的 `√` 图标选中若干个附件,通过上方的批量操作按钮删除选中的附件。 +![批量操作附件](/img/user-guide/attachments/attachment-batch-operate.png) + +在列表模式下,你可以点击指定附件所在行后方的 `···` 更多按钮,对附件进行删除操作。 + +:::warning +附件删除后不可恢复、无法找回,请谨慎进行该操作。 +::: + +## 移动附件所在分组 + +与批量删除操作类似,你可以选中多个附件后在上方的批量操作按钮中选择 `移动` 操作,将所选附件移动到指定的分组中。 diff --git a/docs/user-guide/common.md b/docs/user-guide/common.md new file mode 100644 index 0000000..9c5cabc --- /dev/null +++ b/docs/user-guide/common.md @@ -0,0 +1,72 @@ +--- +title: 基础说明 +description: Halo 中的基本概念说明 +--- +Halo 作为一款好用又强大的开源建站工具,配合上不同的模板与插件,可以很好地帮助你构建你心中的理想站点。它可以是你公司的官方网站,可以是你的个人博客,也可以是团队共享的知识库,甚至可以是一个论坛、一个商城。 + +为了更好地发挥出 Halo 的价值,这里有一些基本概念需要你进行了解。 + +## 控制台 + +控制台是一个 Halo 站点的后台管理系统,只有具有权限的登录用户才可以正常使用控制台功能。你可以在控制台中管理站点中的文章、页面、附件等各种内容,调整站点使用的主题或各种设置。 + +:::info +控制台默认地址为 `$HALO_EXTERNAL_URL/console/`。忘记密码请参考[常见问题中的忘记密码章节](../user-guide/faq.md)进行处理。 +::: + +### 界面说明 + +![控制台界面说明](/img/user-guide/common/控制台界面说明.png) + +1. **全局搜索框**:点击或通过快捷键 `Ctrl+K` 可以呼出全局搜索框,输入关键字可以在所有文章、页面、附件、用户及设置项等所有内容中进行全局搜索; +2. **侧边导航栏**:对控制台提供的功能进行导航,点击导航栏条目会在页面右侧显示对应功能页面。安装某些插件可能会扩展导航栏条目; +3. **用户信息展示及操作**:展示当前登录用户的头像、名称及角色等信息,`···` 中提供更多用户相关操作; +4. **功能页面标题**: 当前所在的功能页面标题; +5. **功能页面操作区域**:当前所在功能页面提供的功能操作按钮; +6. **功能页面主体**: 当前所在功能页面的主体显示区域,显示内容及形式视具体页面功能而定。 + +## 文章 + +文章是 Halo 中的核心概念之一。一篇文章主要由纯文本的文章标题和富文本的文章内容构成,除此之外你还可以为文章设置所属分类、添加标签、设置封面图等。 + +在不同的站点类型不同的应用场景中,文章的实际含义也会有所区别,它可以代表一则公司新闻、一篇博客或者产品文档中的某一章节。 + +## 页面 + +Halo 中存在两种类型的页面,`功能页面` 和 `自定义页面`。 + +### 功能页面 + +功能页面通常由各个插件提供,页面功能及在控制台呈现的内容由具体提供该页面的插件决定。 + +### 自定义页面 + +自定义页面与文章类似,同样包含页面标题和富文本形式的页面内容。与文章不同的是自定义页面无法设置所属分类和标签信息,一般用于站点中单一展示功能的页面,例如常见的站点关于页面、联系我们页面等。 + +## 分类 + +通过分类可以更好的组织管理文章。分类之间存在层级关系,一个父分类下可包含多个子分类。一篇文章可以同时属于多个分类。 + +## 标签 + +标签可以用于为文章添加特定标记,与分类不同的是标签之间没有层级关系。一篇文章也可以同时添加多个标签。 + +## 附件 + +由用户上传的,供文章、主题设置等各个地方引用的文件。多用于文章配图、主题配图、用户头像等场景。 + +## 主题 + +包含了各种站点页面模板的资源包。用户访问 Halo 站点浏览到的内容及样式,由 Halo 管理端所配置使用的主题所决定。 + +:::info +当前 Halo 支持的主题可在[Awesome Halo](https://github.com/halo-sigs/awesome-halo)仓库查看。 +::: + +## 插件 + +用于扩展 Halo 功能的软件包。插件独立于 Halo 核心应用,可以单独安装、升级、卸载。 + +:::info +当前 Halo 支持的插件可在[Awesome Halo](https://github.com/halo-sigs/awesome-halo)仓库查看。 +::: diff --git a/docs/user-guide/faq.md b/docs/user-guide/faq.md index 9b5eddd..22a376c 100644 --- a/docs/user-guide/faq.md +++ b/docs/user-guide/faq.md @@ -5,13 +5,7 @@ description: 使用上的常见问题 ### Halo 是什么? -**Halo** [ˈheɪloʊ],一款现代化的开源博客/CMS系统,值得一试。 - -### 没有提供 SQL 脚本,是否需要手动建表? - -得益于我们使用的 ORM 框架,Halo 在首次启动的时候会自动根据实体类创建表结构,无需通过 SQL 脚本自行创建,也不会提供所谓的 SQL 脚本。所以仅需配置好数据库连接地址和用户名密码即可。注意,H2 无需手动创建数据库,MySQL 需要。 - -详情可见:[配置参考](../getting-started/config#数据库) +**Halo** [ˈheɪloʊ],是一款好用又强大的[开源建站工具](https://github.com/halo-dev/halo),配合上不同的模板与插件,可以很好地帮助你构建你心中的理想站点。它可以是你公司的官方网站,可以是你的个人博客,也可以是团队共享的知识库,甚至可以是一个论坛、一个商城。 ### 为什么百度无法搜索到我的站点? @@ -23,16 +17,6 @@ description: 使用上的常见问题 - 支持自定义文章关键字和描述 - 支持自定义站点关键字以及站点描述 -### 忘记了管理员密码,如何重置? - -目前在登录页面含有隐藏的 `找回密码` 链接,点击即可进入找回密码页面,具体可参考以下步骤: - -1. 在登录页面按下键盘快捷键(Windows / Linux:`Shift + Alt + H`,macOS:`Shift + Command + H`)即可显示 `找回密码` 链接。 -2. 按照表单提示输入用户名和邮箱,点击 `获取` 按钮即可发送带有验证码的邮件。 -3. 按照表单填写验证码和新密码,点击重置密码即可。 - -> 需要注意的是,第 2 步中的获取验证码需要事先配置了 SMTP 发信设置,否则无法发送验证码。但你可以登录服务器查看 Halo 运行日志,搜索 `Got reset password code` 关键字即可获取到验证码。 - ### 附件上传提示 `413 Request Entity Too Large` 如何解决? 这可能是由于 Nginx 的上传大小限制所导致的。可以在 Nginx 的配置文件下的 server 节点加入 `client_max_body_size 1024m;` 即可解决,如果 1024m 还不够,请自行断定,详细配置参考如下: @@ -45,10 +29,6 @@ server { } ``` -### 开启了两步验证但丢失了验证设备或 APP,如何取消两步验证? - -可以参考 [忘记了管理员密码,如何重置?](#忘记了管理员密码如何重置) 重置密码,完成重置密码之后即可清除两步验证。 - ### 网站加载速度慢,是什么问题导致的? 导致网站加载速度慢的原因有很多,建议打开浏览器的 Developer Tools 查看具体是哪个请求时间过长,然后进行针对性的优化。这里提供一些可能的原因: @@ -76,26 +56,38 @@ server { ```bash # 第一个 Halo 容器 - docker run -it -d --name halo1 -p 8090:8090 -v ~/.halo.1:/root/.halo --restart=unless-stopped halohub/halo:latest + docker run \ + -it -d \ + --name halo-next-1 \ + -p 8090:8090 \ + -v ~/.halo2.1:/root/.halo2 \ + -e HALO_EXTERNAL_URL=http://localhost:8090/ \ + -e HALO_SECURITY_INITIALIZER_SUPERADMINPASSWORD=P@88w0rd \ + halohub/halo-dev:latest # 第二个 Halo 容器 - docker run -it -d --name halo2 -p 8091:8090 -v ~/.halo.2:/root/.halo --restart=unless-stopped halohub/halo:latest + docker run \ + -it -d \ + --name halo-next-2 \ + -p 8090:8090 \ + -v ~/.halo2.2:/root/.halo2 \ + -e HALO_EXTERNAL_URL=http://localhost:8090/ \ + -e HALO_SECURITY_INITIALIZER_SUPERADMINPASSWORD=P@88w0rd \ + halohub/halo-dev:latest ``` 更多 Docker 相关的教程请参考:[使用 Docker 部署 Halo](../getting-started/install/docker.md) ### 如何查看运行日志? -1. 登录到服务器,查看工作目录下的 `logs/spring.log`。 -2. 在 Halo 后台进入开发者选项(点击左上角 `Halo Dashboard` 10 次),选择 `实时日志` 界面。 - -### SMTP 发信设置配置正确,但是发信失败,如何解决? +使用 docker logs 命令进行查看。 -可能是部分厂商不允许使用密码作为客户端登录的凭证,一般会提供类似 `授权码` 的设置,将 `授权码` 当做密码在 Halo 后台设置即可。如还有其他类型的原因,欢迎向我们提交 issue:[https://github.com/halo-dev/halo/issues/new/choose](https://github.com/halo-dev/halo/issues/new/choose) - -### 网站配置了全站 CDN 导致后台部分功能异常,如何解决? - -可能是 CDN 厂商默认关闭了 `参数跟随` 选项,导致部分接口参数没有正确添加到回源请求上。你可以在 CDN 控制台查找此选项并打开。或者设置路径过滤,过滤掉 `/api/admin`,让接口请求始终访问回源地址。 +```bash +# '-f' 滚动更新日志 +# '-n 200' 从倒数第200行开始查看 +# 更多帮助可以查看 'docker logs --help' +docker logs -f halo_next -n 200 +``` ### 前台样式丢失,如何解决? diff --git a/docs/user-guide/pages.md b/docs/user-guide/pages.md new file mode 100644 index 0000000..bf0e8bf --- /dev/null +++ b/docs/user-guide/pages.md @@ -0,0 +1,41 @@ +--- +title: 页面 +description: 页面管理相关功能说明 +--- + +Halo 中存在两种类型的页面,`功能页面` 和 `自定义页面`。 + +### 功能页面 + +功能页面通常由各个插件提供,页面功能及在控制台呈现的内容由具体提供该页面的插件决定。 + +例如[链接插件](https://github.com/halo-sigs/plugin-links)便实现了一个站点链接管理功能,用户可以通过该插件更加方便地管理与站点相关的友情链接。安装该插件后,在功能页面会出现列表会出现如下条目。 + +![链接功能页面](/img/user-guide/pages/page-links.png) + +点击这个条目即可进入到链接插件提供的配置管理页面。 + +![链接功能页面](/img/user-guide/pages/page-links-edit.png) + +你可以在这个页面中管理链接分组和链接条目。链接信息维护完成后,通过 `$HALO_EXTERNAL_URL/links/` 便可访问到对应的页面。 + +:::info +对于 `links` 页面的访问需要主题端支持,即安装使用的主题需要有对应的 `links.html` 模板,且在模板中正确处理链接插件提供的数据。 +::: + +### 自定义页面 + +自定义页面与文章类似,同样包含页面标题和富文本形式的页面内容。与文章不同的是自定义页面无法设置所属分类和标签信息,一般用于站点中单一展示功能的页面,例如常见的站点关于页面、联系我们页面等。 + +自定义页面的访问链接为 `$HALO_EXTERNAL_URL/{slug}/` 其中 `slug` 为自定义页面的别名。 + +对于如下的关于页面,便可以通过 `$HALO_EXTERNAL_URL/page/` 地址进行访问。 +![链接功能页面](/img/user-guide/pages/page-about.png) + +:::info +自定义页面默认使用主题端的 `page.html` 模板进行渲染,如果主题中提供了针对自定义页面的其他模板,用户可以通过修改自定义页面高级设置中的自定义模板设置进行使用。 +::: + +#### 自定义页面操作 + +对于自定义页面的新建、设置、发布及删除等操作,与文章操作基本一致,具体操作请参考[《用户指南-文章》](./posts.md)章节,此处不再赘述。 diff --git a/docs/user-guide/plugins.md b/docs/user-guide/plugins.md new file mode 100644 index 0000000..aee66f9 --- /dev/null +++ b/docs/user-guide/plugins.md @@ -0,0 +1,47 @@ +--- +title: 插件 +description: 插件管理相关功能说明 +--- + +插件时用于扩展 Halo 功能的软件包。插件独立于 Halo 核心应用,可以单独安装、升级、卸载。 + +:::info +当前 Halo 支持的插件可在[Awesome Halo](https://github.com/halo-sigs/awesome-halo)仓库查看。 +::: + +本文档仅对插件的基本管理功能进行说明,关于插件的详细使用说明请参考对应插件的文档。 + +## 安装插件 + +点击插件页面右上角的 `安装` 按钮,在弹出的文件上传对话框中上传插件文件即可完成插件安装。 + +![安装插件](/img/user-guide/plugins/plugin-install.png) + +插件安装成功后,便会出现在已安装主题列表中。你可以点击某个插件进入到插件详情页面。 + +## 插件设置 + +点击插件列表中的某个插件进入插件详情页面。与主题设置类似,插件详情页面默认显示出了当前插件的详细信息,在详细信息标签页后方的标签页,即为插件提供的相关设置。不同的插件提供的设置项各不相同,设置项的详细说明请参考对应插件的文档。 + +![插件设置](/img/user-guide/plugins/plugin-setting.png) + +以 Unsplash 插件为例,该提供仅在基本设置组中提供了 `Access Key` 一项配置,用于调用 Unsplash 接口。 + +## 启用/禁用插件 + +点击插件列表或插件详情页中的启用/禁用开关,即可切换插件的启用禁用状态。 + +![插件启用/禁用](/img/user-guide/plugins/plugin-switch.png) + +## 升级插件 + +点击插件列表指定插件所在行后方的 `···` 更多操作按钮,选择其中的 `升级` 选项即可上传新的插件文件对当前插件进行升级。 + +## 卸载插件 + +点击插件列表指定插件所在行后方的 `···` 更多操作按钮,选择其中的 `卸载` 或 `卸载并删除配置` 选项即可对当前插件进行卸载。 +![卸载主题](/img/user-guide/themes/theme-uninstall.png) + +:::info +仅卸载插件时插件的配置信息会进行保留,当重新安装插件后还可以使用之前已保存的配置。 +::: diff --git a/docs/user-guide/posts.md b/docs/user-guide/posts.md new file mode 100644 index 0000000..f013ae3 --- /dev/null +++ b/docs/user-guide/posts.md @@ -0,0 +1,146 @@ +--- +title: 文章 +description: 文章管理相关功能说明 +--- +## 新建文章 + +目前你可以通过以下两种方式新建一篇文章: + +1. 点击仪表盘快捷访问组件中的创建文章 +:::info +仪表盘中需要存在快捷访问组件(默认存在)。关于仪表盘组件配置,请参考《用户指南-仪表盘》章节。 +::: +2. 通过左侧导航栏进入文章页面,点击右上角的新建按钮 + +进入到如下页面后,你就可以开始编辑自己的文章内容了: + +![文章编辑界面说明](/img/user-guide/posts/post-edit.png) + +在文章编辑器中输入你想展现的内容,你可以通过编辑器上方的工具栏调整指定内容的格式或者插入图片、音视频等各类附件。编辑器还提供了各种快捷指令,通过输入 `/` 字符便可以快速选择常用的输入类型,不需要操作鼠标便可以轻松完成文章排版。 + +:::info +编辑器详细使用说明请参考[《用户指南-编辑器》](./posts.md) +::: + +在页面右侧你可以看到文章的大纲结构及字词数等详细信息。一切满意之后,你可以选择暂存这篇文章的草稿或直接将文章进行发布。 + +:::info +点击保存按钮将只保存文章内容的修改,不会将新修改的内容进行发布。对于未发布的文章内容,只有授权用户可以在控制台进行查看,不会出现在站点内容中; + +点击发布按钮将直接发布修改后的内容。对于已发布的文章,默认可以通过站点地址进行公开访问,用户可以在文章高级设置中修改可见性。 +::: + +## 文章设置 + +当你想修改一篇文章的标题、所属分类等信息时,你可以通过以下方式进行操作: + +1. 点击文章列表指定文章所在行的 `···` 更多操作按钮,选择设置; +2. 在文章列表点击指定文章的标题进入文章编辑页面,点击页面右上角的设置按钮。 + +![文章编辑界面说明](/img/user-guide/posts/post-setting.png) + +### 设置说明 + +- **标题**:用于在主题端显示的文章标题; +- **别名**:多用于文章 URL 路径定位,一般不会出现在页面中; +- **分类目录**:文章所属分类,方便用户区分文章类型进行针对性浏览,一篇文章可以属于多个分类; +- **标签**:文章添加的标签,方便用户更进一步标识文章信息,一篇文章可以添加多个标签; +- **自动生成摘要**:文章摘要是对文章内容的概括性描述; + - **是**: 系统根据文章内容,自动生成一段摘要文本; + - **否**: 用户自行输入文章摘要文本。 +- **允许评论**:是否允许用户在主题端浏览文章时对该文章发起评论; +- **是否置顶**:文章是否排序在文章列表的最顶部; +- **可见性**:访问站点主题端时,哪些人可以看到这篇文章; + - **公开**:所有用户均可看到这篇文章,包括未登录用户; + - **内部成员可访问**:仅登录用户可以看到这篇文章; + - **私有**:仅文章作者可以看到这篇文章。 +- **发表时间**:手动指定文章的发表时间,未指定时以实际发布时间为准; +- **自定义模板**:主题端使用哪一个文章模板进行页面渲染; +- **封面图**:用户在主题端显示的文章封面图,需要主题支持该功能。 + +## 发布及取消发布 + +对于已发布的文章,默认可以通过站点地址进行公开访问,用户可以在文章高级设置中修改可见性。 + +你可以在上文介绍的文章设置对话框中,修改文章的发布状态。 + +在文章设置对话框中,若文章当前处于已发布状态,下方会显示取消发布按钮;若文章处于未发布状态,下方怎会显示发布按钮。 + +## 删除文章 + +当你不再需要一篇文章时,你可以通过以下方式删除该文章: + +1. 点击文章列表指定文章所在行的 `···` 更多操作按钮,选择删除; +2. 勾选文章列表中的全选/多选框,选中一篇或多篇文章进行批量删除。 + +文章删除后会进入回收站中,点击右上角的回收站按钮进入回收站。在回收站中,你可以永久删除或恢复指定的文章。 + +:::warning +文章永久删除后将从数据库删除该记录,后续无法再恢复找回。 +::: + +## 文章分类管理 + +通过分类可以更好的组织管理文章。分类之间存在层级关系,一个父分类下可包含多个子分类。一篇文章可以同时属于多个分类。 + +在文章管理页面,点击页面右上角的 `分类` 按钮即可进入分类管理页面。 + +### 新建文章分类 + +点击分类管理页面右上角的 `新建` 按钮即可新建一个分类。 + +![文章分类编辑界面说明](/img/user-guide/posts/category-create.png) + +#### 设置说明 + +- **名称**:用于在主题端显示的分类名称; +- **别名**:用于分类 URL 路径定位。默认路径规则为 `$HALO_EXTERNAL_URL/categories/{slug}`,其中 `slug` 为分类别名,访问该地址即可浏览该分类下的所有文章。分类页路由前缀可[在设置中修改](./settings#主题路由设置); +- **自定义模板**:主题端使用哪一个文章分类模板进行页面渲染; +- **封面图**:用户在主题端显示的文章分类封面图,需要主题支持该功能; +- **描述**:关于改文章分类的更多描述信息。 + +### 调整分类层级 + +分类之间存在层级关系,一个父分类下可包含多个子分类。 + +你可以按住分类前的图标,通过拖拽来调整分类间的层级关系和顺序。 + +![移动文章分类](/img/user-guide/posts/category-move.gif) + +### 修改删除分类 + +点击指定分类所在行后方的 `···` 更多操作按钮,可以对文章分类进行修改或删除。 +:::warning +文章分类删除后,对应文章的关联将被解除,且该操作不可恢复,请谨慎进行该操作。 +::: + +## 文章标签管理 + +标签可以用于为文章添加特定标记,与分类不同的是标签之间没有层级关系。一篇文章也可以同时添加多个标签。 + +### 新建文章标签 + +点击分类管理页面右上角的 `新建` 按钮即可新建一个分类。 + +![标签编辑界面说明](/img/user-guide/posts/tag-create.png) + +#### 设置说明 + +- **名称**:用于在主题端显示的标签名称; +- **别名**:用于标签 URL 路径定位。默认路径规则为 `$HALO_EXTERNAL_URL/tags/{slug}`,其中 `slug` 为标签别名,访问该地址即可浏览具有该标签的所有文章。标签页路由前缀可[在设置中修改](./settings#主题路由设置); +- **颜色**:用于在控制台及主题端显示的标签颜色,主题端显示颜色需要主题支持该功能; +- **封面图**:用户在主题端显示的标签封面图,需要主题支持该功能; + +### 修改删除标签 + +标签页面提供两种浏览模式,列表模式和平铺模式。点击右上方红框区域对应模式的切换按钮即可进行切换。 + +![标签浏览](/img/user-guide/posts/tag-list.png) + +在列表模式下,点击指定标签所在行后方的 `···` 更多操作按钮,可以对文章标签进行修改或删除。 + +在平铺模式下,直接点击对应的标签,即可对文章标签进行修改。 + +:::warning +文章标签删除后,对应文章的关联将被解除,且该操作不可恢复,请谨慎进行该操作。 +::: diff --git a/docs/user-guide/settings.md b/docs/user-guide/settings.md new file mode 100644 index 0000000..1e2f662 --- /dev/null +++ b/docs/user-guide/settings.md @@ -0,0 +1,72 @@ +--- +title: 站点设置 +description: 站点设置相关功能说明 +--- + +## 基本设置 + +Halo 提供了以下站点基本信息设置: + +- **站点标题** +- **站点副标题** +- **站点 Logo 图片** +- **站点 Favion 图片** + +在控制台设置完成后,主题端可以通过特定的表达式获取到这些信息并且在对应的位置进行展示。具体是否读取使用这些配置、在哪些位置显示这些信息由使用的不同主题而决定。 + +以 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="{用户的配置关键词}" />`; +- **站点描述**:配置后会在所有页面 HTML 源码的 head 部分添加 ` content="{用户的配置描述}" />`。 + +## 评论设置 + +针对站点的评论功能,Halo 提供了以下设置项: + +- **启用评论**:全局评论功能开关配置,修改后影响所有文章、页面的评论功能; +- **新评论审核**:新增的评论是否需要在控制台进行审核,审核通过后其他访问者才能看到该条评论; +- **仅允许注册用户评论**:开启后只有登录用户才能添加评论,关闭后匿名(未登录)访问者也可以添加评论。 + +## 主题路由设置 + +针对访问站点各种类型页面的 URL 生成规则,Halo 提供了以下主题路由设置项: + +- **分类页路由前缀**:定位到指定文章分类页面的 URL 规则前缀,默认为 `/categories/{文章分类别名}`,修改后为 `/{用户定义的分类页路由前缀/{文章分类别名}`; +- **标签页路由前缀**:定位到指定文章标签页面的 URL 规则前缀,默认为 `/tags/{文章标签别名}`,修改后为 `/{用户定义的标签页路由前缀/{文章标签别名}`; +- **归档页路由前缀**:定位到文章归档页面的 URL 规则前缀,默认为 `/archives/{年}/{月}` 等路径,修改后为 `/{用户定义的归档页路由前缀/{年}/{月}` 等; +- **文章详情页访问规则**:定位到具体文章详情页面的 URL 规则前缀,默认为 `/archives/{文章别名}` ,用户可从以下路径规则进行选择: + - `/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 脚本扩展主题端功能。 diff --git a/docs/user-guide/themes.md b/docs/user-guide/themes.md new file mode 100644 index 0000000..59e55d0 --- /dev/null +++ b/docs/user-guide/themes.md @@ -0,0 +1,68 @@ +--- +title: 主题 +description: 主题管理相关功能说明 +--- + +主题包含了各种站点页面模板的资源包。用户访问 Halo 站点浏览到的内容及样式,由 Halo 管理端所配置使用的主题所决定。 +:::info +当前 Halo 支持的主题可在[Awesome Halo](https://github.com/halo-sigs/awesome-halo)仓库查看。 +::: + +## 安装主题 + +点击主题页面右上方的 `切换主题` 按钮即可弹出主题管理对话框。 + +目前 Halo 提供了两种主题安装方式: + +1. 通过控制台上传安装 +2. 将主题文件夹拷贝到服务器上的 `{Halo 工作目录}/themes/` 目录下等待 Halo 自动扫描 + +针对第一种安装方式,你可以点击主题管理对话框下方的 `安装主题` 按钮,在弹出的文件上传对话框中上传主题压缩包。 + +![安装主题](/img/user-guide/themes/theme-install.png) + +主题安装成功后,便会出现在已安装主题列表中。 + +针对第二种方式,你需要手动将解压后的主题文件夹拷贝到服务器上的指定目录下,如果主题校验通过,你便可以在主题列表的 `未安装` 标签页中看到该主题。 + +之后点击主题所在行后方的 `安装` 按钮,即可完成该主题的安装。 + +![后台安装主题](/img/user-guide/themes/theme-install-alt.png) + +## 切换主题 + +同样点击主题页面右上方的 `切换主题` 按钮弹出主题管理对话框。 + +在弹框中点击选中要切换的目标主题,此时页面返回到主题详情页,点击右上角的 `启用` 按钮即可将当前主题切换为实际使用的主题。 +:::info +仅切换主题不点击右上角的 `启用` 按钮时,不会影响当前实际使用的主题。 +::: + +## 修改主题设置 + +主题页面默认显示出了当前主题的详细信息,在详细信息标签页后方的标签页,即为主题提供的相关设置。不同的主题提供的设置项各不相同,设置项的详细说明请参考对应主题的文档。 + +![主题设置](/img/user-guide/themes/theme-setting.png) + +以 Halo 的默认主题 Earth 为例,该主题提供了布局、样式、侧边栏、页脚及备案设置共五组配置项。 + +## 预览主题 + +通过预览功能,你可以在不更改当前启用主题的情况下查看不同主题的效果。点击主题详情页面右上角的 `预览` 按钮预览当前主题,或者进入已安装主题列表,通过后方 `···` 的更多操作中的预览选项预览指定的主题。 + +![主题设置](/img/user-guide/themes/theme-preview.png) + +在主题预览页面你可以切换不同分辨率的设备,模拟主题在不同终端下的显示效果。也可以通过右上角的功能菜单切换预览的主题,或者调整当前主题的设置,查看不同设置下主题所展现的区别。 + +## 更新主题 + +点击主题详情页右上角的 `···` 更多操作按钮,选择其中的 `更新` 选项即可上传新的主题包对当前主题进行更新。 + +## 重载主题配置 + +如果当前主题提供的设置象发生变化,可以通过 `···` 更多中的 `重载主题配置` 选项对主体配置项进行更新。 + +## 卸载主题 + +进入已安装主题列表,通过后方 `···` 的更多操作中的卸载选项即可卸载指定的主题。 +![卸载主题](/img/user-guide/themes/theme-uninstall.png) diff --git a/docs/user-guide/users.md b/docs/user-guide/users.md new file mode 100644 index 0000000..3d463f5 --- /dev/null +++ b/docs/user-guide/users.md @@ -0,0 +1,94 @@ +--- +title: 用户与权限 +description: 用户管理、权限配置相关功能说明 +--- + +## 概览 + +Halo 2.0 版本采用了基于角色的权限控制(RBAC)体系。不同于之前 1.x 版本的单用户设计,现在你可以创建多个用户并且通过赋予不同用户不同角色的方式,为他们分配不同的权限。 + +Halo 中的权限控制体系示例: + +![权限控制体系示例](/img/user-guide/user-permission.png) + +## 用户 + +点击左侧导航栏的 `用户` 条目进入用户管理页面。 + +### 创建用户 + +在用户管理页面,点击右上角的 `添加用户` 按钮即可弹出新建用户对话框。 + +![创建用户](/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 +删除角色后,分配了该角色的用户会丧失对应的权限,影响用户使用。此操作不可恢复。 +::: diff --git a/sidebars.js b/sidebars.js index c040e94..45dbf1e 100644 --- a/sidebars.js +++ b/sidebars.js @@ -37,20 +37,29 @@ module.exports = { "getting-started/install/docker-compose", ], }, + "getting-started/first-post", // "getting-started/config", // "getting-started/upgrade", // "getting-started/downloads", ], }, - // { - // type: "category", - // label: "用户指南", - // items: [ - // "user-guide/backup-migration", - // "user-guide/markdown", - // "user-guide/faq", - // ], - // }, + { + type: "category", + label: "用户指南", + link: { + type: "generated-index", + }, + items: [ + "user-guide/common", + "user-guide/posts", + "user-guide/pages", + "user-guide/attachments", + "user-guide/themes", + "user-guide/plugins", + "user-guide/users", + "user-guide/settings", + ], + }, { type: "category", label: "开发者指南", diff --git a/static/img/TBD.png b/static/img/TBD.png new file mode 100644 index 0000000..183fe06 Binary files /dev/null and b/static/img/TBD.png differ diff --git a/static/img/first-post.gif b/static/img/first-post.gif new file mode 100644 index 0000000..78cb5a0 Binary files /dev/null and b/static/img/first-post.gif differ diff --git a/static/img/user-guide/attachments/attachment-batch-operate.png b/static/img/user-guide/attachments/attachment-batch-operate.png new file mode 100644 index 0000000..fbdec6d Binary files /dev/null and b/static/img/user-guide/attachments/attachment-batch-operate.png differ diff --git a/static/img/user-guide/attachments/attachment-group-add.png b/static/img/user-guide/attachments/attachment-group-add.png new file mode 100644 index 0000000..87bbd2e Binary files /dev/null and b/static/img/user-guide/attachments/attachment-group-add.png differ diff --git a/static/img/user-guide/attachments/attachment-group-delete.png b/static/img/user-guide/attachments/attachment-group-delete.png new file mode 100644 index 0000000..96d9506 Binary files /dev/null and b/static/img/user-guide/attachments/attachment-group-delete.png differ diff --git a/static/img/user-guide/attachments/attachment-policy-add-local.png b/static/img/user-guide/attachments/attachment-policy-add-local.png new file mode 100644 index 0000000..f33128b Binary files /dev/null and b/static/img/user-guide/attachments/attachment-policy-add-local.png differ diff --git a/static/img/user-guide/attachments/attachment-policy-add.png b/static/img/user-guide/attachments/attachment-policy-add.png new file mode 100644 index 0000000..f4d95f9 Binary files /dev/null and b/static/img/user-guide/attachments/attachment-policy-add.png differ diff --git a/static/img/user-guide/attachments/attachment-policy-operate.png b/static/img/user-guide/attachments/attachment-policy-operate.png new file mode 100644 index 0000000..afb42a1 Binary files /dev/null and b/static/img/user-guide/attachments/attachment-policy-operate.png differ diff --git a/static/img/user-guide/attachments/attachment-policy.png b/static/img/user-guide/attachments/attachment-policy.png new file mode 100644 index 0000000..02e1b1b Binary files /dev/null and b/static/img/user-guide/attachments/attachment-policy.png differ diff --git a/static/img/user-guide/attachments/attachment-upload-multiple.png b/static/img/user-guide/attachments/attachment-upload-multiple.png new file mode 100644 index 0000000..d58b2ae Binary files /dev/null and b/static/img/user-guide/attachments/attachment-upload-multiple.png differ diff --git a/static/img/user-guide/attachments/attachment-upload.png b/static/img/user-guide/attachments/attachment-upload.png new file mode 100644 index 0000000..c4a24bb Binary files /dev/null and b/static/img/user-guide/attachments/attachment-upload.png differ diff --git a/static/img/user-guide/common/控制台界面说明.png b/static/img/user-guide/common/控制台界面说明.png new file mode 100644 index 0000000..bad26fd Binary files /dev/null and b/static/img/user-guide/common/控制台界面说明.png differ diff --git a/static/img/user-guide/pages/page-about.png b/static/img/user-guide/pages/page-about.png new file mode 100644 index 0000000..f698be8 Binary files /dev/null and b/static/img/user-guide/pages/page-about.png differ diff --git a/static/img/user-guide/pages/page-links-edit.png b/static/img/user-guide/pages/page-links-edit.png new file mode 100644 index 0000000..4811698 Binary files /dev/null and b/static/img/user-guide/pages/page-links-edit.png differ diff --git a/static/img/user-guide/pages/page-links.png b/static/img/user-guide/pages/page-links.png new file mode 100644 index 0000000..115a8bf Binary files /dev/null and b/static/img/user-guide/pages/page-links.png differ diff --git a/static/img/user-guide/plugins/plugin-install.png b/static/img/user-guide/plugins/plugin-install.png new file mode 100644 index 0000000..4b1734b Binary files /dev/null and b/static/img/user-guide/plugins/plugin-install.png differ diff --git a/static/img/user-guide/plugins/plugin-setting.png b/static/img/user-guide/plugins/plugin-setting.png new file mode 100644 index 0000000..03a0019 Binary files /dev/null and b/static/img/user-guide/plugins/plugin-setting.png differ diff --git a/static/img/user-guide/plugins/plugin-switch.png b/static/img/user-guide/plugins/plugin-switch.png new file mode 100644 index 0000000..892dbc0 Binary files /dev/null and b/static/img/user-guide/plugins/plugin-switch.png differ diff --git a/static/img/user-guide/posts/category-create.png b/static/img/user-guide/posts/category-create.png new file mode 100644 index 0000000..71acca5 Binary files /dev/null and b/static/img/user-guide/posts/category-create.png differ diff --git a/static/img/user-guide/posts/category-move.gif b/static/img/user-guide/posts/category-move.gif new file mode 100644 index 0000000..0b81224 Binary files /dev/null and b/static/img/user-guide/posts/category-move.gif differ diff --git a/static/img/user-guide/posts/post-edit.png b/static/img/user-guide/posts/post-edit.png new file mode 100644 index 0000000..171bc41 Binary files /dev/null and b/static/img/user-guide/posts/post-edit.png differ diff --git a/static/img/user-guide/posts/post-setting.png b/static/img/user-guide/posts/post-setting.png new file mode 100644 index 0000000..ba1a497 Binary files /dev/null and b/static/img/user-guide/posts/post-setting.png differ diff --git a/static/img/user-guide/posts/tag-create.png b/static/img/user-guide/posts/tag-create.png new file mode 100644 index 0000000..a76d450 Binary files /dev/null and b/static/img/user-guide/posts/tag-create.png differ diff --git a/static/img/user-guide/posts/tag-list.png b/static/img/user-guide/posts/tag-list.png new file mode 100644 index 0000000..013b8ca Binary files /dev/null and b/static/img/user-guide/posts/tag-list.png differ diff --git a/static/img/user-guide/settings/setting-basic.png b/static/img/user-guide/settings/setting-basic.png new file mode 100644 index 0000000..8ff8c48 Binary files /dev/null and b/static/img/user-guide/settings/setting-basic.png differ diff --git a/static/img/user-guide/themes/theme-install-alt.png b/static/img/user-guide/themes/theme-install-alt.png new file mode 100644 index 0000000..53a921d Binary files /dev/null and b/static/img/user-guide/themes/theme-install-alt.png differ diff --git a/static/img/user-guide/themes/theme-install.png b/static/img/user-guide/themes/theme-install.png new file mode 100644 index 0000000..7f0a75c Binary files /dev/null and b/static/img/user-guide/themes/theme-install.png differ diff --git a/static/img/user-guide/themes/theme-preview.png b/static/img/user-guide/themes/theme-preview.png new file mode 100644 index 0000000..adcd6ad Binary files /dev/null and b/static/img/user-guide/themes/theme-preview.png differ diff --git a/static/img/user-guide/themes/theme-setting.png b/static/img/user-guide/themes/theme-setting.png new file mode 100644 index 0000000..bb876f4 Binary files /dev/null and b/static/img/user-guide/themes/theme-setting.png differ diff --git a/static/img/user-guide/themes/theme-uninstall.png b/static/img/user-guide/themes/theme-uninstall.png new file mode 100644 index 0000000..ff2bc4d Binary files /dev/null and b/static/img/user-guide/themes/theme-uninstall.png differ diff --git a/static/img/user-guide/user-permission.png b/static/img/user-guide/user-permission.png new file mode 100644 index 0000000..0f686b5 Binary files /dev/null and b/static/img/user-guide/user-permission.png differ diff --git a/static/img/user-guide/users/role-fork.png b/static/img/user-guide/users/role-fork.png new file mode 100644 index 0000000..ce7db00 Binary files /dev/null and b/static/img/user-guide/users/role-fork.png differ diff --git a/static/img/user-guide/users/role-management.png b/static/img/user-guide/users/role-management.png new file mode 100644 index 0000000..a608cf1 Binary files /dev/null and b/static/img/user-guide/users/role-management.png differ diff --git a/static/img/user-guide/users/user-operate.png b/static/img/user-guide/users/user-operate.png new file mode 100644 index 0000000..3b07822 Binary files /dev/null and b/static/img/user-guide/users/user-operate.png differ diff --git a/static/img/user-guide/users/user-setting.png b/static/img/user-guide/users/user-setting.png new file mode 100644 index 0000000..203c3c0 Binary files /dev/null and b/static/img/user-guide/users/user-setting.png differ