1. 简介
本博客站使用hugo引擎,使用zzo主题并略作调整搭建起来。本文记录hugo的概念说明以及使用备忘。
2. 说明
2.1 目录结构
|
|
2.2 内容管理
hugo的顶层为./content/<DIRECTORIES>
,是用于确定布局等的内容类型。 要了解有关部分的更多信息,包括如何嵌套它们,请参阅部分。
- Page bundles: Hugo 通过
Page bundles
来表示页面相关的图像和其他资源。
_index.md 在 Hugo 中具有特殊作用。它允许你在列表模板中添加前置内容和内容。这些模板包括章节模板、分类模板、分类术语模板和主页模板。
|
|
2.1 配置
配置文件
|
|
2.1.1 内容宽度
如果想增大博客屏幕尺寸,只需更改params.toml
文件中的viewportSize
ref-1值即可。一共5个选项,对应尺寸为:
选项 | 对应宽度 |
---|---|
naroow | 800px |
normal | 960px(默认) |
wide | 1280px |
wider | 1440px |
widest | 1600px |
2.1.2 目录设置(Toc)
config.toml
中关于博客目录Toc的设置 – 设置博客目录以Hx起始,以及截止Hx
:
|
|
必须设置此配置参数,否则 toc 将无法运行。以上面配置为例,startLevel
和endLevel
意味着最多使用 h2 标签,最少使用 h4 标签作为文章标题。而 h1、h5、h6 标签不会包含在 TOC 元素中。
博客目录可以在params.toml
(全局生效)中设置,也可以在单一博客的Front-Matters
(当前博客)中设置。
params.toml配置举例:
|
|
参数 | 说明 |
---|---|
enableToc | 在所有文章中是否显示目录,true: 显示;false: 不显示 |
toc | 在所有文章中完全取消提示。这是 enableToc 的别名 |
enableTocSwitch | 开启目录隐藏\显示按钮,true: 开启;false: 隐藏 |
hideToc | 隐藏toc(搭配enableTocSwitch=true时,默认隐藏目录)。true: 隐藏; false: 不隐藏 |
enableTocContent | 在主文章中显示提示,不在侧边栏中显示。 |
tocPosition | oneof [inner outer]。 inner: toc将位于边框内;;outer: Toc将位于边框之外。 |
tocFolding | 是否动态显示目录, 默认折叠,查看至相应内容时展开当前目录 |
tocLevels | 标题是否在目录中显示,优先级没有config.toml 中的高 minimum h2, maximum h4 in your article |
2.1.3 侧边栏设置
参数 | 说明 |
---|---|
enableBio | Bio(biography),生平 |
enableBioImage | |
enableSidebar | 侧边栏显示 |
enableSidebarTags | |
enableSidebarSeries | 侧边栏 - 系列显示 |
enableSidebarCategories | 侧边栏 - 分类显示 |
enableHomeSidebarTitles | 启用主页侧边栏字幕 |
enableListSidebarTitles | |
itemsPerCategory | |
enableSidebarPostsByOrder | |
sidebarPosition |
2.2 博客结构
2.2.1 调整sidebar顺序
如何修改
zzo主题关于sidebar的标签、分类、系列的排序,未设置配置项,需要找到关于sidebar的内容部分进行调整。
sidebar关于这些的内容在在
themes/zzo/layouts/partials/sidebar
目录下,分别为sidebar-home.html与sidebar-list.html如何生效
由于使用git 子模块引用的主题文件,需要执行以下操作,引用最新提交的zzo主题文件
首先,进入包含子模块的父仓库的根目录。
使用以下命令来更新子模块内容:
添加
--init
选项, 可在更新子模块的同时,初始化子模块1
git submodule update --remote --init
在父仓库中提交子模块变更
1 2
git add path/to/submodule # 将子模块的路径添加到父仓库的暂存区 git commit -m "Update submodule to latest commit"
2.3 博客编写
2.3.1 Archetype(模板)
Hugo提供Archetypes(原型)
能力,定义通用的模板, 一是为了保证博客内容和数据的一致性; 二是为了快速生成,提高效率。
如何创建
archetype需要以类型为名称,并将模板文件保存至
archetypes/
目录下,以golang模板举例:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
--- title: '{{ replace (replaceRE `\d{4}-\d{2}-\d{2}-` "" .Name) "_" ": " |title}}' categories: - Golang tags: - Go subtitle: "" description: date: {{ .Date }} toc: true --- ## 1.简介 ## 2.说明 ## 3.总结 ## 4.参考
方法
replaceRE: 根据正则替换,将符合正则表达式的内容替换为指定字符, 上面模板将
.Name
中的日期前缀置为空;replace: 将字符串中的某些字符替换为特定字符, 此处将去除日期前缀的
.Name
中的_
字符替换为:
.Name: 当前页面名称
.Date: 返回给定页面的日期
如何使用
根据指定类型,创建博客
kind: 博客类型, 需要与archetypes目录下的模板名称保持一致, 此处以
golang
举例;target_file_path: 博客生成位置, 此处以
content/posts/golang/2020-05-25-Go-Modules版本控制和依赖管理.md
举例;1
hugo new --kind <kind|golang> <target_file_path|content/posts/golang/2020-05-25-Go-Modules版本控制和依赖管理.md>
2.3.2 Front-Matters
Hugo将每个博客的开头区块定义为Front Matter(扉页)
,定义一些当前博客相关的内容、设置。
2.3.3 引用
在 Hugo 中,通过
ref
和relref
创建链接引用或获取其他页面的元数据。根据hugo文档与源码注释,ref
用于获取相对于 Hugo 根目录的页面路径,relref
用于获取相对于当前页面的页面路径。但经过翻阅源码、测试,两者没有区别,建议选用ref
即可
Heading IDs
hugo会自动给文档标题增加
Head_ID
, 可以通过此引用具体的小节。但部分字符会被转义,因此点击目标标题的索引查看,便于确认转义后的Head_ID
举例说明:
文章路径中的
.md
后缀可带、可不带;
示例目录结构
|
|
base 页面为 content/posts/个人工具/2022-09-30-博客迁移-1_调研hugo框架zzo主题.md
|
|
- 相对引用文章
相对引用示例-引用文章 - 相对引用文章,标题
相对引用示例-异文章引用标题 - 当前文章,引用标题
相对引用示例-当前文章引用标题 - 绝对引用标题
绝对引用-标题示例
2.3.3 相关内容
此配置影响博客结尾的
相关文章
,由于相关文章设置最大显示5条(zzo主题中已写死)
自定义相关内容算法中不同因素的权重,结合threshold=80,相关文章最大5条
- 相同系列的文章,也必定为相关文章(合理)
- 文章>3个相同关键字,则为相关文章(合理)
- 文章>3个相同tag,则为相同文章(合理)
- 日期不纳入相关性计算(合理)
|
|
2.3.4 代码块
代码块增加文件路径作为标题
1
echo hello!
将行号替换为指定字符, 比如
>
或$
, 以>
举例:1
echo hello!
多语言代码块
1
System.out.println('Hello World!');
1
console.log('Hello World!');