0

Smarty 2.6.9 キャッシングに問題があります。2 つのテンプレートが呼び出さconfirmation.tplれ、どちらもコードベースの異なるディレクトリに保存されています。

ただし、コンパイルされると、/cache/gb/ディレクトリにコンパイルされます。これら 2 つのテンプレートについてのみ、コンパイルを防止したいので、force_compileメンバー変数を使用しようとしましたが、これはまったく効果がなく、テンプレートは一貫してキャッシュされます。

これが示す問題は、両方のテンプレートが同じページでconfirmation.tpl(別々のコードによって) 呼び出されているため、1 つのテンプレートが両方に使用されており、問題が発生していることです。

このテンプレートがこのようにコンパイルおよびキャッシュされるのを防ぐ方法はありますか?

「confirmation.tpl」テンプレートのみに「no_compile」を設定するフラグを渡しています。

    $this->obj = new Smarty;
    $this->obj->caching = false;
    $this->obj->cache_lifetime = 10; 
    $this->obj->compile_check = true;
    $this->obj->template_dir = $this->tpl_path;

    if ($this->no_compile) {
        $this->obj->force_compile = false;
        $this->obj->compile_check = false;
    }
4

1 に答える 1

2

display/fetch でさまざまな設定を使用$compile_idして、ディスク上のさまざまな物理ファイルを取得できます (ただし、パスに応じて、Smarty がこれを自動的に処理する必要があると思います)。ステートメントcompile_idにも設定できます。{include}

貼り付けたコードが何を意味するのかわかりませんがforce_compile、テンプレートが表示されるたびに Smarty がテンプレートを再生成するようにするには、オンにすることをお勧めします (falseデフォルトです)。

于 2013-02-26T14:51:53.867 に答える