快轉到主要內容

自訂Hugo的RSS訂閱,過濾特定文章不讓其出現在RSS列表

資訊科技 Hugo網站架設 Hugo RSS Feed
🗓️ 民國112年 癸卯年
✍ 切換正體/簡體字
目錄

想要訂閱Hugo靜態網站更新,除了依賴第三方提供的Email電子報服務,就是使用RSS feed這個古老的手段了。儘管現在已經越來越少人用,但RSS仍然是那些不想被搜尋引擎與演算法決定觀看內容的選擇。

Hugo內建支援RSS,大多主題也支援RSS。Hugo生成的RSS通常位於網站根目錄下的rss.xml檔案內。如果想要讓人訂閱RSS,就提供網址給讀者就行了。

例如在RSS閱讀器Fluent Reader輸入:http://ivonblog.com/rss.xmlhttps://ivonblog.com/index.xml即可訂閱本站的RSS Feed,並收到新文章的通知。如果開啟全文收錄的話,甚至不用跳轉到本站也可以閱讀文章。

不過,RSS的問題在於它會將每一篇文章收錄進去,這代表不管我發什麼都會被人看光光 —— 比方說那些我刻意從首頁隱藏的敏感文章,一般從搜尋引擎進來的讀者不容易找到,可是訂閱RSS的就會被敏感文章轟炸。

儘管上面說現在比較少人用RSS,但我還是要考量到想單純看較為「乾淨」內容的RSS訂閱讀者,為此決定修改RSS的內容,過濾掉特定分類的文章。

1. 修改RSS範本
#

Hugo預設的RSS範本可在 Github找到。要覆寫內建RSS的話,就是在網站根目錄新建layouts/_default/目錄,再新增rss.xml檔案,將預設的RSS範本內容填進去後再開始修改。

參考 Hugo文件了解RSS檔案的讀取順序,預設是layouts/index.rss.xml優先,接著才是layouts/home.rss.xml

這裡要注意:有些網站主題會使用自己的RSS範本,例如我的MemE主題是使用index.sectionsrss.xml來產生RSS (通常在config.toml也會有RSS的相關設定)

那麼就要改成修改這個檔案。將位於網站根目錄下的themes/meme/layouts/index.sectionsrss.xml複製到/layouts/index.sectionsrss.xml,再修改這個檔案。

開啟RSS.xml的檔案內容,找到這一段

{{ range $pages }}
{{ $page := . }}
{{- $author := partial "utils/author.html" $page -}}
<item>

這一段就可以寫判斷式來過濾產生的RSS內容了。我的過濾方式:讀取文章的frontmatter裡面的categories陣列,讀取第一個值,如果是要過濾的文章類別,那麼就跳過寫入RSS。

<item>的上方加入if判斷式,當文章的分類不是deepdark的時候才寫入RSS。不過如果你有限定RSS是抓取最新10篇文章的話,此方法會導致該文章直接被鬼隱,導致產生的RSS不滿10篇。

{{ if ne (index (.Params.categories) 0 ) "deepdark" }}

然後在</item>下方加入end

</item>
{{ end }}

2. 確認成果
#

  1. 本機預覽,開啟http://localhost:1313/rss.xml,使用CTRL+F搜尋文章看是否已經成功過濾
hugo server -D
  1. 保險起見,生成靜態HTML
hugo
  1. 再開啟public/rss.xml查看內容是否已經正確過濾。

參考資料
#

相關文章

從Snap Store安裝Hugo靜態網頁生成器
資訊科技 Hugo網站架設 Snap Hugo
將suckless.org極簡網頁設計哲學付諸實現,Hugo新增自訂單一HTML頁面
資訊科技 Hugo網站架設 Hugo
如何修改自訂Hugo主題:程式碼覆寫(override)
資訊科技 Hugo網站架設 Hugo Theme

留言板

此處提供二種留言板。點選按鈕,選擇您覺得方便的留言板。要討論程式碼請用Giscus,匿名討論請用Disqus。

這是Giscus留言板,需要Github帳號才能留言。支援markdown語法,若要上傳圖片請貼Imgur連結。您的留言會在Github Discussions向所有人公開。

這是Disqus留言板,您可能會看到Disqus強制投放的廣告。有時留言可能會被系統判定需審核,導致延遲顯示,請見諒。