サムネイル画像エントリリストの改造(MT4.1用)
以前MT4.1ベータで散々テストしていた「サムネイル画像エントリリストの改造(さらにチューン)」の内容を、正式なMT4.1でGoodな挙動を示すように改造してみた。
仕様としては
- サムネイルリストクリックで該当エントリへリンク
- インデックスページでは全エントリの最新画像を10件
- カテゴリページではそのカテゴリに属するエントリのサムネイルのみ表示
- エントリページではそのエントリが属する同じカテゴリに属するエントリのサムネイルのみ表示
- サムネイル表示画像数は最大10件
というもの。リストはDLタグでマークアップ。配列使った、いかにもMT4.1らしいコード。
動作サンプルは、このブログのサイドバーを見て頂くといい。この記事のコードをそのまま貼っている(画像、ちょっと数が少ないけど)。
サンプルコード
※インデントはてきとうに端折ってください
<!-- 画像サムネイル -->
<MTIf name="main_index">
<MTSetVarBlock name="CurCat"><MTCategoryLabel></MTSetVarBlock>
<MTElse>
<MTIf name="category_archive">
<MTSetVarBlock name="CurCat"><MTCategoryLabel></MTSetVarBlock>
<MTElse>
<MTSetVarBlock name="CurCat"><MTEntryCategory></MTSetVarBlock>
</MTIf>
</MTIf>
<MTIfNonZero tag="AssetCount">
<MTSetvar name="counter" value="0">
<MTEntries lastn="0" category="$CurCat">
<MTEntryAssets type="image">
<MTAssetsFooter>
<MTSetVar name="counter" op="++">
<MTSetVarBlock name="EntryLink[$counter]"><$MTEntryPermalink$></MTSetVarBlock>
<MTSetVarBlock name="imagewidth"><$MTAssetProperty property="image_width"$></MTSetVarBlock>
<MTSetVarBlock name="imageheight"><$MTAssetProperty property="image_height"$></MTSetVarBlock>
<MTIf name="imagewidth" gt="$imageheight">
<MTSetVarBlock name="ImageCode[$counter]"><img src="<$MTAssetThumbnailURL height="70"$>" alt="on <$MTAssetProperty property="description"$>:<$MTAssetProperty property="description"$>" title="on <$MTEntryTitle$> : <$MTAssetProperty property="description"$>" /></MTSetVarBlock>
<MTElse>
<MTSetVarBlock name="ImageCode[$counter]"><img src="<$MTAssetThumbnailURL width="70"$>" alt="on <$MTAssetProperty property="description"$>:<$MTAssetProperty property="description"$>" title="on <$MTEntryTitle$> : <$MTAssetProperty property="description"$>" /></MTSetVarBlock>
</MTIf>
</MTAssetsFooter>
</MTEntryAssets>
</MTEntries>
<MTIf name="counter" gt="10">
<MTSetVar name="forcounter" value="10">
<MTElse>
<MTSetVar name="forcounter" value="$counter">
</MTIf>
<MTIf name="counter" gt="0">
<dl>
<dt>Photos</dt>
<dd>
<ul>
<MTFor var="x" from="1" to="$forcounter">
<li class="item">
<a href="<MTGetVar name="EntryLink[$x]">"><MTGetVar name="ImageCode[$x]"></a>
</li>
</MTFor>
</ul>
</dd>
</dl>
</MTIf>
</MTIfNonZero>
考察
仕様(もう一度)
- サムネイルリストクリックで該当エントリへリンク
- インデックスページでは全エントリの最新画像を10件
- カテゴリページではそのカテゴリに属するエントリのサムネイルのみ表示
- エントリページではそのエントリが属する同じカテゴリに属するエントリのサムネイルのみ表示
- サムネイル表示画像数は最大10件
画像の数がちょっと足りないので、十分なテストができているとは言いがたいが、ソースコードを見る限りは大丈夫そうである。今まではTOPページのサイドバーのみに貼っていたが、カテゴリページ・エントリページにコレがあるとけっこう華やかかも。
エントリに複数画像がある場合は、最初の画像がサムネイルとされる、自然な仕様。これはMTAssetsFooterタグが決めてとなった。エントリ中で最初にアップロードした画像は、MTAssetsFooterで必ず取得できるのだ。
この例の場合、画像が10枚に満たない場合は、画像数でサムネイルリストを生成してくれる。ちなみに、gt="10"、value="10"という箇所をどちらも10→6とかに書き換えると、サムネイルリストは6枚となる(ここは変数にしても良かったが)。
ただ、エントリ投稿後は、サイトの再構築を行わないと、カテゴリページとエントリページで表示される画像が異なる、などという症状は考えられる。エントリ投稿時にいちいちサイト全体を再構築するのは、面倒である。やはり、その辺の運用面を考えると、「サムネイル画像エントリリスト」は、MTIf name="main_index"でインデックスページにのみ実装するのが、正しい姿なのでは?という気がしている。
とりあえずは、望みどおりの仕様となった。
- カテゴリ:211Movable Type4
トラックバック(0)
このブログ記事を参照しているブログ一覧: サムネイル画像エントリリストの改造(MT4.1用)
このブログ記事に対するトラックバックURL:
- Categories
- Entries
-
- MT4:エントリ投稿画面をホゲる実験
- MT4LP5で得たもの
- MT4LP5に参加しました
- MT4.1:mtde.info 開設しました。
- Movable Type4で、かなり気に入っていること
- Movable Type4で、かなり気に入らないこと
- MT4.1:CustomEditorButton2 プラグイン
- MT4.1:「テンプレートの編集」画面のコードスニペットを拡張する
- MT4.1:自サイト・他サイトのFeed情報を取得してリスト化(続編)
- 日記(K0、mtde、MT)
- MT4.1:自サイト・他サイトのFeed情報を取得してリスト化
- ノープラグインでカテゴリーソート(MT4.1専用版)多分に反則
- 自サイト内の特定カテゴリのRSSを出力
- MT4.1:モジュール化(雑談ですが)
- MT4.1:カテゴリリストへ代表画像を付与する(Asset系)
- MT4.1:カテゴリリスト+エントリ全展開+エントリのAsset代表画像表示
- MT4.1:イメージの幅指定で高さを自動的に計算(Asset系)
- MT4.1:MTでサポートされない演算をJavaScript関数ライブラリ化する
- MT4.1:エントリと同じタグのついた他エントリをリストアップする(自エントリを強調表示・改良版)
- エントリと同じタグのついた他エントリをリストアップする(自エントリを強調表示)
- 最新記事で使用されているタグの最新5件を表示
- MT4.1:エントリリストへ、特定カテゴリ用画像をつける
- MT4LP5
- MT4.1で乱数を取得したい場合
- ★マークでエントリ数を示すエントリリストつきカレンダー
- 横型カレンダー(素ノーマル)
- ファンキーな横置きカレンダー
- サムネイル画像エントリリストの改造(MT4.1用)
- MT4.1 ついにリリース
- 日記
- MT4.1:変数2つでの演算 (2)
- MT4.1:テンプレートタグで100までの数から素数を求める
- MT4.1:変数2つでの演算
- 日記
- MT4.1:年度タイトルつき月別アーカイブ(4月で新年度切り替え)
- MT4.1:年タイトルつき月別アーカイブ(1月で新年切り替え)
- 全カテゴリからエントリを3件ずつ表示する。キメウチ禁止
- MT4.1:カテゴリの並べ替え+表示切り替え+現カテゴリ展開+強調表示つき(カスタムフィールド+ハッシュ変数)
- MT4.1:カテゴリの並べ替え+表示切り替え(カスタムフィールド+ハッシュ変数)
- MT4.1:カテゴリの並べ替え(カスタムフィールド+ハッシュ変数)
- 日記
- MT4.1:文字列を繋げる
- MT4.1:カテゴリの並べ替え(プラグイン使わず)
- エントリと同じタグのついた記事一覧をリストアップ(3)
- あるエントリの存在するカテゴリの、サブカテゴリ内のエントリを抽出する
- 配列に対するpopとshift
- MTのテンプレートタグでFizzBuzz。
- エントリと同じカテゴリ内のエントリ一覧取得
- MT4.1:Forループ(文字列の連結)
- MT4.1:Forループ(配列中より特定のデータのインデックスを取得)
- MT4.1:Forループ(配列の並びを逆にする)
- MT4.1:Loopループ(基本形)
- MT4.1:Forループ(基本形)
- MT4.1:配列サンプル(配列の先頭・末尾からデータ取得・削除)
- MT4.1:配列サンプル(特定カテゴリの全エントリのみを配列へ代入)
- MT4.1:配列サンプル(全カテゴリを配列へ代入)
- 外部ブログのRSSを自サイトへ読み込み
- 名無しコメントに対応する
- 複数カテゴリの最新情報5件(例2)
- 複数カテゴリの最新情報5件(例1)
- カテゴリごとの表示形態を変える(多カテゴリ対応)
- 特定のカテゴリの最新エントリ5件をメインページへ表示
- 変数専用モジュールで取得したカテゴリ情報配列をほかのモジュールで使用する
- 定数・変数専用のモジュールを使う
- タグ名の全取得、配列へセット、生成文字列連結
- カテゴリ名の全取得、配列へセットする
- サムネイル画像エントリリストの改造(さらにチューン)
- サムネイル画像エントリリストの改造(OK版)
- サムネイル画像エントリリストの改造
- MT4のコメントフォーム
- 配列使ってみたテスト
- ブログ記事投稿時のタグ・キーワードとか
- 実験記事:キーワードのつけ方と概要の書き方
- デザイン小変更
- MT4書籍購入
- MT4で日本語を用いたタグクラウドがおかしい・~が出ない問題点
- 小粋な本の購入
- ちょっと気づいたこと
- MTSetVarでクリッカブルマップ
- 画像サムネイルエントリリスト(改)
- MTGetVarによるアンカーリンク
- MT3>MT4バージョンアップ時不具合
- pageを用いたナビゲーションバー
- 画像の取り扱い
- MT3サイトをMT4サイトへコンバート
- 月別アーカイブのタイトルが0000年12月となる不具合
- MT4で、エントリが再構築されないとき
- MTGetVarで文字列置換
- エントリと同じタグのついた記事一覧をリストアップ(2)
- 同一カテゴリーに属するエントリ一覧
- Folderの親子関係を調べる
- FolderLabel・FolderDescription関係調査
- カテゴリ・エントリリスト(改)
- カテゴリ・エントリリスト
- folder調査用テンプレート(1)
- トップレベルのウェブページのみ抜き出す
- ドロップダウンタグリスト
- Feed情報調査用テンプレート
- MTEntryCreatedDate
- コメント調査用テンプレート
- カテゴリ数、エントリ数、ウェブページ数の取得
- strip_tagsモデファイア
- replaceモデファイア
- regex_replaceモデファイア
- count_paragraphsモデファイア
- count_charactersモデファイア
- catモデファイア
- count_wordsモデファイア
- MTAuthor関連調査
- 画像サムネイルエントリリスト
- MTAsset関連調査(2)
- MTAsset関連調査
- カテゴリ毎に表示を変えるには?
- 強調表示付きカテゴリリスト
- MT4ライセンス購入
- MT4:Webページで生成するグローバルナヴィゲーション
- MT4:エントリと同じタグのついた記事一覧をリストアップ
- MT4:テンプレート構想変更
- MT4:beta7の生成xhtmlコード解析、ほか
- MT4:うっかりやってはいけないこと
- MT4:スタイルシートの切り替え
- MT4:モジュール化成果
- MT4:モジュール化・アルファ(本文)エリアの改造
- MT4:モジュール化・システムテンプレート
- MT4:モジュール化・ウェブページ
- MT4:モジュール化・エントリアーカイブページ
- MT4:モジュール化・カテゴリアーカイブページ
- MT4:モジュール化・アルファ(本文)エリア
- MT4:エントリについて
- MT4:モジュール化・バナーエリア
- MT4:モジュール化・ヘッダコード
- MT4:モジュール化・モジュール名の命名規則
- MT4:モジュール化・基本形改造
- MT4:XML宣言モジュール
- MT4:モジュール化・基本形
- MT4:カテゴリソート(MTCategoryLabel remove_html="1")

