2006年12月11日 MTEntryIfRelatedEntriesタグを追加しました。
エントリーの関連付けを行うプラグインの第3回として、関連するエントリーをBlogに出力する方法を解説します。
1.MTEntryRelatedEntriesタグ
このプラグインをインストールすると、MTEntryRelatedEntriesというタグが追加されます。
このタグは、あるエントリーに関連付けられているエントリーを順次出力するコンテナタグです。
エントリーアーカイブテンプレートの中か、MTEntriesタグのコンテナの中で使用します。
通常は、同一Blog内の関連するエントリーだけを出力します。
「force="1"」のアトリビュートを付加すると、他Blogの関連するエントリーも出力します。
また、MTBlogsタグのコンテナの中にMTEntryRelatedEntriesタグのコンテナを入れると、Blogごとに関連するエントリーをまとめて出力することができます。この場合は、「force="1"」は付加しません。
なお、エントリーの出力順は日付順です。
新/旧のどちらから順に出力するかは、標準ではBlogの設定に従います。
強制的に新しいエントリーから順に出力する場合は、「sort_order="descend"」のアトリビュートを付加します。
また、古いエントリーから順に出力する場合は、「sort_order="ascend"」のアトリビュートを付加します。
2006年6月14日
sort_byアトリビュートを指定する機能を追加しました。
指定方法は、MTEntriesタグのsort_byと同じです。
2.MTEntryRelatedEntriesCountタグ
あるエントリーに関連付けられているエントリーの個数を出力するタグです。
通常は、同一Blog内の関連するエントリーの数だけを出力します。
「force="1"」のアトリビュートを付加すると、他Blogの関連するエントリーの数も合計した値が出力されます。
また、MTBlogsタグのコンテナの中で使うと、個々のBlogごとに関連するエントリーの個数を出力することができます。この場合は、「force="1"」は付加しません。
3.MTEntryIfRelatedEntriesタグ
あるエントリーに関連付けられているエントリーがあるかどうかを判断する条件タグです。
通常は、同一Blog内に関連するエントリーがあるかどうかを判断します。
「force="1"」のアトリビュートを付加すると、他Blogにも関連するエントリーがあるかどうかが判断されます。
また、MTBlogsタグのコンテナの中で使うと、個々のBlogごとに関連するエントリーがあるかどうかを判断することができます。この場合は、「force="1"」は付加しません。
4.MTEntryRelatedEntryBlogタグ
関連するエントリーが属するBlogを出力するためのコンテナタグです。
MTEntryRelatedEntriesタグに「force="1"」のアトリビュートを付加する際に、関連するエントリーごとに、その属するBlogの情報を出力するために使います。
5.同一Blogの関連するエントリーを出力する例
同一Blogの関連するエントリーの一覧を出力するには、以下のようにタグを組むと良いでしょう。
<MTEntryIfRelatedEntries> <p>関連する記事:<$MTEntryRelatedEntriesCount$>件</p> <ul> <MTEntryRelatedEntries> <li><a href="<$MTEntryPermalink$>"><$MTEntryTitle$></a>(<$MTEntryDate format="%Y年%m月%d日 %H時%M分"$>)</li> </MTEntryRelatedEntries> </ul> </MTEntryIfRelatedEntries>
6.他Blogの関連するエントリーも出力する例
他Blogの関連するエントリーも合わせて出力するには、以下のようにタグを組むと良いでしょう。
エントリーの日付の前に、そのエントリーが属するBlogの名前も出力するようにしています。
<MTEntryIfRelatedEntries force="1"> <p>関連する記事:<$MTEntryRelatedEntriesCount force="1"$>件</p> <ul> <MTEntryRelatedEntries force="1"> <li><a href="<$MTEntryPermalink$>"><$MTEntryTitle$></a>(<MTEntryRelatedEntryBlog><MTBlogName></MTEntryRelatedEntryBlog>,<$MTEntryDate format="%Y年%m月%d日 %H時%M分"$>)</li> </MTEntryRelatedEntries> </ul> </MTEntryIfRelatedEntries>
7.Blogごとに関連するエントリーをまとめて出力する例
Blogごとに関連するエントリーもまとめて出力するには、以下のようにタグを組むと良いでしょう。
<MTEntryIfRelatedEntries force="1"> <p>関連する記事</p> <MTBlogs> <MTEntryIfRelatedEntries> <p><a href="<$MTBlogURL$>"><$MTBlogName$></a>内の関連する記事:<$MTEntryRelatedEntriesCount$>件</p> <ul> <MTEntryRelatedEntries> <li><a href="<$MTEntryPermalink$>"><$MTEntryTitle$></a>(<$MTEntryDate format="%Y年%m月%d日 %H時%M分"$>)</li> </MTEntryRelatedEntries> </ul> </MTEntryIfRelatedEntries> </MTBlogs> </MTEntryIfRelatedEntries>









