Under the Bridge

a Picture of the Late Him

ファンキーな横置きカレンダー

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

こんなもん誰も欲しくはないが...

変数の振る舞いを調べる目的もあり、ローカル環境で書いてみたコードを貼ってみようか。

コード貼ってみる

2008年8月/ 1 2 【♪ 3 ♪】 4 5 6 7 8 9 【♪ 10 ♪】 11 12 13 14 15 16 【♪ 17 ♪】 18 19 20 21 22 23 【♪ 24 ♪】 25 26 27 28 29 30 【♪ 31 ♪】

コード


<$mt:Date format="%B %Y"$>/

<mt:Calendar>

<!-- 曜日を判定 0:平日 1:土曜 2:日曜 -->
<MTSetVar name="Youbi" value="0">
<mt:CalendarWeekFooter>
	<MTSetVar name="Youbi" value="1">
</mt:CalendarWeekFooter>
<mt:CalendarWeekHeader>
	<MTSetVar name="Youbi" value="2">
</mt:CalendarWeekHeader>

<!-- 日付文字列をリンクつきで生成 -->
<MTSetvarBlock name="DayLinks">
	<mt:CalendarIfEntries>
		<mt:Entries lastn="1">
			<a href="<$mt:EntryPermalink$>"><$mt:CalendarDay$></a>
		</mt:Entries>
	</mt:CalendarIfEntries>
	<mt:CalendarIfNoEntries>
		<$mt:CalendarDay$>
	</mt:CalendarIfNoEntries>
	<mt:CalendarIfBlank>
		None
	</mt:CalendarIfBlank>
</MTSetvarBlock>

<!-- フォント大きさを弄る -->
<MTSetvar name="FSize" value="100">
<mt:CalendarIfEntries>
	<MTSetvarBlock name="EntN"><MTEntriesCount></MTSetvarBlock>
	<MTGetVar name="EntN" value="20" op="*" setvar="tmp">
	<MTGetVar name="FSize" value="$tmp" op="+" setvar="FSize">
</mt:CalendarIfEntries>

<!-- スタイル調整・出力 -->
<MTUnless name="DayLinks" like="None">
	<MTCalendarIfToday><strong></MTCalendarIfToday>
	<MTIf name="Youbi" eq="0">
		<span style="font-size: <MTGetVar name="FSize">%;"><MTGetVar name="DayLinks"></span>
	<MTElseif name="Youbi" eq="1">
		<span style="font-size: <MTGetVar name="FSize">%;font-style: italic;"><MTGetVar name="DayLinks"></span>
	<MTElseif name="Youbi" eq="2">
		<span style="font-size: <MTGetVar name="FSize">%;">【♪<MTGetVar name="DayLinks">♪】</span>
	<MTElse>
	</MTIf>
	<MTCalendarIfToday></strong></MTCalendarIfToday>
</MTUnless>

</mt:Calendar>

結果と考察

Youbi変数を初期化、初期値は0である。土曜であれば1、日曜であれば2がセットされる。0のままということは平日である。

DayLinks変数には、エントリリンク付きの日付をまとめてセット。MTSetvarBlockは、テンプレートタグの出力結果のみならず、このようなhtmlタグも含めて記述できるので非常に重宝する。なお、mt:CalendarIfBlankではNoneというデータをセットしているんだが、これはブランクの場所には日付はないということを明示的にセットしているということである。書き方は色々あると思う。

FSize変数には、フォントサイズを%単位でセットする。計算式であるが、100+(エントリ数×20)である。つまりエントリがない場合は100、エントリが1個なら120、エントリが3個なら160となる。

MTGetVar name="FSize" value="$tmp" op="+" setvar="FSize"の部分がよくわからない方がいらっしゃるかもしれない。これはFSize変数を計算するのにFSize変数自身の値を用いているという意味である。たとえばA=A+1というプログラムコードは、右辺から計算され、Aへ代入される、ということとよく似ている。

出力では、DayLinks変数にNoneという文字を含まないもののみ、今日のエントリを太字で、土曜ならイタリックで、日曜なら【♪ ♪】で挟んで、文字大きさを変えつつ出力する。

けっこう無駄なことをやっているが、まあ、実験なので。

トラックバック(0)

このブログ記事を参照しているブログ一覧: ファンキーな横置きカレンダー

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

コメントする






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

parts

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

あわせて読みたい

なかのひと

2008年4月5日開催、MT4LP5

2008 yoshi(apstar)