その他

PowerCMSXの仕様

kurumin

正規表現を使って文字列を分割する方法

PowerCMSXでは、テンプレート変数に対して regex_replace を使うことで、正規表現による文字列の変換や抽出が可能。

例えば、変数 b.style"txt-img" のような "〇〇〇-△△△" 形式の文字列が入っている場合、ハイフンの前後をそれぞれ別の変数に分けて取得するには以下のように記述する。

<mt:ignore><!-- 
「〇〇〇-△△△」形式の文字列から、
前半(〇〇〇)と後半(△△△)を正規表現で抽出する(例:txt-txt, txt-img)
 --></mt:ignore>
<mt:SetVarBlock name="regexp">/^([^-]+)-([^-]+)$/</mt:SetVarBlock>
<mt:var name="b.style" regex_replace="'$regexp','\$1'" setvar="l_style">
<mt:var name="b.style" regex_replace="'$regexp','\$2'" setvar="r_style">

<!-- 出力例 -->
<mt:Var name="l_style"> <!-- txt -->
<mt:Var name="r_style"> <!-- img -->
PowerCMSX での $1, $2 の扱いについて

PowerCMSXではテンプレート内で $1, $2 をそのまま使うと、テンプレート変数として解釈されてしまうため、正規表現の置換式内で使用する場合は \ を前に付けて \$1\$2 とする必要がある。

よく使用するタグ

mt:var

連想配列のキー指定も可能。

mt:getvar

通常の変数の取得に特化mt:varより若干高速。なるべくこっちを使う。

よく使用するモディファイア

<mt:var name="hoge" trim let="hoge_after">

前後のスペース削除

  • trimは前後にスペースがある可能性があるときに使う。

変数格納

  • letはローカル変数。ブロックの中でしか使えない。下記のsetよりもなるべくこっちを使う。
  • set、またはsetvarはグローバル変数。ブロックの外でもどこでも使える。

モジュールの読み込み

<mt:include module="g_mod_parse_blocks_two_column" workspace_id="1" b="b">
  • 同じブログ内での呼び出しでも、workspace_idを指定する必要がある。
  • 引数の指定も可能。b=”b”の値は変数だが、$を付ける必要はない。

文字列を特定の文字で区切って配列に格納

item.summaryの内容を改行で区切って変数summary_listに代入し、1つ目の要素を出力している例。

<mt:var name="item.summary" split="\n" let="summary_list">
<mt:var name="summary_list.0">

ABOUT ME
記事URLをコピーしました