📃

【Movable Type】記事一覧をRSSフィードとして出力する

2024/12/14に公開

概要

記事の一覧をRSSフィードとして出力するコードです。RSSのバージョンは2.0。
以下のRSSフィードを出力します。

<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
  <channel>
    <title>RSSフィードのタイトル</title>
    <description>RSSフィードの説明文</description>
    <link>RSSフィードを配信するサイトのURL</link>
    <item>
      <title>タイトル</title>
      <description>概要</description>
      <link>URL</link>
      <pubDate>日付</pubDate>
    </item>
    <item>
      <title>タイトル</title>
      <description>概要</description>
      <link>URL</link>
      <pubDate>日付</pubDate>
    </item>
    .
    .
    .
  </channel>
</rss>

上記の出力について、MTでの値は以下を出力しています。

  • channel
    • RSSフィードのタイトル:サイト名
    • RSSフィードの説明文:サイトのRSSフィードである旨
    • RSSフィードを配信するサイトのURL:サイトURL
  • item
    • タイトル:記事タイトル(ウェブページ・コンテンツタイプのタイトル該当フィールド / 以下同)
    • 概要:記事本文
    • URL:記事パーマリンク
    • 日付:記事公開日付(書式はRFC822フォーマット)

コード

item内のtitledescriptionencode_xml="1"モディファイア、pubDateformat_name="rfc822"モディファイアをそれぞれ付与します。
詳細は以下公式リファレンスを参照ください。

MTEntriesで出力する

<mt:Entries lastn="10">
  <mt:EntriesHeader>
    <?xml version="1.0" encoding="UTF-8"?>
    <rss version="2.0">
      <channel>
        <title><$mt:WebsiteName$></title>
        <description><$mt:WebsiteName$>のRSSフィード</description>
        <link><$mt:WebsiteURL$></link>
  </mt:EntriesHeader>
        <item>
          <title><$mt:EntryTitle encode_xml="1"$></title>
          <description><$mt:EntryBody encode_xml="1"$></description>
          <link><$mt:EntryPermalink$></link>
          <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">
      <channel>
        <title><$mt:WebsiteName$></title>
        <description><$mt:WebsiteName$>のRSSフィード</description>
        <link><$mt:WebsiteURL$></link>
  </mt:PagesHeader>
        <item>
          <title><$mt:PageTitle encode_xml="1"$></title>
          <description><$mt:PageBody encode_xml="1"$></description>
          <link><$mt:PagePermalink$></link>
          <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">
      <channel>
        <title><$mt:WebsiteName$></title>
        <description><$mt:WebsiteName$>のRSSフィード</description>
        <link><$mt:WebsiteURL$></link>
  </mt:ContentsHeader>
        <item>
          <title><mt:ContentField content_field="タイトル"><$mt:ContentFieldValue encode_xml="1"$></mt:ContentField></title>
          <description><mt:ContentField content_field="概要"><$mt:ContentFieldValue encode_xml="1"$></mt:ContentField></description>
          <link><$mt:ContentPermalink$></link>
          <pubDate><$mt:ContentDate format_name="rfc822"$></pubDate>
        </item>
  <mt:ContentsFooter>
      </channel>
    </rss>
  </mt:ContentsFooter>
</mt:Contents>

上記それぞれのコードはXMLファイル出力時にMTタグ記述部分が空行で出力されるので、気になる場合はcompress-modifierプラグインを利用するなどして空行を削除してください。

以上です。

Discussion