ども。鉄王です。
ここ1週間ほど、新規に構築するオンラインショップの案件で『Color Me Shop! pro』と格闘しています。久しぶりの「Color Me 案件」であることや、FTPサーバに直にアップできないもどかしさなど、隔靴掻痒ともいえる環境の中で戦っている最中です。
で。
カスタマイズを進めていて、正規表現を使って条件分岐しないといけない場面が出てきました。
『Color Me Shop! pro』には、独自タグ一覧(というより予約されている変数の一覧)が載っているオンラインマニュアルがあり、それはそれで重宝しているのですが
構文についての解説がほとんどない
という状態で、いったいどのように条件分岐すればいいのか見当もつかない状況でした。デフォルトのテンプレートを解析したところ
<{if ... }> 〜 <{else}> 〜 <{/if}>
で判断させればよいということは分かったものの、さらに分岐させたいときに
<{elseif ... }>
とPHP的に書けばいいのか
<{elsif ... }>
とPerl的に書けばいいのかが分からない。そもそも「正規表現で条件分岐」という課題がクリアされていない。
そこでグーグル先生です。
調べたところ『Color Me Shop! pro』はSmartyというPHPのテンプレートエンジンを使ってるっぽい、ということが分かりました。名前を目にした記憶が微かにあるような気がしないでもないのですが、なんでもロジックとデザインを分離するためのソリューションだとかで。
最近はもっぱらWordPressのカスタマイズが中心で、PHPとXHTMLが混在した.phpファイルを書くのも慣れっこのワタシ。Smartyの目指す「ロジックとデザインの分離」に今ひとつピンと来てないのもたしかだったりするものの、まあそれなりにメリットはあるんでしょう。
さて本題です。正規表現による条件分岐。
Perlだとパターンマッチ演算子でチョイチョイだったり、PHPだと preg_match 関数でチョイチョイだったりするこの場面、Smartyではちょっと工夫が必要でした。参考にさせていただいたのはSmarty で正規表現を if 文で使用する | Sun Limited Mt.というエントリー。おかげで無事、『Color Me Shop! pro』でも正規表現による条件分岐ができました。
Smartyの作法が分かると『Color Me Shop! pro』のカスタマイズにも幅が出そうですね。
何かいいテキストないかしら?とAmazonで調べたところ
関連本大杉。
コメントを残す