2015年2月25日水曜日

Middlemanでちゃんとsitemap.xmlを生成する方法

以前に簡単にMiddlemanでsitemapを動的に生成する方法という記事をエントリーしましたが、
本当に簡単なサイトマップで、priorityが固定だったり、lastmodがなかったりと手抜きな感じのサイトマップだったので、もう少しちゃんとした、sitemap.xmlを生成でるような設定のメモです。

Gemfileの追加

Gemfileに下記を追加して、bundle install

# https://github.com/jimweirich/builder
# sitemap.xml feed.xml
gem 'builder'

sitemap.xml.builderの作成

source/sitemap.xml.builder を下記のように作成します。

拡張子が.htmlのファイルに対してのサイトマップを生成していきます。

xml.instruct!
xml.urlset "xmlns" => "http://www.sitemaps.org/schemas/sitemap/0.9" do
  sitemap.resources.each do |resource|
    xml.url do
      xml.loc "http://example.com#{resource.url}"
      xml.lastmod File.mtime(resource.source_file).strftime('%Y-%m-%d')
      xml.priority (1.1 - resource.url.count("/") * 0.1).round(1).to_s
      xml.changefreq "daily"
    end if resource.destination_path =~ /\.html$/
  end
end

http://example.com部分は、環境に合わせて変更してください。

lastmod

ファイル自体の、最終更新時刻からlastmodを指定しています。

priority

priorityはroot直下の階層が1.0
2階層目が0.9
2階層目が0.8

と階層を追う毎に0.1づつpriorityが下がっていきます。

changefreq

changefreqは、上記の書き方では、daily固定になっています。
上記に合わせて、値を変更してください。

説明
always 毎回内容が更新
hourly 1時間毎に変更
daily 1日毎に変更
weekly 1週間毎に変更
monthly 月毎に変更
yearly 年毎に変更
never 基本変わらないページ

また、urlのpath等をみて、振り分けを行ってもよいと思います。

sitemap.xmlの作成

後は、以下を実行しれば、build/sitemap.xmlが生成されるので確認して、サーバーにアップしてください。

middleman b

0 件のコメント:

コメントを投稿

statistics