カラーミーTips

 
カラーミーというより、Smartyの Tipsですが。
文字列の先頭何バイトかを判断して分岐したいケースがよくあります。substr くらいあるんじゃね?と思った貴方。甘いです、激甘です。そんなの Smartyにはないんです。
と、ここまで書いて、言い切っていいのか?と怖くなってググってみたらありました。orz

すべてのPHP関数は、暗黙的に修飾子として使用でき、修飾子は組み合わせることもできます。
{$ym|substr:0:4}

あるんです! あるんですよ、貴方。
と、ここまで書いて、ほんとか? カラーミーで使えたか? と思って試してみました。
[code]
Fatal error: Smarty error: [in file:2/product.tpl line 89]:
[plugin] (secure mode) modifier ‘substr’ is not allowed (Smarty_Compiler.class.php, line 1905)
in /home/sites/shop-pro.jp/web/app/libs/smarty/Smarty.class.php on line 1088
[/code]
やっぱ、カラーミーでは使えませんでした。
ということで、本題に戻ると『文字列の先頭何バイトかを判断して分岐したいケース』をカラーミーではどう書くかです。
[code]
<{if $object|truncate:7:"" == "

[/code]
こうやって書くんですねぇ。ちなみに、truncateの最後の””をつけないと、$object|truncate:7 は、”<object…”を返してくるので、このIF文は falseになります。(悩みました)

カラーミーでのTips

 
お仕事でカラーミーのカスタマイズをやってるんですけど、これがなかなか癖があって面倒というか面白いので、少しメモっておきます。
一番美味しいところからひとつ。商品一覧でページ数を求めるときです。
[code lang=”html”]

[/code]
カラーミーは基本 smartyなんですけど、微妙にいろんなところがマスク(使えなく)してあって、使えないんです。
やりたいことは一番上に書いたことですが、そのまま assignしてもエラーになるので、四則演算をバラバラにして、切り捨ては、regex_replaceを使うという裏ワザです。
 
これを使って、[1] [2] [3] [4] みたいなページ・ナビゲータを出すのはこうです。
[code lang=”html”]

<a href="”>

<a class="pbox" href="&page=”>

<a href="”>

[/code]
左右の矢印を出して、間は数字([1] [2] [3]・・・)のリンクです。途中を省略したいときや、いまいるところの前後だけ出す場合はとりあえず考慮してありませんが、できます。
 
二つ目はまた今度。