PowerCMS™
アルファサードのゴールデンウィーク休業について を追加しました。
[ブログ] PowerCMS 6 でのアップデートまとめ を追加しました。
[新着情報] 多要素認証設定画面の QR コードが表示されない問題への対策ファイル を追加しました。
[新着情報] PowerCMSクラウド 月額費用の価格改定に関する追加情報を公開します を追加しました。

テンプレートタグの使い方

PowerCMS では、XML 形式のテンプレートタグを使ってコンテンツ出力を制御します。HTML タグが囲んだ内容を意味づけるのに対して、PowerCMS のテンプレートタグは命令を実行するプログラムとしての側面を持っています。例えば、公開中の新しい記事 5 件分のタイトルを出力する場合、下記のように記述します。

<ul>
<MTEntries lastn="5">
  <li><$MTEntryTitle$></li>
</MTEntries>
</ul>

上記の例でいうところの、「MTEntries」「MTEntryTitle」がテンプレートタグです。「lastn」はモディファイアと呼ばれます。

ブロックタグとファンクションタグ

MTEntries」は開始タグと終了タグを持っており、ブロックタグと呼ばれます。ブロックタグは、開始タグと終了タグで囲んだ内容を、指定した回数分繰り返して処理し、得られた内容を出力します。これを「ループする」「ループ処理する」などと呼ぶことがあります。

MTEntryTitle」は開始タグ、終了タグを持たない単体のテンプレートタグで、ファンクションタグと呼ばれます。ファンクションタグは情報を出力するためのタグで、ブロックタグによって現在処理中の記事のタイトルを出力します。

※ テンプレートタグには接頭辞「MT」をつけます。「mt」「mt:」のように記述することもできます
※ 上記例では視認性のため、ファンクションタグに「$」をつけていますが、省略することができます
※ 小文字で記述することもできます

モディファイア

モディファイアは、ブロックタグにもファンクションタグにも使われることがあります。処理回数や並び順を指定するなど、出力する内容を変化させることができます。「lastn」は、新しい方から N 件、を意味しています。

ブロックタグ MTEntries に対する「lastn」は、このタグの動作を制御するためのモディファイアなので、例えばファンクションタグ MTEntryTitle に使っても無視されます。このような特定のタグに対してのみ機能するモディファイアと、どんなタグに対しても機能する グローバル・モディファイア があります。

特殊なテンプレートタグ

条件タグ

ブロックタグの中でも、囲んだ内容を、条件が整った場合のみ処理するタグが条件タグです。先ほどのテンプレートタグ記述の例を、条件タグ MTEntriesHeader / MTEntriesFooter を使って書き直してみます。

<MTEntries lastn="5">
  <MTEntriesHeader><ul></MTEntriesHeader>
  <li><$MTEntryTitle$></li>
  <MTEntriesFooter></ul></MTEntriesFooter>
</MTEntries>

条件タグ MTEntriesHeader / MTEntriesFooter は、ブロックタグ MTEntries の処理の中でも、最初の一回 / 最後の一回にのみ処理するタグです。当初の記述では HTML タグ ul は対象となる記事が一件もない場合でも出力されていましたが、これら条件タグを使い、ブロックタグ MTEntries の中に入れることで、対象となる記事が存在する場合のみ出力させることができるようになりました。

MTIf タグとテンプレート変数

条件タグの中でも特殊なのが、MTIf です。処理条件として様々な指定を行うことができます。下記の例では、ワークスペースに公開中の記事が存在する場合のみ、ワークスペース名を出力しつつ、公開中の記事を新しい方から 5 件出力します。

<MTIf tag="WebsiteEntryCount">
  <p><$MTWebsiteName$></p>
  <MTEntries lastn="5">
    <MTEntriesHeader><ul></MTEntriesHeader>
      <li><$MTEntryTitle$></li>
    <MTEntriesFooter></ul></MTEntriesFooter>
  </MTEntries>
<MTElse>
  <p><$MTWebsiteName$> には公開中の記事はありません</p>
</MTIf>

上記では tag モディファイアにテンプレートタグ「WebsiteEntryCount」を指定しました(tag モディファイアでは接頭辞「MT」を省略することができます)。MTIf タグは、その時点での MTWebsiteEntryCount タグの出力結果を使って処理を行います。

また、MTElse タグを使うことで、条件が成立しなかった場合に「公開中の記事はありません」と出力しています。

テンプレート変数を使った記述

変数とは、名前をつけたデータのことです(名前をつけられるデータの入れ物、のように説明されることもあります)。名前を呼ぶことでそのデータを取り出すことができる機能です。

テンプレート処理中に使われる変数を「テンプレート変数」と呼びます。上記の例は、テンプレート変数を使うことで下記のように書き換えることができます。

<$MTWebsiteEntryCount setvar="entry_count"$>
<MTIf name="entry_count">
  <p><$MTWebsiteName$></p>
  <MTEntries lastn="5">
    <MTEntriesHeader><ul></MTEntriesHeader>
      <li><$MTEntryTitle$></li>
    <MTEntriesFooter></ul></MTEntriesFooter>
  </MTEntries>
<MTElse>
  <p><$MTWebsiteName$> には公開中の記事はありません</p>
</MTIf>

ここでは、ファンクションタグ MTWebsiteEntryCount の出力内容を、setvar モディファイアを使ってテンプレート変数 entry_count に格納しておき、MTIf タグの name モディファイアにテンプレート変数の名前を指定しています。こうすることで、MTIf タグはテンプレート変数 entry_count を展開(ここでは MTWebsiteEntryCount の出力内容に戻す)して条件の成否を判断させることができます。

モディファイアにテンプレート変数を使用する

モディファイアにはテンプレートタグを記述することができません。例えば、下記のような記述は機能しません。

<MTSetVar name="entry_limit" value="5">
<MTEntries lastn="<MTVar name="entry_limit">">
  <li><$MTEntryTitle$></li>
</MTEntries>

このように、テンプレート変数 entry_limit の値を lastn モディファイアに渡したい場合は、下記のように記述してください。

<MTSetVar name="entry_limit" value="5">
<MTEntries lastn="$entry_limit">
  <li><$MTEntryTitle$></li>
</MTEntries>
次は
一覧へ

お問い合わせ

お問い合わせフォームがご利用できない場合は、以下のメールアドレスからも受け付けております。
contact@alfasado.jp

製品資料ダウンロード

パンフレットデータ、提案用資料などがダウンロードできます。