初始配置
Next主题的一般性配置,参考NexT 使用文档。其“开始使用”、“主题配置”、"第三方服务"这三个版块的内容,基本上涵盖了所有必要的元素。
附加功能
添加文章版权声明
打开主题配置文件(/themes/next/_config.yml
),找到creative_commons
标签,将post
属性值改为true
:
creative_commons:
license: by-nc-sa
sidebar: false
post: true
language:
配置完后,重启服务 ,效果如图:
添加“阅读全文”按钮
设置首页文章以摘要形式显示,打开主题配置文件(/themes/next/_config.yml
),找到auto_excerpt
标签,进行如下修改:
auto_excerpt:
enable: true
length: 150
其中length代表显示摘要的截取字符长度。
设置favicon图标
- 选择一个favicon制作网站完成制作,例如:比特虫 ,制作一个16*16和一个32*32的;
- 两个不同尺寸大小的文件,重命名为favicon-16x16-next.png和favicon-32x32-next.png;
- 将重命名的两个图片文件放到博客目录下的
themes/next/source/images
中(覆盖原来的两个默认的)
重启服务,效果如图:
添加文章阅读量统计&评论功能
参考Hexo博客Next主题添加统计文章阅读量功能配置LeanCloud端。
设置valine评论框,打开主题配置文件(/themes/next/_config.yml
),找到valine
标签,进行如下修改:
valine:
enable: true # When enable is set to be true, leancloud_visitors is recommended to be closed for the re-initialization problem within different leancloud adk version.
appid: # your leancloud application appid
appkey: # your leancloud application appkey
notify: false # mail notifier, See: https://github.com/xCss/Valine/wiki
verify: false # Verification code
placeholder: ヾノ≧∀≦)o来啊,快活啊! # comment box placeholder
avatar: mm # gravatar style
guest_info: nick,mail,link # custom comment header
pageSize: 10 # pagination size
language: # language, available values: en, zh-cn
visitor: true # leancloud-counter-security is not supported for now. When visitor is set to be true, appid and appkey are recommended to be the same as leancloud_visitors' for counter compatibility. Article reading statistic https://valine.js.org/visitor.html
comment_count: true # if false, comment count will only be displayed in post page, not in home page
其中appid
,appkey
属性填入LeanCloud应用的app-id与app-key。visitor
选项若设置为true
,则leancloud_visitors
标签可以不用配置。
另外建议将自带的CDN改成第三方CDN,提高加载速度。
文件目录:next/layout/_third-party/comments/valine.swig
,将//unpkg.com/valine/dist/Valine.min.js
改为//cdn.jsdelivr.net/npm/valine/dist/Valine.min.js
,还可以去该网址下载js文件,valine.swig
中的地址可指向本地。
设置valine评论区头像
注册gravatar账号,上传头像,实现邮箱账号和头像的映射关系。
若收不到确认邮件,并且在垃圾箱也未找到的话,有可能是直接被拦截,QQ邮箱查看被拦截邮件以及添加到白名单的方法为:QQ邮箱-->右键,收信查询-->查看被系统拦截的邮件-->添加到白名单。
注意头像生效所花的时间可能比较长,属于正常情况。
取消分类、标签等页面的评论框
如果有集成评论服务,每个页面都会带有评论。 若需要关闭的话,添加字段 comments
并将值设置为 false
,禁用评论示例如下:
title: 标签
date: 2014-12-22 12:39:04
type: "tags"
comments: false
添加字数统计与阅读时长
(1)打开博客目录,运行git bush
,安装插件
$ npm install hexo-symbols-count-time --save
(2)修改博客配置文件,添加以下代码
symbols_count_time:
symbols: true
time: true
total_symbols: true
total_time: true
(3)修改主题配置文件,找到标签symbols_count_time
,进行如下修改
symbols_count_time:
separated_meta: true
item_text_post: true
item_text_total: true
awl: 4
wpm: 275
(4)重启服务
添加网站访问量
利用busuanzi统计访问量,打开主题配置文件/theme/next/_config.yml
,进行如下修改,便可以看到页脚出现访问量:
busuanzi_count:
enable: true
total_visitors: true
total_visitors_icon: user
total_views: true
total_views_icon: eye
post_views: false
post_views_icon: eye
busuanzi与valine都具有统计阅读次数的功能,若把标签valine
下的visitor
属性设置为true
的话,这里的post_views
参数值应修改为false
。
修改文章底部带#号的标签
将 # 换成标签图标。
[NexT 7.1.0 Released]修改方法为:
打开模板/themes/next/layout/_macro/post.swig
,搜索 rel="tag"
,进行如下修改:
[NexT 7.2.0 Released]修改方法为:
修改主题配置文件,找到标签tag_icon
,进行如下修改:
# Use icon instead of the symblo # to indicate the tag at the bottom of the post
tag_icon: true
定制化css样式
若想自己设置css样式,可添加在/theme/next/source/css/_custom/custom.styl
下,如:
// Custom styles.
ul{
margin-top: -15px;
margin-bottom: 10px;
}
ol{
margin-top: -5px;
}
figure.highlight.java{
margin-top: -15px;
margin-bottom: 10px;
}
table{
margin-bottom: 10px;
}
设置文章英文链接
hexo生成的默认文章链接格式为: :year/:month/:day/:title/
,这种默认的配置缺点很明显,当文件名是中文的时候url链接里就有中文出现。
可以通过添加urlname
字段实现文章的链接为英文,在md文件的Front-matter区域新增urlname
属性,值为文章的英文title,参考如下:
---
title: 基于Hexo+Next的主题优化总结
urlname: summary-of-theme-optimization-based-on-hexo&next
date: 2019-07-12 20:01:26
categories:
- 工具
tags:
- Hexo
---
再将博客配置文件下的permalink
值改为:
permalink: :year/:month/:day/:urlname/
设置首页背景图片
在/theme/next/source/css/_custom/custom.styl
中添加如下代码:
// 添加背景图片
body {
background: url(https://source.unsplash.com/random/1600x900?wallpapers);
background-size: cover;
background-repeat: no-repeat;
background-attachment: fixed;
background-position: 50% 50%;
}
// 修改内容区域的透明度
.main-inner {
background: #fff;
opacity: 0.8;
}
// 修改菜单栏透明度
.header-inner {
opacity: 0.8;
}
其中background的url也可写成本地的路径,如background: url(/images/background.jpg);
修改内容区域的宽度
NexT 对于内容的宽度的设定如下:
- 700px,当屏幕宽度 < 1600px
- 900px,当屏幕宽度 >= 1600px
- 移动设备下,宽度自适应
如果你需要修改内容的宽度,同样需要编辑样式文件。 编辑主题的 source/css/_variables/custom.styl
文件,新增变量:
// 修改成你期望的宽度
$content-desktop = 700px
// 当视窗超过 1600px 后的宽度
$content-desktop-large = 900px
此方法不适用于 Pisces Scheme,关于如何修改 Pisces Scheme 的宽度请参看 这个 Issue
ps:我按照这个方法修改...是没有成功的...是在base.styl中修改才成功...
md文档相关
实现文章多级分类
在文章的categories
字段中,写入多个类别,示例如下:
categories:
- 工具
- hexo
“工具”为“hexo”的上一级。
在Markdown中合并单元格
Markdown语法本身不包含复杂表格的插入,但是可以使用html语法来实现。
- 水平单元格的合并:基于colspan属性,即使一个单元格占多列的空间
- 纵向单元格的合并:基于rowspan属性,即使一个单元格占多行的空间
先在word或excel中把表格做好,然后复制到No-Cruft Excel to HTML Table Converter转化为标记对形式,最后删除空标记对,并设置colspan和rowspan属性即可。
如下所示:
用于定义数据类型的关键字
class
interface
byte
short
int
long
注意,通过html插入表格,可能浏览器页面中会出现过多空白的情况,解决方法是在表格前加上{% raw %}
,表格后加上{% endraw %}
。
其实通过Html语言可以使页面显示出很多Markdown语法不支持的功能。
如使字体为红色:
XXX
使字体高亮:
XXX
Markdown转义字符
md中用到的主要可能有语法意义的非空白符号有:\ ` * _ { } [ ] ( ) # + - . !
在正常段落中要原样输出以上符号,一般需要加反斜杠\在前(连续两个反斜杠输出一个反斜杠。)
Markdown首行缩进
在段落开头,输入以下字符,然后紧跟着输入文本即可。
自定义阅读全文
在文章任意想添加的位置添加以下代码即可。
取消“文章目录”对标题的自动编号
修改主题配置文件,找到标签toc
,进行如下修改:
toc:
enable: true
# Automatically add list number to toc.
number: false
# If true, all words will placed on next lines if header width longer then sidebar width.
wrap: false
# If true, all level of TOC in a post will be displayed, rather than the activated part of it.
expand_all: false
# Maximum heading depth of generated toc. You can set it in one post through `toc_max_depth` in Front-matter.
max_depth: 6
踩过的坑
接下来是在配置过程中遇到的问题:
修改不了博客配置文件中的author名
原因:从github上clone的Next主题最新版,不稳定,改为了release版。
执行hexo clean命令报错
报错:FATAL can not read a block mapping entry
原因:配置文件中少写了空格,每一个配置项都是名称+冒号+空格+设置参数组合而成(血的教训...千万注意
社交链接图标中知乎的font awesome图标无法获取
原因:NexT不同版本对应着不同版本的font awesome,下载的NexT版本中所对应的font awesome版本可能没有知乎图标)。
版权声明中本文链接显示错误
链接显示为:http://yoursite.com/2019/03/14/Blog-test/
原因:未修改博客配置文件/ _config.yml
中的url
,需要修改为域名。
执行hexo g
报错
生成文章的时候,报错:
FATAL Something's wrong. Maybe you can find the solution here: http://hexo.io/docs/troubleshooting.html
Template render error: (unknown path) [Line 31, Column 21]
expected variable end
原因:当文章中有}}
时,且这两个括号未被代码块包含,解析会出问题
解决方法:
{% raw %}
含有双大括号的内容
{% endraw %}
主题升级
用Beyond Compare工具将官方的上个版本与自己配置过的主题比较,查看更改的内容,以免遗漏。
待解决
1、由[NexT 7.1.0 Released]升级为[NexT 7.2.0 Released]后每篇文章的本文字数未统计到。
2、图片点击放大效果
3、相关文章功能,参考https://zuiyu1818.cn/posts/NexT_codewidth.html
4、歌单页面,参考https://www.zhangshenghai.com/playlist/
参考资料
1、为 Hexo 主题 next 添加图片背景
2、Next常见问题