Homeカスタマイズ>RSSの更新日修正

RSSの更新日修正

エントリーの並び順を”投稿日”でコントロールするときに、「What'sNew」とともにもうひとつ考えなくてはならないのが「RSSフィード」。RSSフィードも”投稿日”を使っているので、そのままでは”更新日”とは違ってきてしまいます。

そこで、

What'sNewの表示1(CustomFields,MTCollate)

What'sNewの表示2(CustomFields,MTCollate)

で紹介したのと同じように、CustomFields、MTCollateという2つのプラグインを活用します。別に更新日用の項目を追加してそれを使って更新日の新しいものから順にRSSフィードに表示するようにします。

CustomFieldsは、エントリーに項目を追加するプラグインで、これを使って”更新日用の日付”項目を追加します。

MTCollateは色々な項目を使ってソートができるプラグインです。CustomFieldsで追加した”更新日用の日付”を使ってソートをします。

それでは、「RSSフィード」のカスタマイズについて説明しましょう。

1.プラグインのインストール

まず、CustomFieldsMTCollateをインストールします。

What'sNewの表示1(CustomFields,MTCollate)

What'sNewの表示2(CustomFields,MTCollate)

1.CustomFieldsのインストール

2.MTCollateのインストール

3.CustomFieldsでの項目の追加

までを実施してください。

2.RSSフィードのカスタマイズ

次に『RSS1.0』のテンレプレートを修正します。

MTCollateプラグインを使って、追加した更新日用日付”Date+”の最新15件分を表示するようにします。

RSS1.0の詳細については、下記サイトの説明が詳しいです。

RSS(RDF Site Summary)によるサイト情報の要約と公開

下記に『RSS1.0』のテンレプレート例を示します。下線部が修正した部分です。


01:<?xml version="1.0" encoding="<$MTPublishCharset$>"?>
02:
03:<rdf:RDF
04:xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
05:xmlns:dc="http://purl.org/dc/elements/1.1/"
06:xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
07:xmlns:admin="http://webns.net/mvcb/"
08:xmlns:cc="http://web.resource.org/cc/"
09:xmlns="http://purl.org/rss/1.0/">
10:
11:<channel rdf:about="<$MTBlogURL$>">
12:<title><$MTBlogName encode_xml="1"$></title>
13:<link><$MTBlogURL$></link>
14:<description><$MTBlogDescription encode_xml="1"$></description>
15:<dc:language><$MTDefaultLanguage$></dc:language>
16:<dc:creator></dc:creator>
17:
18:<MTCollateCollect>
19:<MTEntries author="abc">
20:<MTCollateRecord>
21: <MTCollateSetField name="entry_link"><$MTEntryPermalink encode_xml="1"$></MTCollateSetField>
22: <MTCollateSetField name="entry_title"><$MTEntryTitle encode_xml="1"$></MTCollateSetField>
23: <MTCollateSetField name="entry_excerpt"><$MTEntryExcerpt encode_xml="1"$></MTCollateSetField>
24: <MTCollateSetField name="Date"><MTEntryData field="Date+"><MTEntryDataFieldValue format="%Y-%m-%d">T<$MTEntryDate format="%H:%M:%S"><$MTBlogTimezone$></MTEntryData></MTCollateSetField>
25:</MTCollateRecord>
26:</MTEntries>
27:</MTCollateCollect>
28
29:<dc:date><MTCollateList sort="Date:-" limit="1"><MTCollateField name="Date"></MTCollateList></dc:date>
30:
31:<admin:generatorAgent rdf:resource="http://www.movabletype.org/?v=<$MTVersion$>" />
32:<MTBlogIfCCLicense>
33:<cc:license rdf:resource="<$MTBlogCCLicenseURL$>" />
34:</MTBlogIfCCLicense>
35:
36:
37:<items>
38:<rdf:Seq><MTCollateList sort="Date:-" limit="15">
39:<rdf:li rdf:resource="<MTCollateField name="entry_link">" />
40:</MTCollateList></rdf:Seq>
41:</items>
42:</channel>
43:
44:<MTCollateList sort="Date:-" limit="15">
45:<item rdf:about="<MTCollateField name="entry_link">">
46:<title><MTCollateField name="entry_title"></title>
47:<link><MTCollateField name="entry_link"></link>
48:<description><MTCollateField name="entry_excerpt"></description>
49:<dc:date><MTCollateField name="Date"></dc:date>
50:</item>
51:</MTCollateList>
52:
53:</rdf:RDF>


