関連する記事・ウェブページを再構築する RebuildRelatedObjects プラグイン

MTで情報を記事として持たせたときに、関連する記事・ウェブページを再構築したい場合があると思います。そのような時用に RebuildRelatedObjects プラグインを作成しました。

bit-part/mt-plugin-RebuildRelatedObjects
https://github.com/bit-part/mt-plugin-RebuildRelatedObjects

関連付け用のフィールドをプラグイン設定で設定したうえで、関連付けたい記事/ウェブページのIDを入力します。

複数ある場合はカンマ区切りでセットします。

サンプル

このような感じで記事一覧があったとします。

「Hello Movable Type vol.1」という記事のキーワード欄に以下の様に関連付けたい記事のIDをセットします。

関連記事を選択するのには直接IDを入力してもいいでしょうし、MTAppjQuery v1.7.0 で追加した MTAppListing を使ってセットすると分かりやすいと思います。

関連記事を表示させる部分のテンプレートは以下の様な感じになります。

<mt:SetVar name="relatedids"><mt:EntryKeywords setvar="relatedids"><mt:Var name="relatedids" split="," setvar="_relatedids" /><mt:If name="_relatedids">
<mt:Entries id="$_relatedids"><mt:EntriesHeader><h3>関連記事</h3><ul></mt:EntriesHeader>
<li><a href="<mt:EntryPermalink>"><mt:EntryTitle></a></li>
<mt:EntriesFooter></ul></mt:EntriesFooter></mt:Entries>
</mt:If>

キーワード欄の値を relatedids にセットします。
MTAppjQueryがインストールされている場合はsplitモディファイアが使えるのでsplitモディファイアで区切り文字「,」で区切って配列 _relatedids にセットします。
その配列を mtEntries でidに渡している感じです。

そうすると、以下の様な感じで関連記事が表示されます。

このとき関連付けた記事もこのような形で再構築されています。(日時部分を抜粋)

「Hello Movable Type vol.4」「Hello Movable Type vol.8」の記事が再構築されているのが分かると思います。
「Hello Movable Type vol.2」の記事は「Hello Movable Type vol.1」の次の記事なので再構築されるのはMT自体の仕様で、「Hello Movable Type vol.3」については再構築されていないのが分かるかと思います。

このプラグインはあくまで再構築するためのプラグインなので、「Hello Movable Type vol.1」で「Hello Movable Type vol.4」「Hello Movable Type vol.8」を関連付けても、「Hello Movable Type vol.4」の記事に「Hello Movable Type vol.1」が関連記事として設定されることはないです。
その辺の関連付け方法についてはまた別なエントリーで紹介します。

「Hello Movable Type vol.4」「Hello Movable Type vol.8」の記事でそれぞれ「Hello Movable Type vol.1」「Hello Movable Type vol.4」「Hello Movable Type vol.8」を関連付けていたとします。
「Hello Movable Type vol.1」の記事を「Hello Movable Type vol.1 edit」と編集します。

「Hello Movable Type vol.1 edit」の関連記事部分は以下の様にタイトルがかわります。

「Hello Movable Type vol.1」の記事を関連付けていた「Hello Movable Type vol.4」「Hello Movable Type vol.8」では以下の様に関連記事部分のタイトルが変わります。

ニッチな用途かとは思いますが、特定の記事/ウェブページを再構築したい場合に使ってみていただければと思います。


Comments

comments powered by Disqus