Razl-Dazl

eyecatch
© 2014 Steve Francia

Hugoのビルド時に特定の項目をRSSから除外する

Posted at — 2023-07-22

まずそもそもHugoで作ったサイトがRSSに対応しているのを今まで知らなかったんですけど(ぉ)

動作確認してみたら、リダイレクト用ページとかまで含まれてしまっていたのでビルド時に除外するよう細工しました


まずは/layoutの下にrss.xmlを作成して中にHugoのテンプレートをコピペします

このうちindex.xml内の項目と対応するのは5行目の{{- $pages = $pctx.RegularPages -}}になります

例えば以下のように書き換えます

{{- $list := slice "page" "diary" -}}
{{- $pages = where $pctx.RegularPages "Type" "not in" $list -}}

1行目はsliceを利用して除外するタイプのリストを作成しています

ここの項目を増やしていけば条件を増やすことが出来ます

slice "dog" "cat" "human"みたいに増やして書くだけでおkです

2行目で、ページ一覧に対し除外項目でフィルターをかけてます

ここでnot ininにしたりすると、その条件に一致するタイプのものだけをRSSの候補として上げることが出来ます

ちなみにタイプ(Type)についてですが

(記事のフロントマターに定義されている))layout属性が"single"の場合はpageとなります 通常の記事であればセクション名(example.com/hoge/1970-01-01/の"hoge"のとこ)になります

あとは普通にいつものようにビルドすれば、カスタムしたrss.xmlが自動的に適用されて、先程指定した条件のものが除外された状態でXMLファイルが出力されるようになります!めでたしめでたし


参考

whereの使い方は公式が結構分かりやすいです

Author@zakuro

Mastodon: 396@vivaldi.net