hexo人气主题next的使用和一些个性化设置
前言
Hexo有着众多的主题,其中Next就较为出名,目标极简,宗旨设置简单
项目主页
hexo-theme-next
在配置文件中设置使用哪一种风格的Next主题
下载主题
next主题的维护人一直在变
NexT5版本由iissnan发起
1 | username:/path/to/hexo_progjext/themes$ git pull https://github.com/iissnan/hexo-theme-next.git next |
NexT6,7版本由theme-next维护
1 | username:/path/to/hexo_progjext/themes$ git pull https://github.com/theme-next/hexo-theme-next.git next-reload |
目前next8.2发布了
1 | https://github.com/next-theme/hexo-theme-next |
启用主题
站点设置文件中使用
1 | # Extensions |
常用配置
更多菜单
默认的菜单只有一个总入口,缺少category,tag,about等选项.
以如下方式添加
首先配置项目的 _config.yml
文件
1 | menu: |
然后多做几个空白页面(之后会被渲染成html的,现在还是markdown)
source/categories/index.md
1 | --- |
source/tags/index.md
1 | --- |
source/about/index.md
1 | --- |
local search 支持
要实现站内搜索,需要先安装库文件
1 | npm install hexo-generator-searchdb --save |
然后在根配置文件中写
1 | # search |
主题配置文件中可以写
1 | # Local search |
自动断页
需要使用的插件: hexo-excerpt
, npm安装即可
然后在根配置文件中写
1 | # Exceprt |
数学公式支持
next主题的维护者们目前主要采用两种数学公式渲染引擎
- MathJax
- KaTeX
其中 KaTeX
渲染更快,且最近还在更新,官网还给出了详细的支持列表.
数学公式的渲染牵扯到渲染引擎的体系
hexo-renderer-marked
(原生,较慢,不符合标准)hexo-renderer-markdown-it
(支持katex渲染)markdown-it-katex
(作为插件存在,用于调用KaTex
,已经不再维护)@iktakahiro/markdown-it-katex
hexo-renderer-markdown-it-plus
(集成了katex渲染功能,不过已经不再维护)hexo-renderer-markdown-it-katex
(集成了katex渲染功能,已经不再维护)hexo-renderer-pandoc
(支持MathJax渲染)
说明:
KaTeX
并不专门为hexo所写,需要使用 markdown-it-katex
来调用.
而 markdown-it-katex
目前有两个问题
- 已经不再维护,不能兼容最新的
KaTeX
,需要使用@iktakahiro/markdown-it-katex
代替 - 以可选插件形式使用,需要在配置里声明为
hexo-renderer-markdown-it
的插件
而 hexo-renderer-markdown-it
与原生渲染引擎冲突,需要替换之.
1 | npm uninstall hexo-renderer-marked --save |
在根配置中声明插件扩展
1 | # config of hexo-renderer-markdown-it |
在主题配置中启用katex
1 | math: |
OLD 自定义页面宽度等
hexo有两个文件留给用户自定义,分别是
/theme/next/source/css/_custom/custom.styl
theme/next/source/css/_variables/custom.styl
在后者中使用
1 | $main-desktop = 75% // 页面整个内容区的大小 |
以调整页面宽度
OLD 置顶
NexT
在2015年曾经推出过置顶功能,但因种种bug最后取消
喜欢的人可以借助插件自己动手实现
1 | npm uninstall hexo-generator-index --save ;; 移除默认插件 |
此时在 Front-matter
中使用
1 | top: true |
等就能设置指定或者设置指定的优先级,数越大越优先
-
通知读者置顶
原有置顶功能的样式还在,使用
Front-matter
中的sticky
标签即可
将top
替换为sticky
标签:- 将
~/blog/node_modules/hexo-generator-index-pin-top/lib/generator.js
文件中所有top
换成sticky
- 将
OLD 封面图片
此功能建议关闭自动断页功能,手动添加 <!-- more -->
标签决定断页位置
自动断页导致首页置顶的图片无法被显示.
通过修改 blog/themes/next/layout/_macro/post.swig
文件达到目的
1 | {% if is_index %} |
而系统并没有定义两个class: out-img-topic
,=img-topic=.需要自行定义
在 ~/blog/themes/next/source/css/_custom/custom.styl
中加入:
1 | // 摘要图片外框 |
最后编辑有这需求的相关文章时,在 Front-matter
加上:
1 | image: url |
url
即图片的链接地址
即可
使用图片
引用的本地图片可以放在 /source/images
,然后在markdown中引用
OLD 侧边栏中使用音乐插件
侧边栏样式主要由 /hexo/themes/next/layout/_macro/sidebar.swig
文件定义,因此修改这里
1 | {% if theme.custom_file_path.sidebar %} |
在中间加入从网站生成的外链 <iframe></iframe>
,即可使用