NakajiJapan

餓鬼の超弩級日記


[zendframework][smarty]PC/Mobile版切替時にSmartyの設定で気をつけること

最近ハマったこと。

携帯版とPC版でテンプレートを切り分けているときにちゃんとテンプレートキャッシュも別で保存しておかないと
最初に表示した画面の状態をずっと保持し続けてしまう。たとえば、PC版で表示したら携帯版で表示しても
PC版で表示されてしまう。

当たり前のことだけど、別にしないとだめだよね。

Smartyのコンパイルファイル(templates_c側)を一緒のディレクトリ・ファイルにしないようにします。
なので携帯版はSMARTY_COMPILE_IDに「_mb」を追加して別管理にしました。

以下がディレクトリ構造。

---------------- 例 -------------------
[root@hoge] # tree templates_c
templates_c
|-- ref
|   |
|   `-- %%DE
|       `-- DE7
|           `-- DE7C2150%%header.html.php
`-- ref_mb
    |
    `-- %%DE
        `-- DE7
            `-- DE7C2150%%header.html.php

Smartyのキャッシュを有効にしたときはまたもう少し考えないといけないな。

例えば、日記を新しく作成した場合はどちらとも作成しないといけないね。

No Comments »

即興でsmarty関数を作ってみる

function smarty_function_my_assign($params, &$smarty)
{
    $str="";
    foreach ($params as $key => $value) {
        if (substr($key, 0, 5) === "value") {
            $str .= $value;
        }
    }

    $smarty->assign($params['var'], $str);

}
{my_assign var-"_test" value1="aaaa"  value2="bbbb"}

{*aaaabbbb*}
{$_test}

まぁデフォルトのcatでもいいけどさ。何となくあったらいいな的機能

No Comments »