(a)18行目から27行目の<MTCollateCollect>から</MTCollateCollect>の間では、MTCollateのFieldに値を設定しています。

全てのエントリーについてMTCollateのFieldに値を設定しています。

<MTCollateSetField name="entry_link">○○○</MTCollateSetField>

とすると、MTCollateの”entry_link”というFieldに”○○○”という値を設定します。

ここでは”entry_link”、”entry_title”、”entry_excerpt”、”Date”と4つのFieldに値を設定しています。

それぞれには、以下の値を設定しています。

 ”entry_link”:エントリーページのURI(アドレス)

 ”entry_title”:エントリーのタイトル

 ”entry_excerpt”:エントリーの概要

 ”Date”:エントリーの更新日(CustomFieldsプラグインで追加した”Date+”)

ポイントは”Date"のところです。(24行目)

RSS1.0ではW3Cの日時フォーマットで記述する必要があります。

 YYYY-MM-DDThh:mm:ss.sTZD(例:2006-08-02T10:45:23.5+09:00)

そこで、CustomFieldsプラグインで追加した”Date+”から”年月日”を、デフォルトの投稿日(<$MTEntryDate$>)から”時分秒”を取得して以下のように書いています。


<MTCollateSetField name="Date"><MTEntryData field="Date+"><MTEntryDataFieldValue format="%Y-%m-%d">T<$MTEntryDate format="%H:%M:%S"><$MTBlogTimezone$></MTEntryData>


(b)29行目は最新記事の更新日を示しています。ここを以下のように変更します。


旧:<dc:date><MTEntries lastn="1"><$MTEntryDate format="%Y-%m-%dT%H:%M:%S" language="en"$><$MTBlogTimezone$>

新:<dc:date><MTCollateList sort="Date:-" limit="1"><MTCollateField name="Date"></MTCollateList></dc:date>


『<MTCollateList>』タグはMTCollateで定義した情報をリストアップするコンテナタグです。

『sort="Date:-"』属性にて前半部分で設定した”Date”フィールドの降順にソートするように指示しています。

『limit="1"』属性は該当するものを1件リストアップするように指示しています。

(c)37行目から41行目の部分は44行目から記述する部分のリストを表しています。ここを以下のように変更します。

旧:
<items>
<rdf:Seq><MTEntries lastn="15">
<rdf:li rdf:resource="<$MTEntryPermalink encode_xml="1"$>" />
</MTEntries></rdf:Seq>
</items>

新:
<items>
<rdf:Seq><MTCollateList sort="Date:-" limit="15">
<rdf:li rdf:resource="<MTCollateField name="entry_link">" />
</MTCollateList></rdf:Seq>
</items>


ここではDateフィールドの降順に15件分、エントリーページのURI(アドレス)を表示します。

<MTCollateField name="entry_link">と書くとフィールド”entry_link”の値を出力します。

(d)45行目から52行目では各エントリーの詳細を表示します。

旧:
<MTEntries lastn="15">
<item rdf:about="<$MTEntryPermalink encode_xml="1"$>">
<title><$MTEntryTitle encode_xml="1"$></title>
<link><$MTEntryPermalink encode_xml="1"$></link>
<description><$MTEntryBody encode_xml="1"$></description>
<dc:subject><$MTEntryCategory encode_xml="1"$></dc:subject>
<dc:creator><$MTEntryAuthor encode_xml="1"$></dc:creator>
<dc:date><$MTEntryDate format="%Y-%m-%dT%H:%M:%S" language="en"$><$MTBlogTimezone$></dc:date>
</item>
</MTEntries>

