Hexo的NexT主题可以天然支持友链,即在NexT主题的配置文件_config.yml中有一个# Blog rolls块,可以添加友链,然后在左边栏的底端会显示它们。但这样的问题在于边栏的空间有限,友链比较多的话会影响布局,而且分散主题。于是考虑单独创建一个友链页面,搜索发现已经有成型的方案,大体思路与 # Hexo添加自定义分类菜单项并定制页面布局 一样,增加菜单项和友链模版,再修改主页模板。这样做可以解决问题,但是不够优雅,属于侵入式的定制(直接修改了主题文件模板),但绝大多数人都采用了这种方案 :-)。
可行方案选择
经过思考发现大概有几个方案:
1.直接使用NexT主题的Blog roll
2.定制友情链接模版
3.在markdown中内嵌友链css和html
第一种方案简单粗暴,但扩展性差;第二种方案能达到目的,但实现步骤繁琐,另外以后升级NexT主题就麻烦了,大概率需要手动merge代码,因为修改了NexT主题的模版文件;最后一种方案非常完美,非侵入式实现,不动源码,只改配置文件,扩展方便,copy一段html即可新增友链,唯一的缺点就是需要内嵌一段css,稍显丑陋。
在采用这种方法之前还走过一点弯路,考虑直接做一个不被渲染的HTML(利用 skip_render)放到source文件夹中,但发现这样做会丢失页面框架,与其他页面风格不一致。
新建一个post
在source文件夹下建一个文件夹links,里面放一个文件index.md,即友链页面:
其实就是一段css再接上几个div,以后每加一个友链,只需要复制如下一段即可:
之后在每次hexo g时,就会生成一个links/index.html文件。同时由于它不在source/_posts文件中,hexo不会把它当成一篇新博客加入首页。
增加菜单项
在NexT主题的配置文件_config.yml中找到menu部分,加一行即可:
...
menu:
tags: /tags/ || tags
categories: /categories/ || th
...
Links: /links/ || link
...