はじめての DynamicMTML #10 - クエリを処理する4つのテンプレートタグ
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 を指定して値を取り出せます。
<mt:DynamicMTML>
<mt:QueryLoop key="q" glue="<br />">
q = <mt:Var name="q" escape="html">
</mt:QueryLoop>
</mt:DynamicMTML>
出力結果は次のようになります。
q = はじめて
q = dynamicmtm
また、MTQueryLoop 内では、以下の値が MTVar にセットされます。
- __key__ : key モディファイアで文字列
- __value__ : key モディファイアで指定したクエリ文字列の配列の値
- __first__ : ループの最初
- __counter__ : ループの何回目か
- __odd__ : 奇数回目の出力
- __even__ : 偶数回目の出力
- __last__ : ループの最後
つまり、先ほどのコードは次のように書いても同じ出力結果となります。
<mt:DynamicMTML>
<mt:QueryLoop key="q" glue="<br />">
<mt:Var name="__key__" escape="html"> = <mt:Var name="__value__" escape="html">
</mt:QueryLoop>
</mt:DynamicMTML>
MTQueryVars タグ(ブロックタグ)
MTQueryVars タグは、クエリー文字列の配列を変数 key と value にセットしてループ出力します。
例えば、次のような URL のリクエストがあったとします。
http://tinybeans.info/search.html?q=dynamicmtml&limit=5
この場合は、次のようにして値を取り出せます。
<mt:QueryVars glue="<br />">
<mt:Var name="key" escape="html"> = <mt:Var name="value" escape="html">
</mt:QueryVars>
出力結果は次のようになります。
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
この場合は、次のようにして値を取り出せます。
<mt:SetQueryVars>
q = <mt:Var name="q" escape="html"><br />
limit = <mt:Var name="limit" escape="html">
</mt:SetQueryVars>
出力結果は次のようになります。
q = dynamicmtml
limit = 5
先ほどの MTQueryVars はキーと値をセットで順次取り出しましたが、こちらの MTSetQueryVars は、キーの名前の変数名(q や limit など)を明示的に指定して値を取り出す形になります。
ちなみに、この変数が使えるのは MTSetQueryVars タグの中だけになります(他の2つのブロックタグも同様です)。つまり、次のテンプレートのように MTSetQueryVars タグの外側では何も出力されません。
<mt:DynamicMTML>
<mt:SetQueryVars>
中:<mt:Var name="q" escape="html">,<mt:Var name="limit" escape="html"><br />
</mt:SetQueryVars>
外:<mt:Var name="q" escape="html">,<mt:Var name="limit" escape="html">
</mt:DynamicMTML>
出力結果は次のとおりです。
中:dynamicmtml,5
外:,
MTSetQueryVars の外でも使いたい場合は、次の MTQuery タグを利用します。
MTQuery タグ(ファンクションタグ)
MTQuery タグは、key モディファイアで指定したクエリー文字列の値を出力します。
例えば、次のような URL のリクエストがあったとします。
http://tinybeans.info/search.html?q=dynamicmtml&limit=5
この場合は、次のようにして値を取り出せます。
<mt:DynamicMTML>
q = <mt:Query key="q" escape="html"><br />
limit = <mt:Query key="limit" escape="html">
</mt:DynamicMTML>
出力結果は次のようになります。
q = dynamicmtml
limit = 5
この MTQuery タグの値を変数にセットすれば、その後のテンプレートで自由に使うことができます。
<mt:DynamicMTML>
<mt:Query key="q" escape="html" setvar="query_q">
<mt:Query key="limit" escape="html" setvar="query_limit">
パラメータは、「?q=<mt:var name="query_q">&limit=<mt:var name="query_limit">」です。
</mt:DynamicMTML>
この出力結果は次のようになります。
パラメータは、「?q=dynamicmtml&limit=5」です。
以上です。
「はじめての DynamicMTML」に関連する記事
- はじめての DynamicMTML #13 - 指定期間内の記事をリストアップする
- はじめての DynamicMTML #12 - 静的ファイルの PHP を実行する
- はじめての DynamicMTML #11 - MT タグの中で PHP を実行する
- はじめての DynamicMTML #10 - クエリを処理する4つのテンプレートタグ
- はじめての DynamicMTML #09 - MTSearchEntries (5) MTReferralKeywords で検索サイトからの流入に対する関連記事を表示する
- はじめての DynamicMTML #08 - MTSearchEntries (4) MTSplitVars を組み合わせて複数ワードのAND検索
- はじめての DynamicMTML #07 - MTSearchEntries (3) MTSplitVars を組み合わせて複数ワードのOR検索
- はじめての DynamicMTML #06 - MTSearchEntries (2) 基本的な使い方
- はじめての DynamicMTML #05 - MTSearchEntries (1) 動的にブログ記事を検索する
- はじめての DynamicMTML #04 - ログイン状態で分岐する MTIfLogin
- はじめての DynamicMTML #03 - スタティックパブリッシングで DynamicMTML を使う書き方
- はじめての DynamicMTML #02 - .htaccess と .mtview.php の役割
- はじめての DynamicMTML #01 - 準備とインストール
トラックバック
The trackback URL is "".



コメントする