【覚書】【Smarty】修飾子を用いて後演算しassignする
こつこつとfreoのテンプレートを作成しておりまして、page_allの分岐のために↑のようなのを使いたかったのでメモ。
コード
{math equation="x - 1" x=$page.id|explode:'/'|@count assign=lv}
経緯
ページIDをベースに階層レベルを取りたくて、スラでexplodeして配列数取ればいいじゃん!てなってから先が長かった。 以下、「絶対にプラグインは作らないぞ」という意志の元による格闘の履歴である。
- {php}でエントリやページの変数を使用したくてもそれらはassignされてるヤツだから実行タイミングが異なるよHAHAHAがわかるまでが長かった
- smartyでexplode出来ねえのかよクソがまでも長かった(マニュアル見てた)
- freoでexplode準備されてるじゃん!
- (Smartyマニュアルに戻る)countねえのかよクソが
- replaceで/を半角スペースに置換して単語数にするか…精度落ちるけど…
- ところで最初は0にしたいんだけどおいこれ演算どうすりゃいいんだエラーになるぞ
- (ぐぐりまくる)
- あっ @count でcount関数互換てえっなにその例外処理みたいな@なにこれえっ
- とりあえずexplodeにもどす
- あっ同じようなことQ&Aサイトに投げてる人がいる!
- math…だと…
- ていうかこれでassignてどうすりゃええねん
- あっ引数ついてるまじかやった!!!
1時間くらいやってましたが、最初の数を妥協して1にすりゃよかったんじゃんね…
その後、「SmartyではすべてのPHP関数が暗黙的に修飾子として使用出来る」「配列を修飾子に引き渡すための@」の2点を理解しました… _(:3」∠)_