コメントはスレッド表示になっています。
また、スレッドの先頭のコメントに対する返信には、先頭に矢印を表示しています。
改良していただき、大変感謝しております。
本日ようやくアップグレードしていじくっています。
ただ、ひとつワガママを言わせていただければ…
<MTBlogs>ではすべてのブログが表示されてしまうので、「関連付けのあるブログだけを表示する」様な形を取ることはできないでしょうか?
私の使用状況では、
aとbとcとdと言うブログでAというサイトを構成しており、
aはサイトA全体の更新履歴やら最新ニュースやらで、bやcとの関連付けは持たせず、bとcとdの間で相互に関連付けが発生します。
しかし、<MTBlogs>を使用すると、関連付けが無いにもかかわらずaのブログの名前も表示されてしまいます。
show_emptyでエントリーの無いカテゴリを表示する、しないを選択できるように、関連付けの無いブログは表示しないようなオプションを設定する方法は無いでしょうか?
もう一点追加です。
旧版ではsort_byも指定できたましたが、今回の改変では無理ですか?
>Iranaさん
こんにちは。プラグインご利用ありがとうございます。
まず、関連付けのあるブログだけを表示させる方法ですが、以下のようにすればできると思います。
<MTBlogs>
<MTIfNonZero tag="MTEntryRelatedEntriesCount">
関連付けを出力する部分
</MTIfNonZero>
</MTBlogs>
それから、sort_byは旧版でも対応していません。
sort_orderのみ指定できます。
もっとも、sort_byに対応させるのはさほど難しくはないと思いますので、後日考えてみます。
壱さんありがとうございます。
そっか、<MTIfNonZero>なんて手があったんだ。
壱さんからのコメントをいただく前に、うじうじ考えててOtherBlogプラグインでID指定して無理やり対応してました(^^;)
壱さんの方法試してみますです。
あと、旧版のsort_by対応ですが、言葉足らずですいません。
確かに旧版のデフォルトではsort_byに対応してませんが、一度壱さんにその件について質問をして、改造方法についてのエントリを書いていただいています。
The blog of H.Fujimoto:RelatedEntriesプラグインの改造
http://www.h-fj.com/blog/archives/2006/01/30-095231.php
(このエントリです)
で、今回の新版でこれと同じことをやってみたら、関連記事の一覧がまったく表示されなくなってしまったので、質問させていただいただいた次第です。
言葉足らずで失礼な表現になってしまいました。
すいません。
エントリーの関連付けを行うプラグイン改良版を使わせて頂いております。
バックアップをして復元しようとしてるのですが上手くいきません。
バックアップに関しては記事がないので質問させて頂きました。
これは「バックアップする」でバックアップしたテキストを
そのまま「復元する」で貼り付けて「読み込み」を押せばいいんですよね?
バックアップのデータを見ると日付のような感じなので
エントリーの日付などに関連あるのでしょうか?
CSVでエントリーを操作しているので同じ日付時間のエントリーもあるので
これが原因なのかな?と思ったりしています。
バックアップデータの例だとこのような形になっています
----
20060829000000,3,20060829000000,20060822000000,20060829000000,
20060822000000,1,20060822000000,
----
このテキスト上でエントリー関連付けの管理できれば大変楽になるので
この意味を教えて頂けたらと思います。
お手数ですが、宜しくお願いしますm(__)m
>reiさん
プラグインご利用ありがとうございます。
バックアップと復元ですが、ご想像のとおり、エントリーの日付を利用しています。
そのため、同じ日付のエントリーが複数あると、正しく復元することができません。
先日はダイナミックパブリッシング ページ分割プラグインではお世話になりました。
今回はこちらのRelatedEntriesプラグインについての要望です。
<MTIfNonZero tag="MTEntryRelatedEntriesCount">を利用して関連エントリーがある場合のみ見出しと合わせて一覧が表示されるようにしているのですが、複数ブログの関連付けにおいて関連元のエントリーからの関連付けが他ブログのエントリーに対してのみの場合、 MTEntryRelatedEntriesCountはforceアトリビュートを使用しない限り0となるために表示がされなくなってしまいます。
せっかく複数ブログ対応の設定項目があるので、その設定に合わせた表示結果がされるとよいのでは、と思いました。
以上、ダラダラとすみませんでした。
>でぐさん
こんにちは。
ご指摘の件について、プラグインをバージョンアップし、「MTEntryIfRelatedEntries」というタグを追加しました。
タグの書き方は、このエントリーに追加しておきました。
これほど対応が早いとはさすがに思いませんでした。
さっそくダウンロードして使わせていただきます。
ありがとうございました!
素晴らしいプラグインの公開、ありがとうございます。
「他ブログのエントリーも関連付ける」の設定でlabel要素があれば設定しやすいと思いましたのでpatchを次のところに置いておきます。
http://iwai.alib.jp/patch/mt/plugins/RelatedEntries/RelatedEntries_1_14-label.patch
>iwaimさん
こんにちは。
プラグインのパッチを作成いただき、ありがとうございました。