新:
<MTCollateList sort="Date:-" limit="15">
<item rdf:about="<MTCollateField name="entry_link">">
<title><MTCollateField name="entry_title"></title>
<link><MTCollateField name="entry_link"></link>
<description><MTCollateField name="entry_excerpt"></description>
<dc:date><MTCollateField name="Date"></dc:date>
</item>
</MTCollateList>


ここではDateフィールドの降順に15件分、エントリーページのタイトル、URI、概要、更新日を出力しています。


以上でテンプレートの修正は完了です。コピー&ペーストして使えるように行番号を省いた『RSS1.0』のテンレプレート例も書いときます。


<?xml version="1.0" encoding="<$MTPublishCharset$>"?>

<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
xmlns:admin="http://webns.net/mvcb/"
xmlns:cc="http://web.resource.org/cc/"
xmlns="http://purl.org/rss/1.0/">

<channel rdf:about="<$MTBlogURL$>">
<title><$MTBlogName encode_xml="1"$></title>
<link><$MTBlogURL$></link>
<description><$MTBlogDescription encode_xml="1"$></description>
<dc:language><$MTDefaultLanguage$></dc:language>
<dc:creator></dc:creator>

<MTCollateCollect>
<MTEntries author="cms-mt">
<MTCollateRecord>
			<MTCollateSetField name="entry_link"><$MTEntryPermalink encode_xml="1"$></MTCollateSetField>
			<MTCollateSetField name="entry_title"><$MTEntryTitle encode_xml="1"$></MTCollateSetField>
			<MTCollateSetField name="entry_excerpt"><$MTEntryExcerpt encode_xml="1"$></MTCollateSetField>
			<MTCollateSetField name="Date"><MTEntryData field="Date+"><MTEntryDataFieldValue format="%Y-%m-%d" language="en">T<$MTEntryDate format="%H:%M:%S"$ language="en"><$MTBlogTimezone$></MTEntryData>
</MTCollateSetField>
</MTCollateRecord>
</MTEntries>
</MTCollateCollect>

<dc:date><MTCollateList sort="Date:-" limit="1"><MTCollateField name="Date"></MTCollateList></dc:date>

<admin:generatorAgent rdf:resource="http://www.movabletype.org/?v=<$MTVersion$>" />
<MTBlogIfCCLicense>
<cc:license rdf:resource="<$MTBlogCCLicenseURL$>" />
</MTBlogIfCCLicense>



<items>
<rdf:Seq><MTCollateList sort="Date:-" limit="15">
<rdf:li rdf:resource="<MTCollateField name="entry_link">" />
</MTCollateList></rdf:Seq>
</items>

</channel>

<MTCollateList sort="Date:-" limit="15">
<item rdf:about="<MTCollateField name="entry_link">">
<title><MTCollateField name="entry_title"></title>
<link><MTCollateField name="entry_link"></link>
<description><MTCollateField name="entry_excerpt"></description>
<dc:date><MTCollateField name="Date"></dc:date>
</item>
</MTCollateList>

</rdf:RDF>


以上のように『RSS1.0』のテンレプレートを修正することで、エントリーの並び順を”投稿日”でコントロールしつつ、更新日順にRSSフィードを出力することが可能になります!


≪ What'sNewの表示2(CustomFields,MTCollate) | このページのトップへ | メニューを簡単に更新する方法 ≫

このエントリーをはてなブックマークに追加 このページをはてなブックマークに追加


注目記事

MovableTypeを使うのにおすすめのレンタルサーバーってどれ?

MovableType独自タグの入力が簡単にできるホームページ作成ソフトは?

MovableTypeをカスタマイズするのにどんな本が参考になる?

「元気パワー」が増幅されるツールがあるって?

初心者の方・ホームページ作成中心の方へのおすすめのパソコンは?



トラックバック

このエントリーのトラックバックURL:

http://cms-mt.com/cgi/mt/mt-tb_.cgi/70