mk-mode BLOG

このブログは自作の自宅サーバに構築した Debian GNU/Linux で運用しています。
PC・サーバ構築等の話題を中心に公開しております。(クローンサイト: GitHub Pages

ブログ開設日2009-01-05
サーバ連続稼働時間
Reading...
Page View 合計
Reading...
今日
Reading...
昨日
Reading...

nanoc - sitemap.xml 生成!

[ ブログ ] [ Ruby, XML, nanoc ]

こんばんは。

Ruby 製の静的 CMS システム nanoc でコンパイル時に sitemap.xml を生成させる方法についての記録です。

sitemap.xml は検索エンジンのクローラ(ボット)にクロールを許可する一覧が記述されている XML ファイルです。人間が見てどうこうするものではありません。

0. 前提条件

  • Ruby 2.1.0-p0 を想定。
  • RubyGems 2.2.1 を想定。
  • nanoc 3.6.7 を想定。
  • Nanoc サイトの URL は http://www.mk-mode.com/nanoc を想定。
    (当方は、ベースは http://www.mk-mode.com とし、サブディレクトリ運用している)
  • sitemap ジェネレータには “Nanoc3::Helpers::XMLSitemap” という nanoc ヘルパを使用する

1. Gem パッケージ builder のインストール

“Nanoc3::Helpers::XMLSitemap” を使用するには builder という Gem パッケージが必要なので、未インストールならインストールする。

1
$ gem install builder

2. ヘルパのインクルード設定

Nanoc::Helpers::XMLSitemap を使うにはインクルードする必要があるので、"lib/default.rb" に以下の記述を追加する。

lib/default.rb
1
include Nanoc3::Helpers::XMLSitemap

3. URL の設定

base_url を設定する必要があるので、設定していなければ “config.yaml” に以下の記述を追加する。

config.yaml
1
base_url: http://www.mk-mode.com

4. アイテムの生成

“sitemap.xml” 用アイテムを生成する。(1行記述するだけなので create_item する程でもないが) (当方はサブディレクトリ運用しているの nanoc/ を付与している)

1
2
3
$ nanoc create_item nanoc/sitemap
      create  content/sitemap.html
An item has been created at /nanoc/sitemap/.

5. アイテムの編集

生成した “sitemap.xml” 用アイテムを以下のように編集する。(当方はサブディレクトリ運用しているの nanoc/ を付与している)
<%= ... %> は eRuby(組み込み Ruby)。隠しファイル、バイナリファイルは除外)

content/nanoc/sitemap.html
1
<%= xml_sitemap :items => @items.reject{ |i| i[:is_hidden] || i.binary? } %>

デフォルトでは各記事に対して loclasdmod タグが生成されるが、各記事ファイル内(yaml 部分)で changefreq(更新間隔) や priority(優先度)を指定していれば、それも反映されるようだ。

6. Rules の編集

“sitemap.html” をコンパイルし “sitemap.xml” を生成するよう、以下のような記述を追加する。
erb は eRuby のこと。また compile, route の順にも注意する。(compile *route * より先に記述)
(当方はサブディレクトリ運用しているの /nanoc/ を付与している)

Rules
1
2
3
4
5
6
7
compile '/nanoc/sitemap' do
  filter :erb
end

route '/nanoc/sitemap' do
  item.identifier.chop + '.xml'
end

7. コンパイル

コンパイルし、エラーが発生しないことを確認する。

1
$ nanoc compile

8. 確認

“output” ディレクトリに “sitemap.xml” が作成されていること、内容が正しいことを確認する。
以下は、当方の “sitemap.xml” の一部。

sitemap.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
  <url>
    <loc>http://www.mk-mode.com/nanoc/</loc>
    <lastmod>2013-04-27</lastmod>
  </url>
  <url>
    <loc>http://www.mk-mode.com/nanoc/archives/</loc>
    <lastmod>2013-04-27</lastmod>
  </url>
  <url>
    <loc>http://www.mk-mode.com/nanoc/2009/01/05/05165522/</loc>
    <lastmod>2014-02-06</lastmod>
  </url>
  <url>
    <loc>http://www.mk-mode.com/nanoc/2009/01/05/05190900/</loc>
    <lastmod>2014-02-06</lastmod>
  </url>

    :

9. 参考サイト


以上。

Comments