修改Hexo永久链接的默认格式

Hexo 的永久链接的默认格式是 : year/:month/:day/:title/, 比如访问站点下某一篇文章时,其路径是 2018/04/12/xxxx/, 如果我们的文章标题是中文的,那么该路径就会出现中文字符。

在路径中出现了中文字符很容易引发各种问题,而且也不利于seo, 因为路径包含了年月日三个层级,层级太深不利于百度蜘蛛抓取。

解决办法就是利用其它的插件来生成唯一的路径,这样就算我们的文件标题随意修改,而不会导致原本的链接失效而造成站点下存在大量的死链。 安装插件 在站点根目录使用 git bash 执行命令:

1
npm install hexo-abbrlink --save

修改站点配置文件 打开根目录下的 _config.yml 文件,修改如下配置:

1
2
3
4
5
6
# permalink: :year/:month/:day/:title/
# permalink_defaults:
permalink: posts/:abbrlink.html
abbrlink:
alg: crc32 # 算法:crc16(default) and crc32
rep: hex # 进制:dec(default) and hex

这里将页面都添加了 .html 的后缀,用来伪装成静态页面(虽说Hexo的页面本身就是静态页面), 这样可以直接从路径就知道这是个静态页面,方便seo。 接下来重新部署三连,可以看到我们的文章路径变成了 /posts/xxxxx.html,接下来就算我们将文字标题命名为中文也没问题了。

Hexo写文章自动打开Markdown

Hexo中新建一篇博文非常简单,只需要在命令行中键入以下命令然后回车即可:

1
hexo new "The title of your blog"

此后Hexo便会在Hexo的根目录的source文件夹下的_posts目录下自动帮你创建相应的md文件。然后我们打开该目录,找到刚刚Hexo自动生成的文件打开编辑即可。

但是当我们的博文比较多,这样我们就需要在成堆的Markdown文件中找到刚才自动生成的文件,这样做显然是一件比较痛苦的事情。

在访问Hexo的Github项目时,发现有类似的issue,Hexo作者也给出来解决办法,以下为作者原文:

ou can try to listen to the new event. For example:

1
2
3
4
5
6
7
8
9
10
11
var spawn = require('child_process').exec;

// Hexo 2.x
hexo.on('new', function(path){
exec('vi', [path]);
});

// Hexo 3
hexo.on('new', function(data){
exec('vi', [data.path]);
});

根据作者给出的示例,一番折腾过后博主终于在自己的机器上实验成功了,下面给出操作步骤:

  • 首先在Hexo目录下的scripts目录中创建一个JavaScript脚本文件。
  • 如果没有这个scripts目录,则新建一个。
  • scripts目录新建的.JavaScript脚本文件可以任意取名。

通过这个脚本,我们用其来监听hexo new这个动作,并在检测到hexo new之后,执行编辑器打开的命令。

如果你是windows平台的Hexo用户,则将下列内容写入你的脚本:

1
2
3
4
5
6
7
8
9
10
11
var spawn = require('child_process').exec;

// Hexo 2.x 用户复制这段
hexo.on('new', function(path){
spawn('start "markdown编辑器绝对路径.exe" ' + path);
});

// Hexo 3 用户复制这段
hexo.on('new', function(data){
spawn('start "markdown编辑器绝对路径.exe" ' + data.path);
});

如果你是Mac平台Hexo用户,则将下列内容写入你的脚本:

1
2
3
4
5
6
7
8
9
10
var exec = require('child_process').exec;

// Hexo 2.x 用户复制这段
hexo.on('new', function(path){
exec('open -a "markdown编辑器绝对路径.app" ' + path);
});
// Hexo 3 用户复制这段
hexo.on('new', function(data){
exec('open -a "markdown编辑器绝对路径.app" ' + data.path);
});

保存并退出脚本之后,在命令行中键入:

1
hexo new "auto open editor test"

是不是就顺利的自动打开了自动生成的md文件啦~

Enjoy it!