組み込みのテンプレート ディレクトリ カスケードについて知っていましたか? addTemplateDirとsetTemplateDirを使用すると、複数のディレクトリを指定できます。
$smarty->setTemplateDir(array(
'google' => 'my-templates/google/',
'default' => 'my-templates/default/',
));
$smarty->display('foobar.tpl');
Smarty は最初に検索を試み、見つからmy-templates/google/foobar.tpl
ない場合は検索を試みmy-templates/default/foobar.tpl
ます。これを使用して、完全なテンプレート カスケードを構築できます。
同じカスケード レベルに多くの要素がある場合、これはあまり役に立ちません。default.tpl の他に、google、yahoo、bing 用の特定のテンプレートがあるとします。ソリューションには、デフォルトのテンプレート ハンドラー関数が含まれる場合があります。Smarty が見つからないテンプレートに遭遇するたびに、このコールバックは最後の手段として実行されます。フォールバックとして使用するテンプレート ファイル (またはテンプレート リソース) を指定できます。
したがって、 {include}、{extend}、->fetch()、->display() が可能site_google.tpl
です。ファイルが存在する場合、すべて問題ありません。そうでない場合は、コールバックを に置き換え_google
て_default
、デフォルト テンプレートにフォールバックすることができます。
template_dir カスケードもデフォルトのテンプレート ハンドラー関数も適用できない場合は、カスタム テンプレート リソースを掘り下げる必要があります。