2014年11月28日金曜日

Rails でサイトマップ目的のRSSフィードを配信する

概要

GoogleがXMLサイトマップとRSSの両方を送信することを推奨しているようなので、XMLサイトマップと追加でRSSを設定するようにしました。
RSSをwebマスターツールに登録するにあたって、当然のことながらRSS自体を配信できるようにします。

実装

rss配信用のcontrollerを作成するような設計にしました。
そこから、商品であったりブログであったりのRSSを生成していくことを想定しています。

routes.rd

resources :rss, :only => [:index] do
    member do
      get "blog"
    end
  end

rss_controller.rd

# -*- encoding : utf-8 -*-
class RssController < ApplicationController


  def blog

    start_id = params[:id].to_i
    @blogs = Blog.order('updated_at desc')
    @blogs = @blogs.where('id >= ? AND id < ?', start_id, start_id + 500)

  end

end
最大で、500件づつ区切って指定することを想定しています。

blog.rss.builder

xml.instruct! :xml, :version => "1.0"
xml.rss("version" => "2.0", "xmlns:dc" => "http://purl.org/dc/elements/1.1/") do
  xml.channel do
    xml.title 'ブログRSSテスト'
    xml.link 'http://www.sample.com/blogs'
    xml.description "新着ブログのお知らせ"
    xml.language "ja-jp"
    xml.ttl "40"

    @blogs.each do |blog|
      xml.item do
        xml.title blog.title
        xml.description blog.description if blog.description.presents?
        xml.pubDate blog.updated_at.in_time_zone("Asia/Tokyo").to_s(:rfc822)
        xml.guid blog_url(blog.code)
        xml.link blog_url(blog.code)
      end
    end
  end
end
実装は、というような感じです。

webマスターツールへの設定

あとは、webマスターツール > サイトマップ画面 > [サイトマップの追加/テスト] ボタンをクリックして以下のようにURLを指定します。
rss/1/blog.rss
rss/500/blog.rss
rss/1000/blog.rss

0 件のコメント:

コメントを投稿

statistics

Arsip