惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

L
LangChain Blog
阮一峰的网络日志
阮一峰的网络日志
WordPress大学
WordPress大学
博客园 - 司徒正美
罗磊的独立博客
D
Docker
Last Week in AI
Last Week in AI
爱范儿
爱范儿
M
MIT News - Artificial intelligence
V
V2EX
Google DeepMind News
Google DeepMind News
小众软件
小众软件
Apple Machine Learning Research
Apple Machine Learning Research
Microsoft Security Blog
Microsoft Security Blog
T
Tailwind CSS Blog
MyScale Blog
MyScale Blog
V
Visual Studio Blog
博客园 - 叶小钗
B
Blog RSS Feed
A
About on SuperTechFans
F
Fortinet All Blogs
T
The Blog of Author Tim Ferriss
Martin Fowler
Martin Fowler
P
Proofpoint News Feed

少数派

派早报:Google 发布 Fitbit Air 等 - 少数派 「新人报到」確認需求,再開始 - 少数派 从 SOLO 独立开发者社区,我看到了越来越多开发者开始做自己的产品 - 少数派 我怎么管理那些"不常做,但总会忘"的生活事项 - 少数派 人形机器人量产元年,数据才是具身智能的“生死线” - 少数派 BuhoLaunchpad 高度还原 Mac 启动台:开发历程与思考 - 少数派 五年陪伴依然不舍,DIY 换壳后让罗技 MX Master 3 继续服役 - 少数派 新玩意 240|少数派的编辑们最近买了啥? - 少数派 一日一技|为什么你应该关闭 iOS 的键盘声音 - 少数派 我做了个插件和 Skills,一键提取任何网站的设计规范 Design.md - 少数派 住在三四线城市的你,该开始录播客了 - 少数派 甘南秘境,大白高国 - 少数派 AI的审美:谁让把我变成川内倫子 - 少数派 返工怎能不烦恼,打工人片单总有一部是你的「嘴替」 - 少数派 为了让「上厕所」更健康,我做了一个小工具 - 少数派 AI + Skill,能够让生成的文章去除 AI 味吗? - 少数派 新玩意|韶音OpenDots ONE 耳夹式耳机 - 少数派 《美满》| 在每一个春天的晚上相爱(362) - 少数派 新玩意|优篮子 PS01 MagSnap 磁吸支架 - 少数派 自我整合手记 | 我开始早睡了:用稳定规则,为自由托底 - 少数派 用龙虾(OpenClaw)两个多月,我最深的12个体会 - 少数派 听歌时间到,12 张你可能错过的 2025 华语乐坛好专辑 - 少数派 承诺能追吗 - 少数派 macOS 26启动台没了? 我做了个不一样的App启动器 - Keboard - 少数派 《四海为家的人》| INTJ对话INTJ(361) - 少数派 你发过的那些黑历史,是时候一次清干净了 - 少数派 新玩意:安安静静玩,越玩越专注:计客密码机 - 少数派 iPad 用户首次体验 Android 平板:vivo Pad6 Pro - 少数派 数据逻辑强 - 少数派 极北行+ | 一路向北,探访日本至北之地 | 001 - 少数派
hexo next 主题优化 | 这里可能有你遇到所有问题的答案 - 少数派
2020-03-19 · via 少数派


hello 大家好,我是鱼叔。我最近花了两天左右的时间基于hexo和next搭建了个人的blog,中途遇到了一堆的bug以及相关的优化问题,想写这篇文章记录下来给想搭建blog的你一个参考。

搭建blog的初衷

现在网络平台里有很多可以发表个人看法的平台,比如我派,比如知乎、简书等,那花费功夫搭建自己的个人blog到底有什么意义呢?在我看来,个人博客的意义在于自由性,因为这是你自己的平台,你可以自由地去发表个人想法和文章,而不用担心内容是否迎合具体某个平台的读者。其次,我将个人博客作为自己的一个分享型知识记录,我希望自己的经历或者知识可以给别人带来一点启发和帮助,也许某一个瞬间,当一个人在搜寻相关的知识,参考了你博客的内容并且留言感时,你会发现自己其实在给这个社会做贡献,你在无声中被别人所认可。

