ブログ記事やコメントなどをランダムに表示する MovableType プラグイン:Randomize

Posted by
ぴろり
Posted at
2011/01/23 17:06
Trackbacks
関連記事 (0)
Comments
コメント (2)
Post Comment
コメントできます
Category
プラグイン カテゴリ

 ブログ記事やウェブページ、コメント、アイテムなどの様々なリストから、項目をランダムに選んで表示するための MovableType プラグインを書いてみました。静的生成、静的生成+PHP、ダイナミック パブリッシングで動作します。同様の機能を持った MT プラグインが他にも存在しますが、ブログ記事やウェブページなど MT のオブジェクトに限定せず、あらゆる項目をランダムに表示することが可能です。

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

使い方の概要

 以下のテンプレートの例のように、ランダムに項目を抽出したい範囲を MTRandomize ブロックタグで囲みます。続いて、個々の項目を MTRandomizeSeparator タグで区切ります。MTRandomize ブロックタグは、MTRandomizeSeparator で区切られた項目をランダムに選択し、lastn で指定された数だけ表示します。

<ul><MTRandomize lastn="3">
  <li>Item 1</li>
<$MTRandomizeSeparator$>
  <li>Item 2</li>
<$MTRandomizeSeparator$>
  <li>Item 3</li>
<$MTRandomizeSeparator$>
  <li>Item 4</li>
  <li>Item 5</li>
<$MTRandomizeSeparator$>
  <li>Item 6</li>
<$MTRandomizeSeparator$>
</MTRandomize></ul>

 項目の区切りは MTRandomizeSeparator タグで明示されればよいので、ブログ記事やウェブページ、コメント、トラックバックなどの MT によって自動生成されるものを始め、手動で列挙したアイテムまで、あらゆる要素を表示することが可能です。

静的生成

 静的生成(スタティック)で利用した場合、項目がランダムに選択されるのは、再構築のタイミングでテンプレートタグが処理された時になります。それ以降、そのテンプレートタグが再び再構築されない限りは、同じ内容が表示され続けます。使用シーンとしては、検索結果テンプレートなどで使用する方法です*1

静的生成+PHP

 静的生成(スタティック)で PHP のコードが含まれるページを生成します。ページが表示される度に PHP が動作し、項目をランダムに表示します。Randomize プラグインでは、php オプションを指定するだけで、ランダム表示を行うための PHP コードを生成します。

<ul><MTRandomize lastn="3" php="1">
   :
</MTRandomize></ul>

ダイナミック パブリッシング

 Randomize プラグインは、MT 標準のダイナミック パブリッシングにも対応しています。静的生成+PHP と同様に、表示される度に異なる項目がランダムに選択され表示されます。

追加されるテンプレート タグ

MTRandomize ブロックタグ
 ブロックタグの内部のコンテンツから lastn で指定された数だけランダムに項目を選択し、それらを表示します。lastn に 0 を指定すると、全てのアイテムがシャッフルされて表示されます。
MTRandomizeSeparator 変数タグ
 MTRandomize ブロックタグの内部で使用し、アイテムの区切り箇所を宣言します。MTRandomizeSeparator で分割された結果、空白、タブ、改行のみを含むブロックはランダム表示の候補からは外されます。

テンプレートの記述の例

 最新のブログ記事 10 件の中から、ランダムに 5 件のブログ記事を表示する例です。

<ul><MTRandomize lastn="5">
  <MTEntries lastn="10">
    <li><$MTEntryTitle$></li>
    <$MTRandomizeSeparator$>
  </MTEntries>
</MTRandomize></ul>

 任意の広告を表示する例です。

<MTRandomize lastn="1">
    <!-- 広告1 -->
    <$MTRandomizeSeparator$>
    <!-- 広告2 -->
    <$MTRandomizeSeparator$>
    <!-- 広告3 -->
    :
</MTRandomize>

ダウンロード

インストール

 ダウンロードしたアーカイブを展開し、plugins フォルダの下にコピーしてください。プラグインの設定項目などはありません。

いろいろ

  • MovableType 4, MovableType 5 で動作確認済みです
  • ライセンスは LGPL とします
このエントリーをはてなブックマークに追加  

  1. *1 検索結果テンプレートでは、検索結果を表示する度にテンプレートタグが処理されますので、検索の度に異なった項目が表示されます


関連記事/トラックバック

関連記事/トラックバックはまだありません

この記事にトラックバックを送るには?

寄せられたコメント (全 2 件中、最新 5 件まで表示しています)

Posted by
カフカカフカ
at
2015/03/26 13:39
ID
SaY9imm.
ブログ記事やコメントなどをランダムに表示する MovableType プラグイン:Randomize
について質問をさせてください。
>MovableType 4, MovableType 5 で動作確認済みです
ご存知の範囲で結構ですのでMovableType 6での実装はどうでしょうか。
今回の要望として行いたいことが、ブラウザをリロードするたびに表示内容がランダムで変わることを行いたいのですがその場合は
Randomizeのみでは不可能
その場合は、
1、静的生成+PHPでの実装
または、
2、(記載頂いている)ダイナミック パブリッシング…Randomize プラグインは、MT 標準のダイナミック パブリッシングにも対応しています。静的生成+PHP と同様に、表示される度に異なる項目がランダムに選択され表示されます。
追加されるテンプレート タグMTRandomize ブロックタグ…ブロックタグの内部のコンテンツから lastn で指定された数だけランダムに項目を選択し、それらを表示します。lastn に 0 を指定すると、全てのアイテムがシャッフルされて表示されます。
上記2点の方法のどちらかの実装方法でも可能という認識で良いでしょうか。
2の方が容易な実装と思っています・・・
以上、お手数おかけいたしますがよろしくお願い致します。
Posted by
ShinsakuShinsaku
at
2011/12/24 03:51
ID
SPVC6qhA
ぴろり様
Randomizeプラグインについて質問させて頂きます。
サイト構築にあたり、本プラグインを導入させて頂きました。MT5.12にて正常に作動しました。
現在、mt-rebuild.plにて自動再構築を導入したのですが、cronにて下記のエラーが出てきました。
Useless use of unshift with no values at /webpath/plugins/Randomize/Randomize.pl line 49.
cron実行後、ページを確認したところ、正常にページは生成されていますので、問題はないかと思いますが、念のためと思い投稿しました。
唯一気になる点は、本プラグインを使用している部分が、サイトの軽量化を考え、phpの部品化した箇所に使っております。
しかし、本プラグインを使っている部分は、予めtxtで生成し、phpで読み込んでいるので、今回のエラーとはあまり関係がないと想定しています。
できましたら、ご教授頂ければ幸いです。

コメントを投稿する

 
 (必須, 匿名可, 公開, トリップが使えます)
 (必須, 匿名可, 非公開, Gravatar に対応しています)
 (必須)
スパム コメント防止のため「投稿確認」欄に ランダムな数字 CAPTCHAについて を入力してから送信してください。お手数ですがご協力のほど宜しくお願いいたします。