phpで文字列や画像をランダム表示

複数の文字列や画像から、ランダムに一つだけ表示するスクリプト。

  • 参考 : ランダムテキスト - 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]");
?>

当サイトで現在表示しているものではないが、出力結果はこんな感じ。

phpランダム表示