相关的优化

前言

  • 关于hexo

我所搭建的blog是基于hexo + GitHub的,因为hexo凭借它轻便快捷的特点,已经成为现在个人博客搭建的主流。我派已经有较为具体的搭建教程文章了,就不再详述搭建步骤。

记录生活,分享点滴:通过 Hexo 搭建与使用个人博客

  • 关于NexT

NexT 是hexo主题中非常流行的一个,因为它功能齐全,而且插件丰富,成为大多数人的首选主题。当然流行就会出现一个问题,很容易撞车,大家的博客外表都非常相似。不过鱼叔认为博客只是载体,内容才是王道,所以在精力有限的情况下,没必要太纠结于博客外表的华丽,找一个顺眼的主题驻扎即可。本文接下去的内容也主要适用于NexT主题。

菜单栏修改问题

Next在主题的_config.yml文件中提供菜单栏的修改,只要搜索menu就可以找到,通过去除注释即可以在网页上进行渲染。然而鱼叔在修改next中的menu时会发现存在这样的报错 “cannot get %20” -- 无法找到相应的菜单。出现的原因是官方给的代码中多加了一个空格,导致网页无法渲染,个人除了删除注释外,要将“||”前的空格删除不然会导致菜单没法跳转。

menu:
home: /|| home
about: /about/|| user
tags: /tags/|| tags
categories: /categories/|| th
archives: /archives/|| archive
 #schedule: /schedule/ || calendar #官方给的代码 || 前多加了空格

Hexo博客出现“Cannot GET/tags or categories”错误

next提供了标签和分类功能,但是在实现这个功能时常常会遇到"cannot get" 的问题,这是因为我们没有对它们进行初始化。具体解决方法如下:

  1. 在git bash 中输入以下代码创建相应的page:hexo new page "tags"hexo new page "categories"
  1. 在第一步完成后会在source文件夹中出现tags和categories的文件夹,在各自的文件夹里打开index.md文件进行修改(多加上一个type属性):title: categoriesdate: 2020-03-15 14:19:53type: "categories"​title: tagsdate: 2020-03-15 14:20:32type: "tags"

底部下一页跳转问题

鱼叔在建立博客的时候发现底部下一页跳转按钮没有正常显示,如下图

修改方式:

打开主题 layout/_partials/pagination.swg 进行修改,将“i class”模块删除修改成如下模式(其中prev 和 next可以自定字样):

{% if page.prev or page.next %}
 <nav class="pagination">
  {{
     paginator({
       prev_text: 'prev',
       next_text: 'next',
       mid_size: 1
    })
  }}
 </nav>
{% endif %}

修改后结果为下图,实现正常的跳转按钮:

如何让首页文章部分显示

next主题默认的是将你的文章全篇显示在自己的首页上,这就会导致一个问题,首页各个文章太长了不利于翻阅,那如何部分显示自己的文章呢?很简单,只要在个人的文章Markdown 中在想要显示的文章部分下面加上代码<!--more-->,即可只在首页显示所需的文章部分。

修改头像问题

将自己的头像复制到blog文件夹中的\themes\next\source\images中覆盖原来的avatar.png 文件即可。

修改站点icon

当套用完next主题后,个人博客的站点图标会自动为next的logo,作为博主当然不能忍这个logo啦,那怎么修改呢?

我们打开next的主题配置文件会发现有这样的设定:

favicon:
small: /images/favicon-16x16-next.png
medium: /images/favicon-32x32-next.png
apple_touch_icon: /images/apple-touch-icon-next.png
safari_pinned_tab: /images/logo.svg

