hugo 最後編輯日期&內容

src: [pixabay](https://pixabay.com/photos/office-startup-business-home-office-594132/)

src: pixabay

在文章中加入最後編輯日期及內容,輕鬆留下麵包屑!

✏️本文最後更新於 2023-08-20:文章加入手寫字卡、資料夾更名(ac3b0ec)

寫在前面

利用hugo來寫部落格有一個好處是,因為所有的更新是基於git來作版本管控,所以任何的更新都會留下commit紀錄。(只要每次更新都有確實寫好commit log的話)

有時候文章發佈後偶爾會有想要修改的打算,可能是文章內容修改、更換圖片、或是分類改動調整…etc。

這篇文章教你抓取最後一次的commit log,如此每次build時都會把最近一次的更新日期跟內容顯示在網站上,讓讀者與作者可以知道做了甚麼改動。

那麼,我們開始吧

前置條件

根據官網說明1,我們要啟用.GitInfo需要先滿足3個條件:

  1. Hugo 網站必須在git-enable的資料夾,換句話說,專案目錄裡不能有.ignore檔案。
  2. 系統中必須要安裝git,並將git加入環境變數的path中。
  3. config.yml檔案中必須要啟用加入enableGitInfo: true參數。

步驟說明

  1. config.yml檔案中,加入enableGitInfo: true參數。 根據官網說明2,如此將會啟用每個頁面的.GitInfo物件,並可以更新Lastmod參數。
  2. 同樣在config.yml檔案裡,找到params段落,加入GitHubUser參數。例如:
     baseURL: https://yoursite.example.com/
     params:
         AuthorName: Jon Doe
         GitHubUser: your github user id
     ...
    
  3. 同樣在config.yml檔案裡,找到frontmatter段落,加入lastmod參數。例如:
     frontmatter:
         date:
         - date
         - publishDate
         - lastmod
         lastmod:
         - :git
         - lastmod
         - date
         - publishDate
     ...
    
    lastmod下面的參數決定了最後編輯資訊的抓取順序:
    • gitlog →
    • 每篇文章的lastmod參數(如果有設定的話) →
    • 每篇文章最上面的date參數 →
    • 每篇文章的發佈日期。
  4. 一旦設定好config.yml以後,我們找到single.html檔案,客製化自己想要顯示的訊息&顯示在哪裡。提供我的寫法如下:
    (從參考資料 中修改而來)
    {{ $date := .Date.Format "2006-01-02" }} 
    {{ $lastmod := .Lastmod.Format "2006-01-02" }}
    {{- if $lastmod }}
    <p style="color: gray; border-bottom: dashed 1px gray;width: fit-content;margin-bottom: 1rem;">
    ️本文最後更新於 {{ $lastmod }}{{ with .GitInfo }}{{ .Subject }}({{ .AbbreviatedHash }}){{ end }}
    </p>
    {{- end }}
    
  5. 成果截圖:
    可以看到不僅加入了最後更新的時間,還有更新的資訊、以及hash值。

參考資料

  1. Adding Last Modified Git Status to Pages?
  2. Question about implemenattion

附錄

👇本文關鍵字

👇更多同分類文章


這篇文章到這裡結束囉!

如果覺得有點意思,不妨留個言跟我交流吧❤️
See you in the next post.

google adsense廣告區塊說明
真的很希望能給大家乾淨的閱讀空間,無奈小弟我也是有點經濟壓力,放在這裡是我能想到最不影響閱讀體驗的地方了
如果您願意「免費」給小弟一點支持,讓我可以繼續追尋運動員之路,希望可以動動手指點擊上面的廣告,感激不盡!
(點擊一次我約可以得到0.01美元,但必須累積到100美元才可以真的領出來@@)



留言 0
您的留言是我持續寫文的動力~~