EC-CUBE:コンパイルされたテンプレートキャッシュをクリアする

EC-CUBEでプラグイン開発等のテストを行なっている場合、ソースコードの変更が反映されない場合がありますが、これはEC-CUBE内のコンパイル済みテンプレートキャッシュが再利用されていることによるものです。

EC-CUBEのバージョン2.12.2を元にした記事です。

これをリセットするには、SC_Utils_Exクラスの「clearCompliedTemplate」関数を使います。

「clearCompliedTemplate」は正しくは「Compiled」で、おそらくこれは開発側のスペルミスですね…(^-^;; 将来的に修正される可能性があるので、この関数を使用する箇所は統一したクラス内で行う等して局所管理しておいたほうが良さそうです。

//コンパイルされたファイルを削除
SC_Utils_Ex::clearCompliedTemplate();

この関数の中身ですが、設定されたテーマディレクトリやadminディレクトリ等のSmartyのコンパイルディレクトリ(templates_c)の中のファイルを削除することで実現されています。

SC_Helper_FileManager_Ex::deleteFile(COMPILE_REALDIR, false);
SC_Helper_FileManager_Ex::deleteFile(COMPILE_ADMIN_REALDIR, false);
SC_Helper_FileManager_Ex::deleteFile(SMARTPHONE_COMPILE_REALDIR, false);
SC_Helper_FileManager_Ex::deleteFile(MOBILE_COMPILE_REALDIR, false);

EC-CUBEプラグインを開発している場合、この関数をregister関数の中で呼び出すとうまく消えてくれますよ。

注:ただし、プラグインを無効にし、再度有効にしたときにregister()が呼ばれて「[/admin/ownersstore/index.php] Fatal error(E_ERROR): Class ‘SC_Helper_FileManager_Ex’ not found on […/data/class/util/SC_Utils.php」というエラーが出てしまうので注意。
プラグインを再インストールするときにもこのエラーで失敗してしまいます。

function register(SC_Helper_Plugin $objHelperPlugin,$priority) {
...
SC_Utils_Ex::clearCompliedTemplate();
}

もちろん、テストが終了したら削除しておくこともお忘れなく。

このページをシェアする

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

2013-02-12