这就可以很清晰地发现去哪里修改了,只要在对应的路径上把原有的图片文件给替换成我们需要的文件就行了。这里给大家提供一个网站用于生成所需的icon同尺寸图像:favicon-generator

增加阅读时长和字数统计功能

next自带阅读时长和字数统计插件,我们所需要做的就是调用这两个工具。首先在主题的配置文件中修改:

post_wordcount:
item_text: true
wordcount: true         # 单篇 字数统计
min2read: true          # 单篇 阅读时长
totalcount: false       # 网站 字数统计
separated_meta: true

完成配置后,我们需要安装word-count 插件,在git bash中输入:

npm i --save hexo-wordcount

完成插件安装后,为了更好的显示,我们可以打开xxx_blog/themes/next/layout/_macro/post.swig ,在对应地方添加字words 和 min。可以通过搜索‘wordcount’ 和 ‘min2read’ 来定位。

 <span title="{{ __('post.wordcount') }}">
                {{ wordcount(post.content) }} words
              </span>

                  <span title="{{ __('post.min2read') }}">
                {{ min2read(post.content) }} min
              </span>

配置搜索功能

next自带一个搜索功能,可以实现对站内内容的搜索。

首先需要通过如下命令安装对应的搜索插件:

然后在全局的配置文件(hexoblog目录下的_config.yml)中,增加配置如下内容:

# Search Config
search:
path: search.xml
field: post
format: html
limit: 100

然后在git hash 中加载相应的插件:

npm install hexo-generator-search --save
npm install hexo-generator-searchdb --save

打开主题内的配置文件,找到 local_search 属性,配置开启本地搜索功能。

local_search:
enable: true
 # if auto, trigger search by changing input
 # if manual, trigger search by pressing enter key or search button
trigger: auto
 # show top n results per article, show all results by setting to -1
top_n_per_article: 1

将自己的博客收录到谷歌搜索中

为了让自己的博客能被更多人搜索到,自然需要将自己的博客收录到谷歌引擎中,具体的操作如下:

  1. 添加资源

打开Google search Console, 在左上角添加资源:

2. 网址验证

选择网址前缀输入自己的博客网址。接下去就是对网站的验证,即证明网站是自己的。google 提供了多种方式进行验证,比较方便的是HTML 文件方式,它会产生一个HTML 文件,你只要将它放到博客source里然后再进行重新部署就行,(tips: 为了避免验证文件被hexo渲染,可以在验证html里添加‘layout:false’ 代码)。鱼叔采用的是HTML标记的方式,具体的方法就是将google提供的代码copy到 xxx_blog/themes/next/layout/_partials/head.swig中,放在头部的<meta>下面即可。

3. 增加sitemap

通过在线网址sitemap生成自己博客的站点地图,然后将站点地图下载下来放到自己博客源public文件夹中(xxx_blog/public)。然后打开 Google console,点开左侧的添加站点地图,输入sitemap.xml,点击提交即可,一般会花2-3天时间进行收录。


增加评论功能

目前比较流行的两种评论系统是Valine 和 Giement,这里主要讲Valine的配置。

1. 注册leancloud,leancloud注册网址

注册登陆后,访问控制台,创建应用,选择开发版,创建好之后就生成了对应的id和key

2. 在主题配置文件中进行修改 Valine.

3. 最后效果


博客中图床问题

这里推荐图床神器PicGo, 可以非常快捷地将图片上传到自己所需的云端中,而我采用的是PicGo结合腾讯云COS来搭建在线个人图床。

相关的教程链接:PicGo中的腾讯COS设置

总结

基本上讲完了我搭建博客时遇到的所有问题,我之前看过一个博主写的一句话,“搭建博客就像玩了一个游戏,你的博客就是你的角色,你总是会想方设法地给他升级“。博客优化其实是一个无止境的路,需要耐心和时间,但往往我们会过度的为了美化它而忘记了自己搭建的初衷。好的内容才是一个博客真正的灵魂。

参考

Next 官方指南