在jekyll blog加入新tag

あけまして おめでとう!新年快樂(撒花)
隨著blog內的文章越來越多,我們可能需要為文章加上新的分類(categories)或標籤(tags)。2019年後我們將開始從ruby深入研究至rials,在此以加入新標籤rails作為範例。

以分類的個人習慣而言,我偏好tags這個名稱而非categories,因為一篇文章可能包含多於一個tags,無法硬性規定於某個唯一的分類categories。

例如我自己在2018-08-25的這篇文章在Github用Jekyll創建屬於你自己的blog,內容談到了Jekyll與基本的git用法,因此我在這篇文章的屬性裡同時加入了jekyllgit兩種tags。


重點摘要:


Step 1: 在config.yml定義collections

首先,為了確保彈性,我們在config.yml檔內就以tag為名,並將output設定為true,目的是將在各個獨立的tags下,列出所有的包含此tags的文章的功能打開:

路徑:/config.yml

collections:
  tag:
    output: true

Step 2. 將篩選出tags的語法加入layout

1. 讓每個 tags 都成為一個連結

路徑:/_layouts/post.html:

我們可以把page.tags | sort看做成SQL語法的排序功能,並指定變數sortedTags

` 的for迴圈內,將此tag的blog md檔都放置於/tag/`路徑下。

我們在瀏覽完某篇網路文章時,通常會看到底下有推薦你可能也喜歡的其他文章的連結。這個功能的邏輯是列出同一tag下,除了本篇文章以外的其他文章(功能寫在unless - endunless內)。

在此我們設定列出相關文章為4篇:當relatedCount == 4,跳出if迴圈

路徑:/_layouts/post.html:

Step 3. 在各blog的md檔加入新tags

layout設定好了,接著我們去單篇文章的front-matter內,依照該文章的內容列出符合其敘述的tags屬性。例如剛剛舉例提到2018-08-25的這篇文章在Github用Jekyll創建屬於你自己的blog,我設定了兩個tags。

title:  "在Github用Jekyll創建屬於你自己的blog"
preview: "Build your own blog by Jekyll"
permalink: "/articles/2018-08-25-github_jekyll_blog"
date:   2018-08-25 12:23:00
layout: post
tags: 
  - "jekyll"
  - "git"

Step 4. 在各個獨立的tags下,列出所有的包含此tags的所有文章

在此我採用靜態設定的方式,在每個``資料夾下都創建index.html檔。所以資料夾內容看起來可能是長這樣的:

|---/_site     #render後所產生之檔案,皆位於此處
|    |--index.html
|    |--/articles      #permalink 文章永久連結
|    |--/page2      #pagenation Page2 post集合
|    |--/page3      #pagenation Page3 post集合
|    |--/page4      #pagenation Page4 post集合
|
|    |--/tag        #標籤分類資料夾
|       |--/jekyll #含jekyll標籤下的post集合
|       |--|-- index.html
|       |--/git    #含git標籤下的post集合
|       |--|-- index.html

舉例而言,如果tag分類是jekyll,title設定為jekyll:

路徑:/_site/tag/jekyll/index.html

layout: default
title: jekyll

在各個獨立的tags下,用for迴圈列出所有的包含此tags的所有文章:

Step 5. 在網站選單上加上每個tag的連結路徑

最後我們在放置選單的側邊欄sidebar加上各個連結路徑的集合。大功告成!

路徑:/_site/index.html

<nav class="sidebar-nav">
    <a class="sidebar-nav-item" href="/blog/">Home</a>
    <a class="sidebar-nav-item" href="/blog/tag/interview/">。Interview: Ruby 精選面試題</a>
    <a class="sidebar-nav-item" href="/blog/tag/rails/">。Rails: 動態功能</a>
    <a class="sidebar-nav-item" href="/blog/tag/rubygem/">。RubyGem: 套件研究</a> 
    <a class="sidebar-nav-item" href="/blog/tag/jekyll">。Blog: Jekyll 靜態網誌</a>
    <a class="sidebar-nav-item" href="/blog/tag/heroku/">。Deployment: Heroku 發佈</a>
    <a class="sidebar-nav-item" href="/blog/tag/git/">。Git: 版本控制</a>  
...
</nav>

看到文章整整齊齊地被收納在不同tags下,寫blog文章的動力就更加旺盛了!XD

https://ithelp.ithome.com.tw/upload/images/20190117/20111177EeHGTAREKx.png

Ref: