複数ブログのRSSドッキング
複数ブログのドッキング(MultiBlog)にて複数のブログをドッキングさせる方法を紹介しました。ここではその発展版として複数ブログのRSSフィードをドッキングする方法を紹介します。
このホームページでは、「メインコンテンツ」と「日記」を2つのブログに分けて作成しています。この2つのRSSフィードをドッキングするには2つのブログのエントリーを更新日順に並べる必要があります。
「メインコンテンツ」では、What'sNewの表示1(CustomFields,MTCollate)、What'sNewの表示2(CustomFields,MTCollate)で紹介したように、CustomFieldsプラグインを使って更新日用の項目を追加しています。(もともとの”投稿日”はエントリーの並び順をコントロールするために使っています)
「日記」では、通常のブログと同様に”投稿日”が更新日を表しています。
この2つの「更新日」をミックスさせて「更新日」順に並べる方法を紹介します。
1.プラグインのインストール
まず、CustomFieldsとMTCollateをインストールします。
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