複数の文字列や画像から、ランダムに一つだけ表示するスクリプト。
- 参考 : ランダムテキスト - eWeb(サイト閉鎖)
私はMovable Typeにて「RandomEntriesプラグイン」を併用し、数ある記事から過去記事10件をプラグイン機能にてランダムに抽出し、最新記事1件も合わせて、計11件のうち一記事をphpスクリプト機能でランダムに表示させている。
以下が基本形。
<?php $rndtxt[0] = '記事1'; $rndtxt[1] = '記事2'; $rndtxt[2] = '記事3'; $rndtxt[3] = '記事4'; $rndtxt[4] = '記事5'; $rndtxt[5] = '記事6'; $rndtxt[6] = '記事7'; $rndtxt[7] = '記事8'; $rndtxt[8] = '記事9'; $rndtxt[9] = '記事10'; $rndtxt[10] = '記事11'; $length = count($rndtxt) - 1; srand( (double)microtime()*1000000 ); $num=round( rand(0,$length) ); print("$rndtxt[$num]"); ?>
複数のテキストを
$rndtxt[0] = '記事1'; $rndtxt[1] = '記事2'; $rndtxt[2] = '記事3';
と番号を振って並べることになるが、MTでは10番までの数字を出力するための記述が鍵。
<mt:SetVar name="cnt" value="$__counter__">
と数字を定義し、以下のタグで[カッコ]に入る数字を出力。
<mt:GetVar name="cnt">
MTで「0」は出力が難しいので、私は[0]に最新記事を、[1]から[10]で過去記事を割り当てている。
以上を踏まえてのMT用タグ。通常タグに「random="1"」を加えただけ。概要文(mt:EntryExcerpt)としてあるが、本文(mt:EntryBody)やリンク付きタイトルなどその辺はお好みで。
<?php $rndtxt[0] = '<mt:Entries lastn="1"><mt:EntryExcerpt></mt:Entries>'; <mt:Entries limit="10" random="1"><mt:SetVar name="cnt" value="$__counter__">$rndtxt[<mt:GetVar name="cnt">] = '<mt:EntryExcerpt>'; </mt:Entries>$length = count($rndtxt) - 1; srand( (double)microtime()*1000000 ); $num=round( rand(0,$length) ); print("$rndtxt[$num]"); ?>
当サイトで現在表示しているものではないが、出力結果はこんな感じ。