nanocでsitemapを自動生成する

nanocについては以前書いていた記事が2012/1/24なので3年ぶり?でしょうか。
そもそも色々忙しすぎてこのサイト自体更新してないわけですが、最近は多少時間が取れるようになってhttp://linuxc.infoを更新を少しづつしています。
そしてふとgoogle webmaster toolを入れてsitemapが必要らしいので調べるとnanocで自動生成出来るとの事で早速試してみました。

builder

gemでbuilderが必要なのでインストールしてください。

helperのXMLSitemapを使用する

nanocにはhelperという追加の機能があります。
またnanoc自体がデフォルトで幾つかのhelperを持っていますが、XMLSitemapはこのデフォルトのhelperです。

lib/default.rbに以下を追加します。

include Nanoc3::Helpers::XMLSitemap
URLの設定

config.yamlにURLを追加します。nanocはURL自体は知らなくても問題ないですがsitemapを作る場合には必要です。
自分の場合はhttp://linuxc.infoにします。
この時注意事項として最後のスラッシュ'/'は必要ありません。あっても問題ないですがsitemapに http://linuxc.info//startup/ となってちょっとださいです。

config.yaml

base_url: http://linuxc.info
content/sitemap.xml

content/sitemap.xmlを作ります。この内容をそのままコピペで。

<%= xml_sitemap :items => @items.reject{ |i| i[:is_hidden] || i.binary? } %>
Rules

Rulesにsitemapを作るルールを追加します。
どうも既存のcompile、routeよりも前に追加する必要があるようです。

Rules

compile 'sitemap' do
    filter :erb
end

route 'sitemap' do
    item.identifier.chop + '.xml'
end
compile

あとはいつもの様にcompileしてエラーがでなければOK。
作成されたsitemapをアップロードしましょう。
ちなみに、content以下には存在しているけど公開していないコンテントがあれば、これもsitemapに追加されるので注意!
output/sitemap.xmlを自分で編集して削除するのを忘れずに。