給hexo博客添加系列文章功能

給hexo博客添加系列文章功能

給hexo博客添加系列文章功能

前言

因為寫了一堆有關於一、二、三等有關的系列文章,而且這些文章寫得時間又肯不是連續的。所以hexo的上一篇、下一篇文章功能就不能滿足。需要有個系列文章的功能,於是著手實現該需求...

一開始的思路就是模仿分類(categories)和標籤(tags),來創建一個系列(series)來實現。為了弄懂分類和標籤的生成實現原理還跑hexo的github倉庫上看了下源代碼。辛虧是時間不多,用平時的的空閒時間來實現的,所以沒在這條探索HEXO大道的深坑上走的太久。

第二天偶然一次機會讓我發現了hexo的二級分類,會在一級分類下新建一個二級分類的文件夾,所有該二級分類的文章都在這個文件夾下。就想借助這個二級分類來實現系列功能。

嗯…就在我快用二級分類來實現系列文章功能的時候,我發現之前繞了遠路。

之前是想用分類和標籤來遍歷出對應的文章。由於沒有系列這個變量使用了二級分類來代替…但是我們可以通過遍歷文章來顯示出有關的系列文章。這種方法就容易實現很多,而且比用二級分類代替更加合理。

實現

廢話不多說,加下來帶大家來實現。在這裡只介紹用遍歷文章法實現的:

第一步

給hexo博客添加系列文章功能

在改文件裡添加一個series,效果如下:

給hexo博客添加系列文章功能

內容看你自己的主題而定,你只需加個series:就行。

這時候你新建的md文件就都有series:這個項了,我們可以在其中填寫系列名稱。

第二步

在md文章中添加series:的值。如:

給hexo博客添加系列文章功能

第三步

這步才是乾貨,在主題對應渲染文章的模板文件下添加系列文件顯示。

由於博主的主題用的是ejs寫的,以下僅給出ejs的代碼:

給hexo博客添加系列文章功能

解釋:

  • post.series是該篇文章的系列,即第二步中填的值。
  • if (post.series) 如果有值才調用。
  • site.posts.sort(‘date’).map(function(p){ 將本站所有的文章按日期排序並遍歷
  • if (post.series == p.series){ 如果改文章的系列和遍歷文章的系列一樣,則進入
  • ”> 顯示出滿足文章的url路徑和文章標題

到此為止系列文章的需求實現了

最終效果如下:

給hexo博客添加系列文章功能



分享到:


相關文章: