自從使用了hexo
,就一直在折騰。沒辦法,強迫症做怪。
其實一直以來我都有個問題,即究竟用什麼來做爲permalink
?這是一個糾結狂的我糾結了很久的問題。
hexo默認提供的方案是使用年/月/日/標題
,這簡直反人類啊,由於有的時候我天天可能發表好幾篇博文,因此後面的標題不能去掉。
那就把前面去掉吧。
因此這就是我一直以來使用的方式。
還有一個是使用id,但此id非彼id,每次從新生成都會變化,及其不利於seo,還有多說的thread-key也不行。
但我是一箇中國人,寫博客的標題也是中文,中文的網址給我帶來了許多麻煩,可是沒辦法,實在是忙,就等着看看別人作好的插件拿來用用。
然而一直沒有等到滿意的。
昨天上谷歌和百度看了下,中文的連接權重特別低。
看來不能再等了,咬牙本身寫個吧!node
其實在hexo的插件庫裏面仍是有一個和個人需求比較搭邊的,那就是hexo-uuid,可和個人需求仍是有必定的差距。
首先他hook的地方是new
這個事件,也就意味着我必須在命令行中執行git
hexo new title
才能得到這個uuid,而對我來講,我歷來都不是在這裏建立文章的,我通常都是本身建個md文件,而後直接開寫了。
因此這個東西我也是用不了啊。
並且看他寫代碼的水平不差,可是對hexo的瞭解太少,真是惋惜。不然我就不用本身動手了。github
既然得本身開發了,天然得打造一個完美符合我需求的。npm
全自動生成惟一鏈接api
重複生成不會覆蓋bash
儘可能短小精悍hexo
持久保存可供修改post
不引用外部模塊ui
自動翻譯標題爲英文,而後做爲連接。
使用googleapi,而後獲取對應的英文,做爲文章的一個屬性保存在front-matter中。
可是因爲gfw,我這無法訪問google,因此很蛋疼。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。