前回のエントリでは、サムネイルをランダムに表示するための下準備をしました。今回は、いよいよその本題です。
まずは、PHPのスクリプト(photogallery.php)です。
- サムネイルのデータベース(thumbnail.dat)を読み込み、配列($AssetImageArray)に格納する。
- 配列から、所定の個数($ThumbnailImageNum)分、ランダムにサムネイルを選定する。
(選定の際には、すでに選定されたものが重複して選定されないようにする) - 選定したサムネイルへのタグ<IMG>と、サムネイルを含むエントリへのリンクのタグ<A>を出力する。
#「$BlogBaseURL」と「$BlogBasePath」は、利用する環境に合わせて適当に変更してください。(「$ThumbnailImageNum」は、お好みで)
#「$DebugFlag」を1とすると、実行中にいくつかの状態メッセージを表示することができます。
上記スクリプトを、MT5の「テンプレートモジュール」に登録し、blogを再構成します。
実行した結果です。
登録されているアイテム(画像)のサムネイルが表示され、サムネイルをクリックすると、サムネイルを含むエントリにリンクします。
サムネイルのサイズ($ThumbnailWidthと$ThumbnailHeight)は、当初はサムネイルのデータベース(thumbnail.dat)の中に埋め込んでいました。その方が、blogの運用途中でサムネイルのサイズを変更したとしても、表示側(photogallery.php)で動的に対応できるからです。
しかし、この方法だと、サムネイルの数が膨大になってくると、サムネイルのデータベースのファイルサイズも膨大になり、読み込み時にblogサーバに負荷が掛かってしまいます。(すべての情報を、一旦配列に読み込むため)
これを避けるため、サムネイルのサイズは、定数としました。
#よって、blogの運用途中でサムネイルのサイズを変更した場合には、生成側(thumbnail.php)でForceオプションを使って強制的にサムネイルを再作成するとともに、表示側で定数を変更して、blogを再構成してください。
同様に、サムネイルへのリンク($ThumbnailImagePath)と、サムネイルを含むエントリへのリンク($EntryLinkPath)も、登録されているアイテム(画像)のリンク($AssetImagePath)から生成するようにしました。
サムネイルのデータベースに埋め込む情報を必要最小限に絞ることで、データベースのファイルサイズをかなりコンパクトにすることができました。
ということで、ひとまず完成です。0xF9C6
Post Comment