Sorry, your browser cannot access this site
This page requires browser support (enable) JavaScript
Learn more >

官方文档halo主题开发指南:Halo Documents侧边栏的开发者指南-主题开发(文档写得真好!)

基础

halo 博客深度定制与美化教程 (bestzuo.cn)

浏览器 F12 定位目标样式

F12,然后``ctrl+shift+c`之后就可以

  • 鼠标选择(指:鼠标悬停)界面元素定位html代码(“元素”tab中)和样式

    • 同时还可以在右边开发者面板中临时修改样式查看效果
  • 鼠标选择(指:鼠标悬停)html代码(“元素”tab中)定位界面元素

    这个功能可以用来检查你写的元素有没有按预期显示

分析页面加载速度慢的原因

以 Chrome 浏览器为例,F12 ,进入 NetWork 项,勾选 Disable cache,表示禁止浏览器缓存资源到本地,这样可以看到首次加载所有资源的耗时情况。

然后按 F5 刷新页面,点击 Time 进行排序,就可以看到每个资源的加载耗时情况,一般来说如字体这类比较大的资源加载慢是很正常的,而一些 js 如果加载时间靠后则说明该资源可能需要 CDN 加速或者更换加载源。

由于网络差异,上面所述页面资源加载时间并非在所有地区都相同,但是也可以提供一个参考

准备工作

搭建开发环境

准备工作 | Halo Documents

  1. 装java

  2. 下载.jar包:见Halo的“快速开始”

  3. java -jar halo-1.5.4.jar --spring.profiles.active=dev
    
  4. 启动完成之后,在用户目录即可看到 halo-dev 文件夹(如果是windows是C:\user\<user_name>\目录下面有``halo-dev`文件夹)

    如果是java -jar halo-1.5.4.jar,则在用户目录看到的是 .halo 文件夹

  5. 在启动halo的本机浏览器访问http://localhost:8090即可访问你的博客

vscode装前端开发插件

  1. FreeMarker
  2. JS & CSS Minifier:JS 和 CSS 压缩插件,其它如编译 Sass 或者 Less 的插件需要自己自行安装。

新建主题

准备工作 | Halo Documents

~/halo-dev/templates/themes 下新建一个文件夹,该文件夹就是你所新建的主题目录

非开发方式启动也可以以这种方式应用主题:直接把主题文件夹放到themes下面即可

开发约定

准备工作 | Halo Documents

开发样板

准备工作 | Halo Documents

目录结构

官方示例目录结构

准备工作 | Halo Documents

├── module                      // 公共模板目录
│   ├── comment.ftl             // 比如:评论模板
│   ├── layout.ftl              // 比如:布局模板
├── source                      // 静态资源目录
│   ├── css                     // 样式目录
│   ├── images                  // 图片目录
│   ├── js                      // JS 脚本目录
│   └── plugins                 // 前端库目录
├── index.ftl                   // 首页
├── post.ftl                    // 文章页
├── post_xxx.ftl                    // 自定义文章模板,如:post_diary.ftl。可在后台发布文章时选择。
├── sheet.ftl                   // 自定义页面
├── sheet_xxx.ftl               // 自定义模板,如:sheet_search.ftl、sheet_author.ftl。可在后台发布页面时选择。
├── archives.ftl                // 归档页
├── categories.ftl              // 分类目录页
├── category.ftl                // 单个分类的所属文章页
├── tags.ftl                    // 标签页面
├── tag.ftl                     // 单个标签的所属文章页
├── search.ftl                  // 搜索结果页
├── links.ftl                   // 内置页面:友情链接
├── photos.ftl                  // 内置页面:图库
├── journals.ftl                // 内置页面:日志
├── 404.ftl                     // 404 页
├── 500.ftl                     // 500 页
├── README.md                   // README,一般用于主题介绍或说明
├── screenshot.png              // 主题预览图
├── settings.yaml               // 主题选项配置文件
└── theme.yaml                  // 主题描述文件

less min.css

Less是一门扩展性的 CSS 预处理语言,在 CSS 基础上增加了函数、变量等一些便于写代码并且易于读懂的功能,而 CSS 可以由 Less 编辑而成。也就是上面的 main.css 是由 main.less 通过编译所有子模块的 less 文件而成,**main.min.css 则是由 main.css 压缩而成。以上 Less 编译和 CSS 压缩都可以交由 Vscode 插件完成**

全局 CSS 文件代指 main.css,你需要将该 CSS 压缩为 main.min.css 并覆盖之前的 main.min.css 即可在页面生效;将会作用于所有页面

ftl

Halo 的模板引擎为 FreeMarker,文件后缀名为ftl

可以参考FreeMarker Java Template Engine (apache.org)

Freemark控制生成文本,比如满足条件的就会抄过去生成文本

配置文件(生成“主题设置”界面 如何获取设置值)

配置文件 | Halo Documents

全局变量

全局变量 | Halo Documents

公共宏模块

公共宏模板 | Halo Documents

页面变量

页面变量 | Halo Documents

模板标签

模板标签 | Halo Documents

评论