コメント(5)
cembalo (2008年2月 9日 07:21)
はじめまして、MT4.1超初心者です。
こちらのサンプルコードをコピペしてみました。インデックスページは正常ですが、個別ページでは以下のようなエラーが出ます。解決出来るものでしょうか。
--- 表示されたエラー 1--------------------------
Parse error: syntax error, unexpected ')' in /home/sites/lolipop.jp/users/lolipop.jp-dp26047350/web/mt/php/lib/MTUtil.php(1082) : runtime-created function on line 1
Invalid category filter:
Parse error: syntax error, unexpected ')' in /home/sites/lolipop.jp/users/lolipop.jp-dp26047350/web/mt/php/lib/MTUtil.php(1082) : runtime-created function on line 1
Invalid category filter:
---- 表示された エラー2 -----------------
Photos
Array Array Array Array Array
--- Arrayというリンクが出来ているようです ----
yoshi (2008年2月 9日 09:18)
Arrayというリストができるのは、MTがソースを処理できないときに見かけます。
このサンプルはダイナミックパブリッシングでは試していません。動かない可能性は限りなく高いです。
↓こちらのサイトのサンプルコードであればどうでしょう?こちらのサンプルでは配列とか使っていないので大丈夫かと思います。
http://taeko.w-museum.com/wing/200801311340.html
cembalo (2008年2月 9日 11:26)
早速の回答ありがとうございます。
そちらの方のは先に試して見ましたがまた別のエラーが出ます。
それにこちらのほうが色々楽しそうですし。
解決策としてブログの書き出しをダイナミックパブリッシング以外にすればよいのですね。
cembalo (2008年2月 9日 11:51)
おかげさまで治りました。ちょっと
感動です。有難うございました。
yoshi (2008年2月 9日 12:08)
ご報告ありがとうございます。
ダイナミック→静的構築としたのdすね。
サンプルコード試していただいて、突っ込みいただけるとホント助かります。
コメントする