认证页面
Halo 2.20 重构了登录、注册等页面,现在支持通过主题自定义认证相关的页面。
考虑到登录、注册页面的复杂性,我们通常建议仅自定义页面样式,或者根据系统中提供的代码片段自行组合,如果要完全自行实现这些页面,请务必进行完整的流程测试,这可能因为代码逻辑错误导致无法登录。
这篇文档只会讲解自定义登录、注册等页面的原理,以及一些自定义的场景,建议在进行代码编写的时候结合系统自带的模板源码,源码位置:application/src/main/resources/templates
原理讲解
要实现自定义登录、注册等模板,只需要在主题的 templates 目录中新建与 Halo 源码中 application/src/main/resources/templates 同名的模板文件即可。下面列出认证流程相关的 HTML 模板;国际化资源等其他文件请以源码目录为准:
假设我们要在主题覆盖登录页面(login.html),那么只需要在主题的 templates 目录中新建一个 login.html 即可,意味着只要主题提供上方的目录以及对应的模板文件,那么就会优先使用主题的模板。
自定义场景
自定义布局(推荐)
覆盖默认的布局页面,以实现和主题融合。
Halo 系统自带的布局模板为 gateway_fragments/layout.html,所以我们在主题的 templates 目录中新建一个相同路径的模板即可,下面我们以 Halo 默认主题 Earth 为例:
需要注意:
th:fragment必须为layout (title,head,body)- 必须引入
gateway_fragments/common::basicStaticResources,其中包含基本样式和逻辑脚本
以下是实现效果:


自定义样式
使用自带的模板和逻辑,但完全由主题编写样式,这种场景适用于需要登录、注册页面完全和主题样式一致的场景。
因为 Halo 系统中的模板是在 gateway_fragments/layout.html 中引入样式文件的,所以我们仍然覆盖这个文件即可,以下是示例:
这样就会只渲染页面结构,但是不包含任何样式,开发者可以自行通过浏览器审查元素,找到对应的 CSS 选择器,然后自行编写样式文件。Halo 系统自带的样式文件为 application/src/main/resources/static/styles/main.css。