📃
【Movable Type】記事一覧をRSSフィードとして出力する
概要
記事の一覧をRSSフィードとして出力するコードです。RSSのバージョンは2.0。
以下のRSSフィードを出力します。
<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/">
<channel>
<title>RSSフィードのタイトル</title>
<description>RSSフィードの説明文</description>
<link>RSSフィードを配信するサイトのURL</link>
<item>
<title>タイトル</title>
<description>概要</description>
<link>URL</link>
<guid>URL</guid>
<content:encoded>本文</content:encoded>
<pubDate>日付</pubDate>
</item>
<item>
<title>タイトル</title>
<description>概要</description>
<link>URL</link>
<guid>URL</guid>
<content:encoded>本文</content:encoded>
<pubDate>日付</pubDate>
</item>
.
.
.
</channel>
</rss>
上記の出力について、MTでの値は以下を出力しています。
-
channel
- RSSフィードのタイトル:サイト名
- RSSフィードの説明文:サイトのRSSフィードである旨
- RSSフィードを配信するサイトのURL:サイトURL
-
item
- タイトル:記事タイトル(ウェブページ・コンテンツタイプのタイトル該当フィールド / 以下同)
- 概要:記事概要(記事本文から抜き出し)
- URL:記事パーマリンク
- 本文:記事本文
- 日付:記事公開日付(書式はRFC822フォーマット)
概要のみの配信でよければ、本文(content:encoded
)は不要です。
コード
item
内のcontent:encoded
内で出力するタグにencode_xml="1"
モディファイア、pubDate
内で出力するタグにformat_name="rfc822"
モディファイアをそれぞれ付与します。
タイトルや概要にHTMLタグが含まれる場合は、remove_html
を利用します。概要の抜き出しはtrim_to
を利用します。
詳細は以下公式リファレンスを参照ください。
MTEntriesで出力する
<mt:Entries lastn="10">
<mt:EntriesHeader>
<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/">
<channel>
<title><$mt:WebsiteName$></title>
<description><$mt:WebsiteName$>のRSSフィード</description>
<link><$mt:WebsiteURL$></link>
</mt:EntriesHeader>
<item>
<title><$mt:EntryTitle remove_html="1"$></title>
<description><$mt:EntryBody remove_html="1" trim_to="100+..."$></description>
<link><$mt:EntryPermalink$></link>
<guid><$mt:EntryPermalink$></guid>
<content:encoded><$mt:EntryBody encode_xml="1"$></content:encoded>
<pubDate><$mt:EntryDate format_name="rfc822"$></pubDate>
</item>
<mt:EntriesFooter>
</channel>
</rss>
</mt:EntriesFooter>
</mt:Entries>
MTPagesで出力する
<mt:Pages lastn="10">
<mt:PagesHeader>
<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/">
<channel>
<title><$mt:WebsiteName$></title>
<description><$mt:WebsiteName$>のRSSフィード</description>
<link><$mt:WebsiteURL$></link>
</mt:PagesHeader>
<item>
<title><$mt:PageTitle remove_html="1"$></title>
<description><$mt:PageBody remove_html="1" trim_to="100+..."$></description>
<link><$mt:PagePermalink$></link>
<guid><$mt:PagePermalink$></guid>
<content:encoded><$mt:PageBody encode_xml="1"$></content:encoded>
<pubDate><$mt:PageDate format_name="rfc822"$></pubDate>
</item>
<mt:PagesFooter>
</channel>
</rss>
</mt:PagesFooter>
</mt:Pages>
MTContentsで出力する
下記コンテンツタイプの設定を行っている想定の出力です。
- コンテンツタイプ名:新着情報
- コンテンツフィールド
- タイトル(テキスト)
- 概要(埋め込みテキスト)
<mt:Contents content_type="新着情報" limit="10">
<mt:ContentsHeader>
<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/">
<channel>
<title><$mt:WebsiteName$></title>
<description><$mt:WebsiteName$>のRSSフィード</description>
<link><$mt:WebsiteURL$></link>
</mt:ContentsHeader>
<item>
<title><mt:ContentField content_field="タイトル"><$mt:ContentFieldValue remove_html="1"$></mt:ContentField></title>
<description><mt:ContentField content_field="概要"><$mt:ContentFieldValue remove_html="1" trim_to="100+..."$></mt:ContentField></description>
<link><$mt:ContentPermalink$></link>
<guid><$mt:ContentPermalink$></guid>
<content:encoded><mt:ContentField content_field="概要" encode_xml="1"><$mt:ContentFieldValue$></mt:ContentField></content:encoded>
<pubDate><$mt:ContentDate format_name="rfc822"$></pubDate>
</item>
<mt:ContentsFooter>
</channel>
</rss>
</mt:ContentsFooter>
</mt:Contents>
上記それぞれのコードはXMLファイル出力時にMTタグ記述部分が空行で出力されるので、気になる場合はcompress-modifierプラグインを利用するなどして空行を削除してください。
以上です。
Discussion