Movable Type 備忘録

 エントリを更新された順にソートする

- 2006.06.17 - 追記

う~ん…やっぱり動作がおかしいです(; ̄∇ ̄A
投稿済のエントリの更新ではちゃんと規定時間後に反映されているようなんですけど、新規エントリの投稿だと一覧表示されないんです。
ということで、やっぱりGlobal Listingsプラグインは使い物にならないと判断しました。わたしもこのプラグインは取り外します。残念です。

- 2006.06.13 - 追記

こちらで紹介しているGlobal Listingsプラグインが古いため、やっぱりMovableType(ムーバブルタイプ) 3.2、3.3 では対応しきれていないそうです。。。残念。
見た目には動作しているように見えますが、MovableType(ムーバブルタイプ) 3.3 から導入されるタグ機能などが使えないみたい。

とりあえず当ブログでは、実際に更新順にソートされてるし、大きな支障は今のところなさそうなので、様子見ということでこのまま続行するつもりですが、これからインストールしようとする人にはオススメしません。 参考程度に留めてください。
どうしても…という人は、とりあえず目的の機能は満たしていますが、今後どんなトラブルがあるか分からないので、ご了承ください。

以上、ご報告まで。

エントリを最終更新日順にソートできたらいいと思ったことありませんか。
こんなこと思うのもわたしだけなのかなぁ。

例えば、既に投稿済みのエントリに対して追記などを追加しても、「●●更新しました…」みたいに明示してあげないと、せっかく追記などしても過去に埋もれたままですよね。
そんな時、新規エントリ+更新エントリを最終更新日順にソートできると、過去の記事も前面にアピールできるわけです。

今回は、エントリを最終更新日順にソートするカスタマイズをやってみました。

エントリを最終更新日順でソートするには、Global Listingsプラグインと、IfModifiedプラグインを併用します。

Global Listingsプラグインは、MovableType(ムーバブルタイプ)で複数のブログを管理していた場合、各ブログのデータを取得できるプラグインです。

カンタンに言うと、複数のブログで投稿されたエントリや、コメント、トラックバックなどを1つのページでまとめて表示させることができます。す、すごい!!

1つのMovableType(ムーバブルタイプ)で複数のブログを管理している人にとってはすっごく重宝するプラグインだと思います。

IfModifiedプラグインは、「追記や修正などの更新があったエントリ」という条件を使えるようにするプラグインです。例えば、新規投稿時とか、追記などして更新した後で誤字などが見つかった場合、規定時間内は更新として扱わない…というような条件を付けられるプラグインです。

このIfModifiedプラグインがないと、わたしの場合大変なことになってしまいます。投稿した後で誤字脱字が見つかったなんて日常茶飯事的にあるので(; ̄∇ ̄A

今回参考にしたサイトは、drry+@->様と、Chitatopops様です。

Global Listingsプラグインの入手はこちらから▼
http://www.nonplus.net/software/mt/GlobalListings.htm
IfModifiedプラグインの入手はこちらから▼
http://www.staggernation.com/mtplugins/IfModified

カスタマイズ方法

まず、各プラグインをダウンロードします。
上記URLから各プラグインをダウンロードしてください。

次に、Global Listingsプラグインを修正します。
Global Listingsプラグインが既に最新のMovableType(ムーバブルタイプ)に対応しなくなってしまったようで、以下のような修正を行う必要があるとのことです。

  1. 245行目
  2. EntryIfAllowComments => $e->allow_comments,
  3. EntryIfCommentsOpen => $e->allow_comments && $e->allow_comments eq '1',
  4. EntryIfAllowPings => $e->allow_pings,
  5.  
  6. 239行目
  7. MT::ConfigMgr->instance->NoPlacementCache(1) unless $e->blog_id == $blog_id;
  8.  
  9. my $allow_comments ||= 0;
  10. my $out = $builder->build($ctx, $tok, {
  11.  
  12. 224行目
  13.  local $ctx->{__stash}{entry} = $e;
  14.  local $ctx->{current_timestamp} = $e->created_on;
  15. local $ctx->{modification_timestamp} = $e->modified_on;
  16. my $this_day = substr $e->created_on, 0, 8;
  17.  
  18. 74行目
  19. EntryIfAllowComments => $_[0]->allow_comments,
  20. EntryIfCommentsOpen => $_[0]->allow_comments && $_[0]->allow_comments eq '1',
  21. EntryIfAllowPings => $_[0]->allow_pings,

青い字の部分をそれぞれ追加します。
追加したら保存して、各プラグインをサーバーにアップロードしてください。 アップロード先はいつもの mt/plugins/ ディレクトリの中です。

次に、テンプレートを修正します。
ここでは、最近のエントリ一覧を例にして説明します。
メインページの最近のエントリ一覧を以下のように差し替えます。

  1. 変更前
  2. <ul>
  3.     <MTEntries lastn="10">
  4.         <li><a href="<$MTEntryPermalink$>" title="e<$MTEntryID$>"><$MTEntryTitle$></a></li>
  5.     </MTEntries>
  6. </ul>
  7.  
  8. 変更後
  9. <ul>
  10.     <MTGlobalEntries include_blogs="8" lastn_modified="10" sort_by="modified_on">
  11.         <MTIfModified leeway="15">
  12.             <li><a href="<$MTEntryPermalink$>"><$MTEntryTitle$></a></li>
  13.         </MTIfModified>
  14.     </MTGlobalEntries>
  15. </ul>

青い字の部分は対象とするブログのブログIDを指定します。
複数のブログをまとめて一覧する場合には、ここで include_blogs="1,2,4" などと複数指定します。 また、<$MTBlogID$>タグは使用できませんでした。 直接ブログIDを指定してください。

赤い字の部分では表示するエントリ数( ここでは10件分 )を指定しています。
緑の字の部分は、15分以内の修正は更新として扱わない…という指定をしています。

修正したら、いつものように保存して再構築してください。

以上で、最近のエントリ一覧を最終更新日順にソートすることができました。 同じ要領で、エントリ本文を最終更新日順にソートして表示させることもできます。

Global ListingsプラグインとIfModifiedプラグインはMovableType(ムーバブルタイプ) 3.3 でも使用することができました。

Global Listingsプラグインは動作はしていますが、追加された新機能などが使えないので、結果的には動作しないと判断しました。

SEE YOU ( ̄∇ ̄)/

 Trackback Pings(4)

from オラオラ

エントリを最終更新日順にソートできたらいいと思ったことありませんか こんなこと思うのもわたしだけなのかなぁ汗 例えば、既に投稿済みのエントリに対して追記な...

from のぶろぐ

何を調べていたのかは忘れてしまったのだが、何故か気になった記事があった。 Mov...

from MovableType備忘録

MovableType(ムーバブルタイプ)を使っている人の中には、複数のブログを運営している人も多いかと思います。 または、カテゴリをANNEX(別館)に...

from MovableType備忘録

以前、新規エントリと公開済みエントリを更新された順でソートするカスタマイズを紹介しました。 でもこのプラグインはかなり古いものだったので、MovableT...

 Comments(0)

No comments found.

 Post a Comment

 

コメント用フィード