Radiant CMSでAtom Feedを出力する

Radiant CMS


"Radiant CMS"は、「Ruby公式サイト」なんかでも使われているRuby on Rails製のシンプルなコンテンツ管理システム(CMS)です。

Railsの稼動する環境でなら、簡単に稼動させることができ、便利なエクステンションも多数公開されていますので、必要に応じて簡単に機能を追加することができ、非常にフレキシブルな作りとなっています。


最近、その"Radiant CMS"を触る機会があったのですが、そこのニュースコンテンツを"RSSフィード"だけではなく"Atomフィード"でも出力できるようにしたときのメモ。


、、、というか「SKIP公式サイト」のことなんですがね。

以前は"Movable Type"で構築していたサイトを"Radiant CMS"に移行したのですが、MTではRSS FeedとAtom Feedの両方に対応していたのですが、RadiantではデフォルトではRSS Feedしか出力していなかったため、Atom Feedも出力できるよう対応しました。(で、旧フィードURLから新フィードURLにリライトする、と。)

やり方

管理画面にログインした後、右上の「Layouts」タブをクリック、左下にある「New Layout」ボタンをクリックし、以下のような「Atom Feed」のレイアウトを作成します。


https://farm4.static.flickr.com/3137/3147086440_e8480f932d_o.png

一応書いておくと、"Content-Type"の設定は「More」のリンクをクリックすると表示されます。


https://farm4.static.flickr.com/3264/3147086638_936714e8d1_o.png

次、任意の場所に↑のような感じでAtom Feed用のページを作成します。サイトトップ以下に(/atom/)でAtom Feedを出力したい場合は、サイトトッフのページ直下に子として作成します。


https://farm4.static.flickr.com/3119/3147086838_707b1a5434_o.png

ページの中身は、↑のような感じで作成します。"body"の部分は、以下のサンプルのそれっぽい部分を修正してみてください。で、"Layout"の部分で先ほど作成した「Atom Feed」レイアウトを選択します。

<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ja-jp">

  <title type="text">SKIP Atom Feed</title>

  <link rel="self" href="http://www.openskip.org<r:url />" />
  <link rel="alternate" type="text/html" href="http://www.openskip.org/" />

  <id>http://www.openskip.org/</id>
  <generator uri="http://radiantcms.org/" version="0.6.9">Radiant CMS</generator>

  <author>
    <name>SKIP</name>
    <uri>http://www.openskip.org/</uri>
  </author>

  <updated><r:find url="/articles/"><r:children:each limit="1" order="desc"><r:date format="%Y-%m-%dT%H:%M:%SZ" /></r:children:each></r:find></updated>


  <r:find url="/ja/news/">
  <r:children:each limit="10" order="asc">
    <entry>
      <author><name><r:author /></name></author>
      <published><r:date format="%Y-%m-%dT%H:%M:%SZ" /></published>
      <updated><r:date format="%Y-%m-%dT%H:%M:%SZ" /></updated>
      <title><r:title /></title>
      <link rel="alternate" type="text/html" href="http://www.openskip.org<r:url />" />
      <id>http://www.openskip.org/<r:url /></id>
      <content type="html"><r:escape_html><r:content /></r:escape_html></content>
    </entry>
  </r:children:each>
  </r:find>

</feed>

bodyの部分のサンプルです。(SKIP公式サイトで使っているもの、そのままです^^;)
SKIP公式サイトの場合は、上記中段あたりの

<r:find url="/ja/news/">

で指定している通り、「/ja/news/」以下のコンテンツを配信しています。


https://farm4.static.flickr.com/3237/3146254907_6e3df1b62d_o.png

念のため、ですが、Atom FeedのURLは、ページの編集画面で"Page Title"下の"More"リンクをクリックし、"Slug"の部分を修正しましょう。


以上で、指定したURLにて、Atom Feedが出力されているはずです。

元ネタ

ここを参考にさせていただきましたm(_"_)m
というか、日本語化+微修正+説明を補足しただけ、とも言う(^^;)


CMS構築 成功の法則

CMS構築 成功の法則

Web開発者のためのRSS & Atomフィード

Web開発者のためのRSS & Atomフィード