Hugo框架LoveIt博客主题配置
前言
本篇博客记录的配置过程可能不够全面,但主要是本人认为比较重要的部分,或容易引起疑惑之处,单独拿出来记录,希望可以帮到遇到相同问题的其他人。
Hugo主题的配置,本质就是在配置根目录的 config.toml文件。
配置LoveIt主题前,可以先将其LoveIt/exampleSite/config.toml
对照着LoveIt主题配置文档大致看看各个模块的作用与意义,然后拷贝到自己的根目录并自定义修改。
默认md内容模版
hugo使用上手后,知道新建一篇博客可以在hugo博客的根目录,命令行执行hugo new posts/new_blog.md
,就会在 content/posts
目录下新建一个名为 ‘my_new_blog.md’ 的 markdown 文件,新文件的默认具体内容我们是可以提前自动配置的。
只需要编辑archetypes/default.md
即可,举例,我的default.md内容如下所示:
|
|
表示每篇新建的md文档,都会预先在文章起始位置填写上述内容:其中,title和date是自动获取的,#号表示注释内容。
是否发布markdown原文
文章的原始文本格式为markdown,在发布时会自动编译出html网页文档,在根目录配置文件config.toml
中可以配置是否一起输出markdown,如下注释的设置。
如果选择一并输出markdown文档,则在博客的末尾左下角,能让读者看到markdown原文。例如LoveIt主题的官方文档配置篇,左下角有个“阅读原始文档”。
|
|
我个人是倾向不输出,所以删去了“MarkDown”字段。
文章摘要
文章摘要是用简短的一句话,对标题进行补充解释,让读者在看文章之前就对文章有个大体的印象。
详细设置部分,可参考官方文档-摘要部分 。
我选择的手动摘要,做以下步骤:
- 在
archetypes/default.md
文本内新增description字段,以描述为摘要; - 新增摘要分隔符"";(可参考本文default内容模板章节)
比如本篇文章的摘要设置如下:
|
|
这样每篇新建的文章只要填写description字段内容即可,注意,使用纯文本,不要加入代码块、字体加粗格式等富文本,容易引起渲染错误。
文章封面图
LoveIt主题让使用者选择是否设置文章预览图,如果想设置,在markdown文档的最开头的配置部分,填写featuredImage
字段,引用的图片可以是网络URL地址的图片,也可以是本博客本地图片。
我选择的是本地图片的static方式加载(还有asset方式),资源相对路径的起始位置是根目录下的static
目录,比如本文的图片目录是static/img/Chore-Pic/LoveIt-Theme.webp
,那么这个字段应该填写:
|
|
🤔图片的分辨率建议是1000x300或者长宽比相近的分辨率,可以避免预览被裁剪。
图片格式尽量选择webp格式(或使用ffmpeg等工具将其他图片格式转换为webp)。
webp格式的图是新一代的压缩格式,保证最大原图清晰度的情况下,尽可能地缩小了图片内存占用,加快加载速度。
Algolia站内搜索
Algolia是法国的初创公司,类似于存储云服务,计算云服务,提供的是搜索云服务,用户建立应用,接着通过sdk推送数据,然后通过sdk就可以搜索了。个人用户是免费使用,还有个最大的优点是速度快,比LoveIt主题支持的默认站内搜索工具lunar.js快了一个数量级。
按照以下步骤实施即可:
-
在Algolia官网注册账号后登录,或使用 GitHub、Google 帐号登录;
-
点击左侧边栏的OverView/dashboard,可以看到自动创建了一个App,可以重新命名,我们新建一个Index,比如命名为My_Blog,点击进去,准备上传index.json作为搜索元数据。
Algolia 为我们提供了三种方式来增加记录:手动添加、上传 json 文件、API自动添加。下面演示自动添加的方式:
-
生成index.json并上传:
每次更新博客内容并发布时,需要更新index.json,可以做到自动化脚本化,借助第三方工具Atomic-Algolia即可。安装方法:
-
安装node.js后,可以执行npm指令;
-
执行
npm install atomic-algolia
,可以安装 atomic-algolia; -
在hugo根目录修改或新建文件 package.json ,添加如下内容:
1 2 3 4 5 6
{ "scripts": { "test": "echo \"Error: no test specified\" && exit 1", "algolia": "atomic-algolia" } }
-
根目录下新建
.env
文件,添加如下内容:1 2 3 4
ALGOLIA_APP_ID=你的Application ID ALGOLIA_INDEX_NAME=你的algolia-index名字 ALGOLIA_INDEX_FILE=public/index.json ALGOLIA_ADMIN_KEY=你的Admin API Key
上述的关键信息 Application ID 和 Admin API Key可以在algolia的DashBoard页面获取,“API Keys”按钮,点进去后,就能看到,前者是大概10位长度的大写英文与数字,后者大概30位的小写英文与数字。
Index的名字是自己重命名的,index-file的路径指的是你的发布路径和Hugo根目录的相对位置,上述示例是public为发布目录。
⚠️ ALGOLIA_ADMIN_KEY可以用来管理你的索引,所以最好不要提交到公共仓库。
我的做法是Hugo博客内容为Private仓库,发布的仓库kissingfire123.github.io为public,添加为Private仓库的submodule,一来隔离了隐私数据,二来避免每次更新草稿内容都触发page-deploy。
-
配置config.toml
找到
[params.search]
模块,至少配置以下几个值(以下略去其他内容):1 2 3 4 5 6 7 8
[params.search] enable = true # 搜索引擎的类型 ("lunr", "algolia") type = "algolia" [params.search.algolia] index = "Benjamin-Blog" # index-name,这个的确是我的,个人自行命名 appID = "B45S568G91" # app-id,内容我随意写的 searchKey = "c00000d11111e22222f444e2333"#admin-key,内容此处为演示,随意写的
-
更新索引并自动上传:
npm run algolia
输出类似如下内容,“Benjamin-Blog"是我的index-name。
1 2 3 4 5 6 7 8 9 10
$ npm run algolia > algolia > atomic-algolia [Algolia] Adding 0 hits to Benjamin-Blog [Algolia] Updating 0 hits to Benjamin-Blog [Algolia] Removing 0 hits from Benjamin-Blog [Algolia] 219 hits unchanged in Benjamin-Blog {}
-
-
至此,algolia功能启用成功,使用示范如下:
评论系统Valine
LoveIt主题支持多种评论系统,例如Disqus,GitTalk,valine,前2者都需要用户登录后评论且数据托管更方便,valine不需要登录且无后端。
关于valine更详细的介绍,有兴趣的朋友可以看看valine中文文档。
下面只说如何在LoveIt主题上用起来这个评论系统:
-
valine基于LeanCloud登录,注册并登录;
选择
国际版
,不要选择华北
或华东
,后面这2个要上传身份证备案的,比较麻烦。(Ps:第一次我就不清楚情况,弄的华北版,各种麻烦,实名认证) -
新建应用,比如我的是 Benjamin-Personal-Blog ,然后获取2个关键信息:
AppID
和AppKey
。这2个关键信息在侧边栏设置==> 应用凭证。
-
设定博客域名:位置在 设置 ==> 安全中心 ==> Web 安全域名 ,将博客域名记录在内,可以写多个(比如用vercel部署了的话);
-
修改
config.toml
,修改 [params.page.comment.valine] ,如下所示:1 2 3 4 5
[params.page.comment.valine] enable = true appId = "6aYYYY22YY222YYX34rjksex-X4XXXGah9X" # 仅作演示,随意输入的,要换成你自己的 appKey = "OOELIDKIddsowhV" # 同上,也是我随意输入的,但是内容长度和形式差不多 placeholder = "期待您的评论..."
-
域名绑定(非必须):位置在 设置 ==> 安全中心 ==> API;
自动更新文章修改日期
每篇文章都有个创建日期,发布后可能会有多次修改,“记录最后修改日期并显示”——这一功能是被LoveIt主题所支持的。开启该功能的方法为修改 config.toml ,关键几个值如下:
|
|
修改好并发布后,可以在每篇文章(包括预览时的draft)的末尾底部左下角,看到一行小字,格式形如 “更新于 20xx-mm-dd #SHA值 “,即表示修改成功了。
SEO优化
Baidu收录
-
Step1 :访问 Baidu搜索资源平台,先认证网站是你的
进行基本的注册登录后,在网页的提示下,下载认证文件
baidu_verify_code-jXXaXiYJCY.html
,并且放到网站发布的根目录下,并且部署,再点击认证,即可完成认证;Ps: 上述jXXaXiYJCY是我随意写的,每个站点的verification都不一样。
-
Step2:让百度知道你站内的所有链接,方便官方收录和爬取
进入
用户中心
$\rightarrow$站点管理
$\rightarrow$普通收录
,进行资源网址的提交,提交的方式有3种:- API提交 :最及时迅速地被官方收录,自行在终端执行命令,注意需要自行准备 urls.txt ,这个可以用脚本处理 sitemap.xml 得到,建议调用成功后可以写进自己的部署脚本;
- sitemap提交 :每次hugo编译成功后,都会在发布文件夹的根目录更新文件 sitemap.xml ,提交该文件即可。( 比如我的填入 https://kissingfire123.github.io/sitemap.xml )
- 手动提交:非常直白,就是一个个的复制粘贴到文本框,一行一个,然后提交
-
关注其他信息:比如网站信息、抓取诊断等。
Bing收录
访问:Bing搜索管理员工具 ,操作类似 Baidu 收录。
Google收录
访问:Google搜索控制台 ,操作类似 Baidu 收录。
参考链接