环境信息:
- Next 7.8.0
- hexo 4.2.1
- npm 6.14.5
- Next 配置文件指 **项目根目录/themes/next/_config.yml**
- 项目配置文件指 **项目根目录/_config.yml**
- 安装命令没特别说明都在 项目根目录 下进行
- 注意在配置文件中配置字段时,请严格控制缩进
请根据目录章节按需阅读。所有配置都建立在2020年 7.8 版本的基础之上实现的,保新保质,绝对不是复制偷搬那些祖传博客。
在吗?吐槽无数遍,2020 的人为什么写博客还抄的 Next4.0 版本!就算你不想用 2020 大改版的版本,好歹和我一样用个 7.8 吧!!至少来个 7.0+吧孩子们!!退一万步 6.0+也是可以的啊!!
一些比较常规的功能性配置 Next 文档里都有的。虽然是英文文档,虽然可能和你的版本有一点点不同,但它是基本跟着最新版本,比较全面。另外可以多摸摸 Next 配置文件,里面注释写的蛮详细的,有些东西看注释就知道能开启什么功能,当然,有很多功能需要额外插件支持。
友情建议:进行较大更改之前,先通过git等方式进行保存。并且更改后为了避免样式不刷新,尽量先hexo clean
清除样式再生成,并且最好先在本地hexo s
部署。确认没有千疮百孔再推到线上吧。
站点概览描述
在项目配置里,第一段填写相关描述,如果是 next 主题,会显示在侧边栏中。
1 | # Site |
配置头像
在 Next 配置文件下找到 avatar
字段,有如下配置项:
1 | # Sidebar Avatar |
如上给了个示例路径,然后将头像放在 主题目录下的 source/images/avatar.png 即可。
另外两个属性可以按需配置。
重新生成部署网站,瞅瞅你的大头照吧。
头像图片大小没关系,会自动缩放,但是比例不变,即使圆化也会变成椭圆。因此请注意图片比例最好是正方形,美观。
Next 的分类和标签
在 next 主题配置里,选择下列字段进行注释和取消注释即可启用相关页面,例如分类页和标签页。 >分类有层级,标签没有层级。
1 | menu: # 子链接 || font-font awesome 图标 |
需要生成两个对应主页,在项目根目录下输入相应命令,创建相关页面。
hexo new page categories
hexo new page tags
并且打开生成的页面,在元数据中相应添加字段
type: categories
type: tags
。
想要为博客分类,即在自己的每篇博客描述头中,加入categories:
tags:
的相关字段,例如这篇:
1 | categories: |
hexo文章资源管理
想要简单使用懒得管理,直接放在 项目目录/source/images 中。然后通过 /images/something.jpg 路径进行调用。
想要有规律的整理的话,hexo也有自带组织方式。资源管理功能打开后,Hexo会在hexo new的时候创建一个和文章同名文件夹,将文章相关资源放进去即可。生成网页时资源和文章在同一路径,因此可以利用相对路径直接调用资源。
项目配置中设置:
1 | post_asset_folder: true |
图片推荐使用Win10照片编辑器质量调整进行压缩。 用照片编辑器打开图片,右键--调整大小--自定义尺寸--质量40%。压缩比高的惊人,粗略观感也没有太大区别。例如我1.8KB的图片质量40%可以变成0.09KB。
音乐
网易云音乐
先去网易云音乐里歌曲页面生成外链播放器, 不能生成的可查找特殊方法生成。
在 项目/themes/next/layout/_macro/sidebar.swig 中, 插入复制的代码,比如插入在最下面某一段。 >注意 2020 版本后缀不是 swig,相关文件也不一样
aplayer全局音乐播放器
虽然网易云音乐足够播放一首歌或一个歌单,但是仅限定于网易云可怜的版权库里。
通过使用APlayer播放器,可以播放任意来源的音乐,例如QQ音乐【我喜欢】的歌单。
注意是原版APlayer,不是hexo-tag-aplayer
无基础偷懒可以复制以下代码至 **主题目录/layout/_layout.swig**
中,我放在了</html>
的前一行。
有基础可以去看看中文文档,安装npm包,并且自定义使用。
可以通过文档查看各个参数的意义,进行播放的设置。 示例代码中是以QQ音乐为服务器,以我自己的歌单为播放列表。
1 | <body> |
当然,全局播放器会在每一次切换站内页面时中断。 要不中断播放请安装pjax功能,详见下一节。
我为了百度统计,hexo-douban等功能不冲突,关闭了pjax。
参考资料:Macyrate的APlyaer博客
pjax
pjax可以使网页变成单页应用,即在站内切换页面并不会刷新网页,极大提高网页运行速度。
但是!这么好的东西为什么不是默认开启的呢? pjax会扰乱网站的一些其他功能。如hexo-douban页面,百度统计的访客记录 ......
如果网站没有其他功能需求,建议开Pjax,否则建议不安装。
在Next配置文件中设置pjax为true,并且去对应网站查看安装插件的方法。
如git
clone安装:git clone https://github.com/theme-next/theme-next-pjax themes/next/source/lib/pjax
。
1 | # Easily enable fast Ajax navigation on your website. |
数学公式支持
参考官方文档,需要切换到带有渲染mathjax的渲染引擎
安装pandoc软件,下载地址
出现错误exit with code null 大概是没有安装pandoc软件就直接安装了插件,补安装后如果还报错重启一下。
命令行安装插件
1 | npm uninstall hexo-renderer-marked --save |
在 主题/_config.yml中,打开mathjax功能:
1 | # Math Formulas Render Support |
在Markdown中写下:$$a^n+b^n=(a+b)(a^{n−1}b^0−a^{n−2}b^1+a^{n−3}b^2−…−ab^{n−2}+a^0b^{n−1})$$
,最终效果如下:
\[a^n+b^n=(a+b)(a^{n−1}b^0−a^{n−2}b^1+a^{n−3}b^2−…−ab^{n−2}+a^0b^{n−1})\]
最后重新运行即可
导入豆瓣评价页面
个人博客肯定想记录点自己生活向的东西,看过的电影,玩过的游戏,看过的书就是一个很好的记录对象。
程序员大概很少有时间看文学书
之前我是用 markdown 写了个文本条目性质的,不说难看吧,但起码豆瓣条目自带一些影片介绍信息。..
安装 hexo-douban 插件
命令行输入
1 | npm install hexo-douban --save |
将下面的配置写入项目配置文件:
1 | douban: #不想启用的页面注释掉即可 |
豆瓣 id 可以在进入你的豆瓣个人主页,观察网址获得。通常为:
https://www.douban.com/people/你的id/
hexo douban 命令
用法如下:
1 | Usage: 命令行输入 hexo douban |
使用方法
hexo douban
生成相关页面再进行部署。- builtin 开启时,直接 hexo s 和 hexo g 即包含生成过程。
注意安装了 hexo-douban 之后,我们多了个
hexo douban
的命令,因此不能再用hexo d
作为hexo deploy
的缩写了。
开个主页栏
生成部署后就可以通过/主网址/movies
类似的形式访问了,但这样显然不方便,因此我们开个主页栏给它。
和之前开启分类页一样,在主题配置文件中,找到 menu 字段,添加相应的值,如下以 movies 举例进行修改:
1 | menu: # 子链接 || font-font awesome 图标 |
但是这样开启之后,显示的是 movies
,想改成中文显示需要在主题目录/languages/zh-CN
中配置一下,自己打开看看就懂得怎么配了,懒得贴实例了哈=。=
参考资料
字数统计和阅读时长(已废弃)
hexo-symbols-count-time 已失去维护,且其依赖项highlight version9 已经过时,无法使用。
在 next 主题配置文件中搜索 wordcount,可以看到它默认支持的插件是 hexo-symbols-count-time
使用命令行 npm
输入命令进行安装:npm i hexo-symbols-count-time --save
项目_config.yml 里追加一段(没追加这一段导致统计为 NaN
1 | symbols_count_time: |
next 主题的_config.yml 里找到字段 symbols_count_time 按需配置即可:
1 | # Post wordcount display settings |
重新生成部署即可,如果没有效果,试试 hexo clean 再重新生成
首页摘要 阅读全文
如果你是找了半天博客,发现他们都说 Next 自带自动摘要功能,但自己这就是不起作用的时候,恭喜你,和我一起把那些馊饭博客砸了吧。
7.6 以后的 Next 删除了自动摘要功能,原因是它觉得它负担了太多。..
我 7.8 的 Next
配置文件里只有个excerpt_description
,这个功能是自动将博客头描述里的description
字段当作摘要。
所以现在首页摘要只有两种办法:
- 为每个博客写好 description
- 在博客中间手动添加
<!-- more -->
以截断
添加百度分析 (现需备案才能使用)
登陆 百度统计
进入个人页,选择侧栏的代码获取页
可以看到如下一段代码,找到hm.js?
之后的序列号复制。
1 | <script> |
填写在 next 配置里的百度分析字段中:
1 | # Baidu Analytics |
之后等待一段时间就可以去百度分析主页看网站情况啦。
然后你就能开心地发现几天,几十天,几百天,访问量蹭蹭蹭的涨,访问 ip 一直都只有 1 个 hhhh。
嗯,其实在被搜索引擎收录之前别人是搜不到你的博客的。
请捞一捞下面的 Google 收录方法。
搜索引擎收录
以 Next 主题配置 Google 收录为例。
当然,没有账号的话需要自己搞好 Google 账号
选择资源类型
我是 GitHub Pages 域名的个人网站,所以选右边的单网址的资源类型。把博客网址复制过去即可创建资源。
验证网站所有权
Goolge 推荐验证方法是下载 HTML
文件。但是,我们不用。毕竟一个hexo clean
网页就没了。..
选下面的 HTML 标记验证,可以看到形如下面的一段代码。
1 | <meta name="google-site-verification" content="XXXXXXXXXXXXXXXXXXXXXXX"> |
把 xxxx 的东西复制好。
打开 Next
的配置文件,搜索到google_site_verification
字段,把复制的字段填进去就好。
hexo clean;hexo g;hexo d
一套刷新网站组合拳。
回刚才的 Google 家里点击进行验证即可。
验证成功后可以 Google
搜索site: 你的网址
试试,理应看到你的博客网址。
这里很多看很多博客都是在抄几年前的方法,明明 2020 了啊哥哥们,Next 已经传宗接代到 8.0 了!!已经有内置
google-site-verification
字段了!!明明限制了搜索时间是半年以内,结果 2020 年这群人写的教程还是抄的 10 年的东西看着好烦啊喂!!!!!!!!!!!!!!
添加站点地图 SiteMap
站点地图可以将我们网站的组织架构提供给 Google,都是为了搜索优化==
安装 hexo 自动生成站点地图的插件:
npm install hexo-generator-sitemap --save
安装成功后在项目配置文件中添加:
1 | sitemap: |
这样插件每次会在hexo g
时自动生成 sitemap.xml
文件,放在/public/下面。
注意博客文件名带有
&
时,生成的 sitemap.xml 会有错误,我的解决办法是修改文件名。
其实我们也知道每次部署出去的网站也就是/public/目录,所以 sitemap.xml 相当于放在网站根目录下面。
因此我们把你的网站地址/sitemap.xml
这个链接提交给 Google
即可。
执行hexo g;hexo d
生成 sitemap 并部署出去。
在 Google SearchConsole 侧栏找到站点地图,提交上面说的链接,完毕。
百度收录
百度收录也是完全同理,next 也内置了验证字段。需要注意的是,百度收录仅支持一级域名收录,所以假如没有自己的域名,GitHub Pages 必须是个人主页user.github.io。
并且由于百度无法爬取github pages,因此需要自己主动提交网址供索引:
- next可以开启主动推送 baidu_push: true功能,每次点击你的某个网址时,会推送该网址给百度。(注意要在自己网站上关闭浏览器的广告拦截插件,这个会限制hexo脚本运行)
- 自己去站点管理页主动提交sitemap。
站内本地搜索
安装插件:
1 | npm install hexo-generator-searchdb --save |
编辑项目配置文件,新增字段:
1 | search: |
编辑主题配置文件,修改字段:
1 | # Local search |
评论系统 Valine
“会有人讨论吗?”——好的,回来填评论系统的坑了。
Next 支持多评论系统同时存在 ... 虽然我不知道哪个憨憨会同时装躲个评论系统,评论数据又不能共享。
Next 内建支持很多评论系统,我选择了在国内支持比较友好的 Valine。
可以跟着 Next 官方教程做,当然不愿意看英文也无所谓,欢迎继续跟着我~
LeanCloud 注册登录: Valine 使用了 LeanCloud 作为数据段,因此去 LeanCloud 注册登录就行,然后创建应用。虽然这个注册需要实名制 ... 有点小小小在意。
获取 ID 和
Key:进入创建好的应用,选择设置->应用 Keys
子页,复制APP ID
和App Key
。
Next 配置,在主题配置文件中搜索 comments, 找到字段如下,这里基本不用修改,按需看注释选择配置吧:
1 | # Multiple Comment System Support |
在主题配置文件中搜索 valine ,找到相应的字段如下:
1 | valine: |
把 enable 置 true,并且对应粘贴好之前的 AppID 和 AppKey。
重新部署就可以用了,默认为每个页面开启评论系统。
特别注意LeanCloud国际版需要填写serverURLs字段:在LeanCloud 设置--应用凭证--REST API服务器地址。
页面单独关闭评论
在 markdown
文件的元数据描述符中,添加comments: false
,即可在当前页面关闭评论。
推荐导航栏的那几个导航页都关掉,例如分类页、标签页、关于页。
管理评论数据
登录 LeanCloud
对应应用的管理页面,选择存储->结构化数据->Comment
,即可看到评论数据,并且可以偷偷行使你的管理权限。
评论邮件通知 valine-admin
更换自定义域名
首先,找一个卖域名的网站买好自己的域名= =并且做好DNS解析转到Github Pages,腾讯云是可以一键解析到目标网址如: alobal.github.io。
然后在你的博客source文件夹下,新建一个CNAME文件,内容写上你的域名如:sitchzou.com,重新部署即可。
注意Github pages设置里也可以改域名,但是只在那里改的话,你会发现每次部署域名都失效。因为它本质上就是在你的仓库根目录下创建了CNAME文件,但是你自己没在source里建的话,每次部署就把这个文件删除了。
Hexo忽略文章
不要用Hexo配置文件的 exclude字段来忽略 'source/_posts/' 中的文章,这样没有用。在要忽略的文件的文件名之前加一个下划线"_"即可忽略。
使用 'skip_render'可跳过指定文件的渲染,即将文件原封不动发布。
错误排除
hexo升级到5.4引发BUG
next7.8的目录跳转功能失效:参考该commit修改文件即可
阅读全文失效:严格按照<!-- more -->
分割,之前的版本中格式比较随意也能兼容,5.4不行。
Mathjax配置好但不渲染
主题_config中vendors下的mathjax误添加了enable字段,删掉留空即可。