2010年04月22日

Seesaaブログの独自タグ <% if %> で、論理演算する方法

……を、ずーっと考えてた。
結論、算術演算で何とかなる。

このblogが利用しているblogホスティングサービス、Seesaaブログでは、かなり柔軟なカスタマイズが可能となっている。どれくらいかというと、HTMLを丸ごと書き換える事さえ出来るぐらいだ。

HTMLを書き換える際には、その中にSeesaaブログ独自のタグを埋め込む事になる。『ここにタイトルを入れる』『ここに記事を列挙する』といった指定をするのに。一種のDSLだ。

条件分岐をさせようとした場合、Seesaaブログの独自タグでは次のように書く。


<% if:EXPRESSION %>
  <!-- ここにEXPRESSIONが真の時の内容を記述する -->
<% /if %>

例えば、次のように書く。


<% if:page_name eq 'index' %>
  <p>このパラグラフは、blogのトップページでのみ出力される</p>
<% /if %>

ところが、EXPRESSIONには、複数の条件をAND/OR下ものを書く事が出来ない。例えば、次のような記述は許可されない(そして、パース処理がエラーを吐く為か、何も表示されない)。


<% if:page_name eq 'index' & page_name eq 'archive' %>
  <p>トップページか、過去ログのページで表示させたい。</p>
  <p>……が、上手くいかない。</p>
<% /if %>

<% if:page_name eq 'index' and page_name eq 'archive' %>
  <p>"and"と書いてもダメ。</p>
<% /if %>

<% if:((page_name eq 'index') and (page_name eq 'archive')) %>
  <p>括弧で囲ってもどうにもならない。</p>
<% /if %>

……さてどうしよう?

実は、独自タグ内では算術演算が可能だ。何処まで可能なのか、ハッキリと調べた訳ではないが、加算(+);、減算(-)、乗算(*)が可能なのは確認した。

後は、その特性を利用して、次のように書ける事が分かる。


<!-- 論理和(or) -->
<% if:((page_name eq 'index') + (page_name eq 'archive')) %>
  <!-- snip -->
<% /if %>

<!-- 論理積(or) -->
<% if:((page_name eq 'archive') * (archive_page_name ne 'mday')) %>
  <!-- snip -->
<% /if %>

否定(not)はちょっと思いつかない。page_name eq 'index'page_name ne 'index'のような、条件を逆にする手法ぐらいだろうか。

タグ:seesaaブログ
posted by 天井冴太 at 04:10 | Comment(0) | TrackBack(2) | Hack | このブログの読者になる | 更新情報をチェックする
投票お願いします 人気blogランキング - 投票する
この記事へのコメント
コメントを書く
お名前: [必須入力]

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

コメント欄右下をドラッグ&ドロップすると、コメント欄の拡大縮小が出来ます。
認証コード: [必須入力]


※画像の中の文字を半角で入力してください。

この記事へのトラックバック

Seesaaブログの独自タグ内で使用可能な演算を調べてみた。
Excerpt: 実は、独自タグ内では算術演算が可能だ。何処まで可能なのか、ハッキリと調べた訳ではないが、加算(+);、減算(-)、乗算(*)が可能なのは確認した。 ……と、Seesaaブログの独自タグ &amp..
Weblog: AMAgrammar &amp;lt;&amp;gt; PROgrammer
Tracked: 2010-04-25 04:31

Seesaaブログ独自タグ内では、2項を超える多項式が書けない
Excerpt: そういえば前回書き忘れてたんだけど、Seesaaブログの独自タグ内では2項を超える多項式が書けない。括弧使えば出来るけど。 例えば、 &amp;lt;% echo(1 + 2) %&amp;gt; …..
Weblog: AMAgrammar &amp;lt;&amp;gt; PROgrammer
Tracked: 2010-04-26 02:34