はじめての DynamicMTML #10 - クエリを処理する4つのテンプレートタグ

2012-01-26
6分で読了
更新: 2025-12-14

目次

DynamicMTML には、クエリを処理するテンプレートタグがいくつか用意されています。今日は、そのうちの4つ、MTQueryLoop、MTQueryVars、MTSetQueryVars、MTQuery を紹介します。

なお、検索サイトやサイト内検索からの流入の際に、検索されたキーワードを処理する MTReferralKeywords というタグもあります。これについては、前回の記事を参照してください。

注意点

本題に入る前に、ひとつ注意点があります。クエリーの文字列を扱うときは、セキュリティを考慮して、モディファイアに「escape="html"」を付けるようにしましょう。

※この記事の公開時に、数ヶ所 escape="html" の記述が漏れていました。すいませんでした。

MTQueryLoop タグ(ブロックタグ)

MTQueryLoop タグは、key モディファイアで指定したクエリーの配列をループ出力するブロックタグです。クエリーの配列とは、foo[]=はじめて&foo[]=dynamicmtml といった形になります。

例えば、次のような URL のリクエストがあったとします。

http://tinybeans.info/search.html?q[]=はじめて&q[]=dynamicmtml

この場合は、次のように key モディファイアに q を指定して値を取り出せます。



q =

出力結果は次のようになります。

q = はじめて
q = dynamicmtm

また、MTQueryLoop 内では、以下の値が MTVar にセットされます。

  • __key__ : key モディファイアで文字列
  • __value__ : key モディファイアで指定したクエリ文字列の配列の値
  • __first__ : ループの最初
  • __counter__ : ループの何回目か
  • __odd__ : 奇数回目の出力
  • __even__ : 偶数回目の出力
  • __last__ : ループの最後

つまり、先ほどのコードは次のように書いても同じ出力結果となります。



=

MTQueryVars タグ(ブロックタグ)

MTQueryVars タグは、クエリー文字列の配列を変数 key と value にセットしてループ出力します。

例えば、次のような URL のリクエストがあったとします。

http://tinybeans.info/search.html?q=dynamicmtml&limit=5

この場合は、次のようにして値を取り出せます。


=

出力結果は次のようになります。

q = dynamicmtml
limit = 5

MTQueryVars 内では、以下の値が MTVar にセットされます。

  • key : クエリのキーにあたる文字列
  • value : 上記 key に対する値
  • __first__ : ループの最初
  • __counter__ : ループの何回目か
  • __odd__ : 奇数回目の出力
  • __even__ : 偶数回目の出力
  • __last__ : ループの最後

ちなみに、クエリが「?q[]=はじめて&q[]=dynamicmtml&limit=5」という配列だと出力結果は次のようになります。

q = Array 
limit = 5

MTSetQueryVars タグ(ブロックタグ)

MTSetQueryVars タグは、リクエストのクエリー文字列を、キーの名前の変数に値をセットします。

例えば、次のような URL のリクエストがあったとします。

http://tinybeans.info/search.html?q=dynamicmtml&limit=5

この場合は、次のようにして値を取り出せます。


q =

limit =

出力結果は次のようになります。

q = dynamicmtml
limit = 5

先ほどの MTQueryVars はキーと値をセットで順次取り出しましたが、こちらの MTSetQueryVars は、キーの名前の変数名(q や limit など)を明示的に指定して値を取り出す形になります。

ちなみに、この変数が使えるのは MTSetQueryVars タグの中だけになります(他の2つのブロックタグも同様です)。つまり、次のテンプレートのように MTSetQueryVars タグの外側では何も出力されません。



中:,


外:,

出力結果は次のとおりです。

中:dynamicmtml,5
外:,

MTSetQueryVars の外でも使いたい場合は、次の MTQuery タグを利用します。

MTQuery タグ(ファンクションタグ)

MTQuery タグは、key モディファイアで指定したクエリー文字列の値を出力します。

例えば、次のような URL のリクエストがあったとします。

http://tinybeans.info/search.html?q=dynamicmtml&limit=5

この場合は、次のようにして値を取り出せます。


q =

limit =

出力結果は次のようになります。

q = dynamicmtml
limit = 5

この MTQuery タグの値を変数にセットすれば、その後のテンプレートで自由に使うことができます。




パラメータは、「?q=&limit=」です。

この出力結果は次のようになります。

パラメータは、「?q=dynamicmtml&limit=5」です。

以上です。

この記事をシェア

関連記事