建立一个自定义主页的HEXO博客

作为一个程序员没有博客和咸鱼有什么区别?当了3年多咸鱼的我终于翻身了!

一、买域名

本来想去Godaddy买的,结果各种无法支付,最后去了Namecheap买了。

用的是招行信用卡,必须要吐槽的是等我买完了才邮件告诉我账户需要验证,结果第一次支付失败,和客服沟通验证完成后才购买成功。

二、建博客

使用HexoGithub上搭建个人博客,这个网上各种教程都有就不细说了。

三、自定义

网上很多博客的主题可选,我暂时选择的是Yilia,但是买了个域名又不仅仅想做个博客啊,还想希望能放些其他的东西,最起码能放个自定义的首页吧。

先去官网那找找文档,又去网上很多hexo博客逛了一圈,发现大部分首页都是博客的文章,后来发现Vue.js的首页是自定义的,去看源码发现是自己改的主题的模版文件,于是照着改啊改,结果改完发现博客首页不能分页。。。,那我还这么费这么多力气干嘛啊!气死偶咧!

这条路走不通就换个方法,去官网api那东看看西看看,最后终于折腾好了。

1.更改生成目录

在_config.yml的第15、16、20行更改如下:

1
2
3
url: http://jsdoi.com/blog
root: /blog/
public_dir: public/blog

目的就是将博客文件生成到public的子目录blog下。

2.更改部署目录

在 node_modules/hexo-deployer-git/lib/deployer.js 的第19、20行更改如下:

1
2
// var publicDir = this.public_dir; By jsdoi
var publicDir = pathFn.join(baseDir, 'public');

因为部署时使用的是_config.yml里的public_dir,没有提供额外的部署路径配置,只好自己动手了。

3.修复翻页问题

在 node_modules/hexo/lib/plugins/helper/url_for.js 的第8、9行更改如下:

1
2
// path = path || '/'; By jsdoi
path = path || '';

首先声明博客首页为http://jsdoi.com/blog ,网站首页为http://jsdoi.com

博客首页是在子路径/blog/下,但处于非第一页的页面时分页条第一页的链接变成了网址首页,原因是生成博客第一页链接时传的path为null,hexo分页插件将其替换成/,但所有的/又处理成网站首页没有加上根路径/blog/,改成’’后会正确加上根路径,同时path为/的也能正常处理成网站首页。

四、总结

好了,现在自定义文件都在public文件夹里,自动生成的博客文件都在public/blog里,每次hexo g更新博客,hexo d部署public文件夹,基于github的自定义主页的HEXO博客基本告成啦!