© 2014 Steve Francia
Hugoのビルド時に特定の項目をRSSから除外する
まずそもそも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 in
をin
にしたりすると、その条件に一致するタイプのものだけをRSSの候補として上げることが出来ます
ちなみにタイプ(Type)についてですが
(記事のフロントマターに定義されている))layout属性が"single"の場合はpage
となります
通常の記事であればセクション名(example.com/hoge/1970-01-01/の"hoge"のとこ)になります
あとは普通にいつものようにビルドすれば、カスタムしたrss.xmlが自動的に適用されて、先程指定した条件のものが除外された状態でXMLファイルが出力されるようになります!めでたしめでたし
参考
whereの使い方は公式が結構分かりやすいです