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/*" を削除するのに似ています。 もし、clear_cache(null,"a|b","foo") のようなcompiled_id が指定されると、付加されたキャッシュグループ "/a/b/c/foo/" として扱われます。 clear_cache("foo.tpl","a|b|c") のようなテンプレート名が指定されると、Smarty は "/a/b/c/foo.tpl" を削除しようと試みます。 また、"/a/b/*/foo.tpl" のような、複数のキャッシュグループの下でテンプレート名を指定して削除する事は出来ません。 キャッシュグループは left-to-right のみ動作します。グループとしてそれらをクリアするためには、 単一のキャッシュグループ階層の下でテンプレートをグループ化する必要があります。
キャッシュのグループ化はテンプレートディレクトリ階層によって混乱させられるべきではなく、 テンプレートがどのような構造なのかも知り得ません。 例えば、"themes/blue/index.tpl" のようなテンプレート構造があり、"blue" テーマのキャッシュファイルを全てクリアしたい時、 テンプレートファイル構造をまねた display("themes/blue/index.tpl","themes|blue") のような キャッシュグループ構造を作成する必要があり、それならば clear_cache(null,"themes|blue") によってキャッシュをクリアする事が出来ます。