hexo-abbrlink介绍

最新动态

  1. abbrlink更新1.0.4说明
  2. abbrlink更新2.0.0说明
  3. abbrlink更新2.0.4说明

需求

自从使用了hexo,就一直在折腾。没办法,强迫症作怪。
其实一直以来我都有个问题,即究竟用什么来作为permalink?这是一个纠结狂的我纠结了好久的问题。
hexo默认提供的方案是使用年/月/日/标题,这简直反人类啊,因为有的时候我每天可能发表好几篇博文,所以后面的标题不能去掉。
那就把前面去掉吧。 所以这就是我一直以来使用的方式。 还有一个是使用id,但此id非彼id,每次重新生成都会变化,及其不利于seo,还有多说的thread-key也不行。 但我是一个中国人,写博客的标题也是中文,中文的网址给我带来了许多麻烦,但是没办法,实在是忙,就等着看看别人做好的插件拿来用用。
然而一直没有等到满意的。 昨天上谷歌和百度看了下,中文的链接权重特别低。
看来不能再等了,咬牙自己写个吧!

启发

其实在hexo的插件库里面还是有一个和我的需求比较搭边的,那就是hexo-uuid,可和我的需求还是有一定的差距。
首先他hook的地方是new这个事件,也就意味着我必须在命令行中执行

hexo new title

才能获得这个uuid,而对我来说,我从来都不是在这里创建文章的,我一般都是自己建个md文件,然后直接开写了。 所以这个东西我也是用不了啊。
而且看他写代码的水平不差,但是对hexo的了解太少,真是可惜。否则我就不用自己动手了。

方案

既然得自己开发了,自然得打造一个完美符合我需求的。

  1. 全自动生成唯一连接
  2. 重复生成不会覆盖
  3. 尽量短小精悍
  4. 持久保存可供修改
  5. 不引用外部模块

第一套方案

自动翻译标题为英文,然后作为链接。 使用googleapi,然后获取对应的英文,作为文章的一个属性保存在front-matter中。 但是由于gfw,我这没法访问google,所以很蛋疼。

第二套方案

转化全部汉字为拼音,然后用-连接起来。 这个问题就在于转换过之后实在太长了,难以让我忍受。 所以也是果断放弃了。

最终方案

标题+时间进行md5然后再转base64,保存在front-matter中。

实现

经过了数次重构,终于把代码写的比较简洁了。 首先是注册before_post_render钩子,然后取出来abbrlink这个属性看是否存在,存在的就不管了,否则就生成连接。 其中使用了nodejs自带的crypto模块来获取md5校验值,用hexo-front-matter来转换front-matter,然后用hexo-fs来保存文件。

安装

npm install hexo-abbrlink --save

使用

打开config.yml,修改permalink中类似这样

permalink: posts/:abbrlink/

其中:abbrlink代表连接地址。

##源码

github

反馈

请在本文下留言或者github。

版权说明

本页地址为 https://post.zz173.com/detail/hexo-abbrlink.html,本文作者为落月
本文采用 署名-相同方式共享 3.0 中国大陆许可协议 ,分享、演绎需署名且使用相同方式共享。转载请务必保留本页网址和作者信息,否则即为侵权。

– EOF –