Sabel_Rss_Writerクラス を使用すると
RDF, RSS 2.0, Atom 0.3, Atom 1.0 形式のXMLを簡単に出力することができます。出力する形式は、コンストラクタで指定することができます。デフォルトはRSS 2.0形式となります。
$rss = new Sabel_Rss_Writer("RSS");
$rdf = new Sabel_Rss_Writer("RDF");
$atom = new Sabel_Rss_Writer("Atom03");
$atom = new Sabel_Rss_Writer("Atom10");
まずすることはフィード情報として、タイトルや概要をセットすることです。
$rss = new Sabel_Rss_Writer();
$rss->setTitle("feed title");
$rss->setDescription("feed description");
フィードの配信元として、サービスのトップページを指定することが多いと思います。その場合は内部でそれを
自動的にセットしますが、トップページ(インデックス)以外にするには setHome()メソッド を使用してください。
$rss = new Sabel_Rss_Writer();
$rss->setHome("http://www.example.com/myfeed");
setInfo()メソッド に配列を渡して、上記の情報をセットすることも可能です。
$rss = new Sabel_Rss_Writer();
$rss->setInfo(array(
"title" => "feed title",
"description" => "feed description",
"home" => "http://www.example.com/myfeed",
));
さらに setInfo() では言語や最新更新日時、RSS自身のURLをセットすることが可能です。なお、言語はデフォルトで "en" となっており、最新更新日時は最初に追加されたアイテムの日時("date")がデフォルトで使用されます。
※RSS自身のURLはRDFとAtom 1.0形式で出力する際しか使用されません。
$rss = new Sabel_Rss_Writer();
$rss->setInfo(array(
"language" => "ja",
"updated" => "2009-01-01 00:00:00",
"rss" => "http://www.example.com/myfeed/rss.xml",
));
また、画像が扱えるフィード形式用に画像(ロゴ)をセットすることができます。ロゴのURLを指定してください。なお、画像に対応していないフィード形式でもエラーにはならず単に無視されるだけとなっています。
$rss = new Sabel_Rss_Writer();
$rss->setImage("http://www.example.com/images/logo.gif");
RSSのURLやロゴ画像など、出力する形式によっては無視されるものでもエラーとしないのは理由があります。それは常にそれらをセットするようにコーディングしておけば、配信形式を変更する際に、コンストラクタの引数を変えるだけで済むためです。
アイテム(記事コンテンツなど)を追加するには addItem()メソッド を使用します。必要な情報は
タイトル, URL, 更新(作成)日時 です。新しいアイテムから順に addItem() してください。
$rss = new Sabel_Rss_Writer();
...
$rss->addItem(array(
"title" => "article title 2",
"url" => "http://www.example.com/articles/2",
"date" => "2009-01-02 00:00:00",
));
$rss->addItem(array(
"title" => "article title",
"url" => "http://www.example.com/articles/1",
"date" => "2009-01-01 00:00:00",
));
また、他に概要や、全文配信する際などにコンテンツそのものを含めることも可能です。
$rss->addItem(array(
"title" => "article title",
"url" => "http://www.example.com/articles/1",
"description" => "article description",
"content" => "<div>article contents</div>",
"date" => "2009-01-01 00:00:00",
));
RSS 2.0形式で出力する場合、"content" か "description" のどちらかしか使用されません。両方セットされている場合は "description" が優先されます。つまり、上記のコードにおいて "<div>article contents</div>" は配信されません。
output()メソッドをコールするとXMLを受け取ることが可能です。それをそのままクライアントに出力すれば、フィード配信の完了です。
$rss = new Sabel_Rss_Writer();
...
echo $rss->output();