4

私は、それを指すすべての Web サイトに同じテンプレートを使用する PHP wiki エンジンを作成しています。ただし、一部の Web サイトにはカスタム テンプレートがあります。このカスタム テンプレートが存在する場合、Smarty にそれを使用させることはできますか?

これが私のディレクトリ構造です:

/web/wiki/templates                 <--  all templates here
/web/wiki/templates/wiki.domain.com <-- individual template

/web/wiki/templates/wiki.domain.com最初にでテンプレートをスマートに使用するにはwiki.domain.comどうすればよいですか? テンプレートがこのディレクトリに存在しない場合は、 でテンプレートを使用し/web/wiki/templatesますか?

Smarty 用に複数のテンプレート ディレクトリを定義し、最初に最上位ディレクトリからテンプレートを選択することはできますか? これができれば、テンプレート ディレクトリの順序を簡単に変更できます。

/web/wiki/templates/wiki.domain.com
/web/wiki/templates                
4

4 に答える 4

1

default_template_handlerは、テンプレートが見つからなかった場合に呼び出されるコールバックです。単体テストでいくつかの「例」を見つけることができます

于 2012-06-17T08:20:23.033 に答える
0

可能性のあるテンプレートがたくさんある場合、Krister のコードを拡張するには:

$possibleTemplates = array(
    // ...
);

do {
    $template = array_shift($possibleTemplates);
} while($template && !$smarty->template_exists($template));

if(!$template) {
    // Handle error
}

$smarty->display($template);
于 2012-06-16T23:37:51.003 に答える
0

異なるテンプレートに優先度を設定できるとは思いませんが、よくわかりません。あなたができることは、特定のテンプレートが存在するかどうかを確認することです:

// check for if a special template exists
$template = 'default.tpl.php';
if ($smarty->template_exists('example.tpl.php')) {
   $template = 'example.tpl.php';
}
// render the template
$smarty->display($template);
于 2012-06-16T23:21:30.810 に答える