Homeカスタマイズ>複数ブログのRSSドッキング

複数ブログのRSSドッキング

複数ブログのドッキング(MultiBlog)にて複数のブログをドッキングさせる方法を紹介しました。ここではその発展版として複数ブログのRSSフィードをドッキングする方法を紹介します。

このホームページでは、「メインコンテンツ」と「日記」を2つのブログに分けて作成しています。この2つのRSSフィードをドッキングするには2つのブログのエントリーを更新日順に並べる必要があります。

「メインコンテンツ」では、What'sNewの表示1(CustomFields,MTCollate)What'sNewの表示2(CustomFields,MTCollate)で紹介したように、CustomFieldsプラグインを使って更新日用の項目を追加しています。(もともとの”投稿日”はエントリーの並び順をコントロールするために使っています)

「日記」では、通常のブログと同様に”投稿日”が更新日を表しています。

この2つの「更新日」をミックスさせて「更新日」順に並べる方法を紹介します。

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

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

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

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

1.CustomFieldsのインストール

2.MTCollateのインストール

3.CustomFieldsでの項目の追加

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

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

次に「メインコンテンツ」の『RSS1.0』のテンレプレートを修正します。

まず、RSSの更新日修正で紹介したように「メインコンテンツ」のRSSフィードを出力するための修正をします。MTCollateプラグインを使って、追加した更新日用日付”Date+”の最新15件分を表示するようにしています。

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


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

MTCollateの”Date”というFieldにCustomFieldsプラグインで追加した更新日”Date+”を設定しています。

詳細は、RSSの更新日修正を参照くださいネ。

修正した『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>


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

いよいよここからが新たに紹介する部分です。「日記」のRSSフィードを追加し「メインコンテンツ」と「日記」2つの「更新日」をミックスさせて「更新日」順に並べる方法を紹介します。2でMTCollateプラグインを使ってMTCollateのFieldに値を設定しましたが、そこに「日記」の情報もあわせて設定するように変更します。

下線部が新たに追加した部分です。


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:
28:<MTMultiBlog include_blogs="5">
29:<MTEntries lastn="15">
30:<MTCollateRecord>
31: <MTCollateSetField name="entry_link"><$MTEntryPermalink encode_xml="1"$></MTCollateSetField>
32: <MTCollateSetField name="entry_title"><$MTEntryTitle encode_xml="1"$>(日記)</MTCollateSetField>
33: <MTCollateSetField name="entry_excerpt"><$MTEntryExcerpt encode_xml="1"$></MTCollateSetField>
34: <MTCollateSetField name="Date"><$MTEntryDate format="%Y-%m-%dT%H:%M:%S" language="en"$><$MTBlogTimezone$></MTCollateSetField>
35:</MTCollateRecord>
36:</MTEntries>
37:</MTMultiBlog>
38:
39:</MTCollateCollect>
40:
41:<dc:date><MTCollateList sort="Date:-" limit="1"><MTCollateField name="Date"></MTCollateList></dc:date>
42:
43:<admin:generatorAgent rdf:resource="http://www.movabletype.org/?v=<$MTVersion$>" />
44:<MTBlogIfCCLicense>
45:<cc:license rdf:resource="<$MTBlogCCLicenseURL$>" />
46:</MTBlogIfCCLicense>
47:
48:
49:<items>
50:<rdf:Seq><MTCollateList sort="Date:-" limit="15">
51:<rdf:li rdf:resource="<MTCollateField name="entry_link">" />
52:</MTCollateList></rdf:Seq>
53:</items>
54:</channel>
55:
56:<MTCollateList sort="Date:-" limit="15">
57:<item rdf:about="<MTCollateField name="entry_link">">
58:<title><MTCollateField name="entry_title"></title>
59:<link><MTCollateField name="entry_link"></link>
60:<description><MTCollateField name="entry_excerpt"></description>
61:<dc:date><MTCollateField name="Date"></dc:date>
62:</item>
63:</MTCollateList>
64:
65:</rdf:RDF>

18行目の<MTCollateCollect>から39行目の</MTCollateCollect>の間で、MTCollateのFieldに値を設定しています。この間に「日記」の情報を設定する部分を追加します。

まず最初に、MultiBlogプラグインのインストールをします。

複数ブログのドッキング(MultiBlog)

1.MultiBlogのインストール

2.MultiBlogの設定

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

28行目の<MTMultiBlog include_blogs="5">と37行目の</MTMultiBlog>の間が「日記」の情報を出力する部分です。「日記」は「メインコンテンツ」とは別のブログで運用しているので、複数ブログのドッキング(MultiBlog)で紹介したようにMultiBlogプラグインを使って「日記」ブログの情報を「メインコンテンツ」のテンレプレートにドッキングします。

29行目の<MTEntries lastn="15">と36行目の</MTEntries>の間で最新15件のエントリー情報を取得しています。

30行目以降が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”:エントリーの更新日(投稿日)

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

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

そこで、<$MTEntryDate$>で下記のように日時フォーマットを指定しています。


34: <MTCollateSetField name="Date"><$MTEntryDate format="%Y-%m-%dT%H:%M:%S" language="en"$><$MTBlogTimezone$></MTCollateSetField>

このようにして、18行目の<MTCollateCollect>から39行目の</MTCollateCollect>の間で、「メインコンテンツ」の情報と「日記」の情報を、MTCollateのFieldに設定します。これで2つの情報をドッキングしたデータベースを作ったことになります。

41行目以降はDateフィールドの降順に15件分の情報を出力している部分です。詳細は、RSSの更新日修正を参照ください

MTCollateのDateフィールドには「メインコンテンツ」と「日記」両方の情報が入っていますので、両方をあわせた中から最新15件分の情報を出力するようになります。




これで「メインコンテンツ」と「日記」という複数ブログのRSSフィードのドッキングが完了です。お疲れ様でした。

これまで紹介してきた、

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

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

RSSの更新日修正 複数ブログのドッキング(MultiBlog)

の内容を活用して、このように複数ブログのRSSフィードのドッキングが完成できました!

最後にコピー&ペーストして使えるように行番号を省いた『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>

<MTMultiBlog include_blogs="5">
<MTEntries lastn="15">
<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"><$MTEntryDate format="%Y-%m-%dT%H:%M:%S" language="en"$><$MTBlogTimezone$></MTCollateSetField>
</MTCollateRecord>
</MTEntries>
</MTMultiBlog>



</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>



≪ 複数ブログのドッキング(MultiBlog) | このページのトップへ

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


注目記事

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

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

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

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

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



トラックバック

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

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