mtde.info

Movable Type Developers Express

特定カテゴリのみのatom.xml

2008年2月18日 00:26 | Writer: apstar | 記事本文

サイト全てではなく、特定のひとつのカテゴリの更新情報を、専用のatom.xmlで出力するサンプルです。

手順1:Atom(カテゴリ専用)テンプレートを作成する

まず、管理ページで、「デザイン」→「テンプレート」と進み、インデックステンプレートページにて「Atom」をクリックして、テンプレートコードをコピーします。

次に「インデックステンプレートを作成」をクリックし、カテゴリ専用のAtomテンプレートを作成します。名前は「Atom(xxxカテゴリ専用)」、出力ファイル名は「atom_xxx.xml」などとします。xxxは任意の文字列です。出力ファイル名には使用文字を半角英数のみとし、日本語や全角カナなどを使用しないでください。

以下コードは、デフォルトのAtomテンプレートを改造した、「Movable Type」というカテゴリ専用のAtomを、atom_mt4.xmlというファイル名で出力する場合のサンプルコードです。

変更箇所は、基本的には「MTEntriesで出力する際のカテゴリ」、「表示ディスクリプション」、「atom_mt4.xmlのリンク先」の3箇所です。

<$MTHTTPContentType type="application/atom+xml"$><?xml version="1.0" encoding="<$MTPublishCharset$>"?>

<MTSetVar name="TargetCat" value="Movable Type">
<MTSetVarBlock name="CatDescription">(<MTGetVar name="TargetCat">カテゴリ専用)</MTSetVarBlock>
<MTSetVarBlock name="CatXmlLink"><MTBlogURL>atom_mt4.xml</MTSetVarBlock>

<feed xmlns="http://www.w3.org/2005/Atom">
    <title><$MTBlogName remove_html="1" encode_xml="1"$><MTGetVar name="CatDescription" remove_html="1" encode_xml="1"></title>
    <link rel="alternate" type="text/html" href="<$MTBlogURL encode_xml="1"$>" />
    <link rel="self" type="application/atom+xml" href="<MTGetVar name="CatXmlLink" remove_html="1" encode_xml="1">" />
    <id>tag:<$MTBlogHost exclude_port="1" encode_xml="1"$>,<$MTTemplateCreatedOn format="%Y-%m-%d"$>:<$MTBlogRelativeURL encode_xml="1"$>/<$MTBlogID$></id>
    <updated><MTEntries lastn="1"><$MTEntryModifiedDate utc="1" format="%Y-%m-%dT%H:%M:%SZ"$></MTEntries></updated>
    <MTIfNonEmpty tag="MTBlogDescription"><subtitle><$MTBlogDescription remove_html="1" encode_xml="1"$></subtitle></MTIfNonEmpty>
    <generator uri="http://www.sixapart.com/movabletype/"><$MTProductName version="1"$></generator>
<MTEntries category="$TargetCat" lastn="15">
<entry>
    <title><$MTEntryTitle remove_html="1" encode_xml="1"$></title>
    <link rel="alternate" type="text/html" href="<$MTEntryPermalink encode_xml="1"$>" />
    <id><$MTEntryAtomID$></id>

    <published><$MTEntryDate utc="1" format="%Y-%m-%dT%H:%M:%SZ"$></published>
    <updated><$MTEntryModifiedDate utc="1" format="%Y-%m-%dT%H:%M:%SZ"$></updated>

    <summary><$MTEntryExcerpt remove_html="1" encode_xml="1"$></summary>
    <author>
        <name><$MTEntryAuthorDisplayName encode_xml="1"$></name>
        <MTIfNonEmpty tag="MTEntryAuthorURL"><uri><$MTEntryAuthorURL encode_xml="1"$></uri></MTIfNonEmpty>
    </author>
    <MTEntryCategories>
        <category term="<$MTCategoryLabel encode_xml="1"$>" scheme="http://www.sixapart.com/ns/types#category" />
    </MTEntryCategories>
    <MTEntryIfTagged><MTEntryTags><category term="<$MTTagName normalize="1" encode_xml="1"$>" label="<$MTTagName encode_xml="1"$>" scheme="http://www.sixapart.com/ns/types#tag" />
    </MTEntryTags></MTEntryIfTagged>
    <content type="html" xml:lang="<$MTBlogLanguage ietf="1"$>" xml:base="<$MTBlogURL encode_xml="1"$>">
        <$MTEntryBody encode_xml="1"$>
        <$MTEntryMore encode_xml="1"$>
    </content>
</entry>
</MTEntries>
</feed>

手順2:ヘッダーへ宣言文を作成する

「デザイン」→「テンプレート」と進み、テンプレートモジュールページにて「ヘッダー」をクリックして、以下のようなコードを書き足します。

以下コードはインデックスページであれば宣言が追加されるようにした例です。MTIfの部分を書き換えて、当該カテゴリページでのみ出力としてもいいでしょう。

<MTIf name="main_index">
   <link rel="alternate" type="application/atom+xml" title="Atom" href="<MTBlogURL>atom_mt4.xml" />
</MTIf>

Feed関連サンプル

2008 mtde.info