キャッシュのグループ
$cache_id のグループを設定する事で、 より複雑なグループにする事が出来ます。これは $cache_id の値の中の | によって各サブグループに分けられる事で実現できます。 サブグループはいくらでも持つ事が出来ます。
ディレクトリ階層のようなキャッシュグループを考える事が出来ます。 例えば 'a|b|c' というキャッシュグループは、 '/a/b/c/' というディレクトリ構造だと考えられます。
clear_cache(null,'a|b|c') はファイル '/a/b/c/*' を、 clear_cache(null,'a|b') はファイル '/a/b/*' を削除するのに似ています。
$compile_id を clear_cache(null,'a|b','foo') のように指定すると、 それをキャッシュグループに追加して '/a/b/c/foo/' として扱います。
テンプレート名を clear_cache('foo.tpl','a|b|c') のように指定すると、 Smarty は '/a/b/c/foo.tpl' を削除しようと試みます。
また、'/a/b/*/foo.tpl' のように、 複数のキャッシュグループの下でテンプレート名を指定して削除する事は出来ません。 キャッシュグループは左から右へ向かう順序でのみグループ化を定義できます。 グループとしてそれらをクリアするためには、 単一のキャッシュグループ階層の下でテンプレートをグループ化する必要があります。
キャッシュのグループ化はテンプレートディレクトリ階層によって混乱させられるべきではなく、 テンプレートがどのような構造なのかも知り得ません。例えば、 themes/blue/index.tpl のようなテンプレート構造があり、 "blue" テーマのキャッシュファイルを全てクリアしたい時、 テンプレートファイル構造をまねた display('themes/blue/index.tpl','themes|blue') のような キャッシュグループ構造を作成する必要があり、それならば clear_cache(null,'themes|blue') によってキャッシュをクリアする事が出来ます。