Under the Bridge

a Picture of the Late Him

サムネイル画像エントリリストの改造(MT4.1用)

2008年1月26日 00:59 | Writer: yoshi | 記事本文 | コメント(5) | トラックバック(0)

以前MT4.1ベータで散々テストしていた「サムネイル画像エントリリストの改造(さらにチューン)」の内容を、正式なMT4.1でGoodな挙動を示すように改造してみた。

仕様としては

というもの。リストは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"でインデックスページにのみ実装するのが、正しい姿なのでは?という気がしている。

とりあえずは、望みどおりの仕様となった。

トラックバック(0)

このブログ記事を参照しているブログ一覧: サムネイル画像エントリリストの改造(MT4.1用)

このブログ記事に対するトラックバックURL:

コメント(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すね。
サンプルコード試していただいて、突っ込みいただけるとホント助かります。

コメントする






Categories
Entries
Feed
スポンサードリンク

parts

フィードメーター - Under the Bridge

あわせて読みたい

なかのひと

2008年4月5日開催、MT4LP5

2008 yoshi(apstar)