赤色娱乐

文章内链的研究...

经过几天年努力,算是把文章内链搞定了,其过程,听者流泪闻者伤心,因为完全不懂nodejs所以寸步难行。这折腾的过程,我也是醉的不行不行的…

对于文章内链的执念来自wordpress,因为可以很美观并可自定义的展示网站其它文章链接,就这点就足以吸引我去折腾。当然,点赞和文章浏览次数也是。那时为了点赞也是折腾了N长时间,其实在我完成点赞后,发现基本上就是把刷新变成了点击增加而已,最多就是cookie存下当前的状态。当然一开始的思路是正确的,然后不断调整。完成后,除了成就感,还是成就感。{:坏笑:}

而文章内链让我对nodejs又有了些认识,当然我所指的认识也只是了解了最最基本的一些东西。对nodejs不懂,很多都不知道该怎么进行。


一开始,尝试使用replace过滤文章的html标签,为此还想了很多办法去进行。结果一弄就报错。TypeError: Cannot read property 'parent' of undefined以及ReferenceError: replace is not defined等。这也是我唯一可以看懂的地方了。

首先,在做之前开始构思,一开始的想法是在主题里进行对文章的循环来达到文章内链的目的,的确可以循环出所有文章链接,但却不知道该怎么对文章里的链接进行匹配。弄了一段时间,发现这个方法对于我来说,似乎并不是很好的可行方法。但我并没有因此而觉得无法实现,就去网上找相关文章,最后无果。经过一两天,没实现这个功能还是觉得很不爽,于是就继续在网上搜索,在google上偶然间发现了,可以使用标签{`% post_link slug [title] %}`我简单的试了下,在不输入[title]的情况下,可以直接获取文章的标题。

这又重燃我的信心,开始寻找post_link这个文件,并尝试修改,在这个文件里发现到有一个post.title我就试着,post.content,结果还真输入了对应文章。无疑这是令人兴奋的。

于是折腾就此展开。一开始的难题就是,过滤html标签,限制文字字数。有难度,虽然hexo有自己的限制函数,可无法直接使用。苦恼,开始找原因,发现需要调用,var util = require('hexo-util');于是调用,再使用对应的函数,立即解决问题。于是如法炮制,因为时间post.date获取后是unix时间戳(单位毫秒),于是使用moment.js(hexo同样已经集成var moment = require('moment');)把时间成功转换。

最后成功了,样式调整好,成就感溢于言表,最后觉得太单调,又无图无真相,就开始研究如何获取文章内第一张图的src。因为无法直接使用replacematch就很难正则匹配,弄了半天也弄不出个所以然。

于是经过一些尝试以及去网上询问,才知道cherrio,看到这个等于发现了新大陆,而hexo是集成了cherrio的,可以在nodejs里使用简单的jquery。这让我很兴奋啊。于是最终完成了文章内图片的获取和判断。


过程是困难的,结果是令人满意的。经过努力已经把hexo clean之后出错或获取不到文章内容的问题解决啦,目前近乎完美。也不想多折腾了,感觉不错。嘿嘿!~{:扶眼镜:},就此,hexo的折腾至此结束。不再折腾啦!~

最后的折腾…并把以下东西整了下,这次真结束了,不再弄了,- -。要好好写博客了…

  • 修复一些样式问题
  • 删除分类链接,移除分类页面(懒得折腾
    • 同时删除标签页,归档页
  • 删除搜索里的上述链接
  • 代码框的样式问题
  • 手机站内链接的多行样式

扫码关注公众号或点下方按钮,分享此文章