1

私は面白い問題に遭遇しました。Smarty テンプレート内で Smartyテンプレートを使用する必要があります。

これが理由です。私はさまざまな wiki Web サイトで同じテンプレートを使用しており、各 Web サイトには独自の構成があります。構成には、メイン テンプレートのパーツ (変更されたタイトルや見出しなど) が含まれています。

簡単な例を次に示します。topic-list.template.htmlすべての Web サイトで共有されているファイルがあります。

<div id="topics">
  <h1>{$h1}</h1>
  ...
</div>

ご覧のとおり、このテンプレート ファイルには、<h1>Web サイトごとにカスタマイズできるタグが含まれています。

次に、各 Web サイトに対して、次のような構成ファイルを用意しました (簡略化)。

$config = [
  "h1-titles" => [
      "topics" => "Showing Topics in {\$category}"
  ]
];

ご覧のとおり、構成ファイルには Smarty テンプレートが含まれています。

topic-list.template.htmlそのため、ファイルをレンダリングするときは、$config['h1-titles']['topics']最初に を介してレンダリングし$smarty->fetch("string":$config['h1-titles']['topics'])、それをh1Smarty 変数に割り当てる必要があります。私の簡略化されたコードは次のようになります。

$h1_tag = $smarty->fetch("string":$config['h1-titles']['topics']);
$smarty->assign('h1', $h1_tag);
$smarty->display('topic-list.template.html');

$config['h1-titles']['topics']どうにかして をファイルに自動的に挿入し、topic-list.template.htmlすべてを一度にレンダリングできるのではないでしょうか?

4

2 に答える 2

2

String Template Resourcesのドキュメントをご覧ください。$smarty->fetch('string:…')このアプローチはテンプレート内でも実行できることがすぐにわかります。{include file="string:…"}

于 2012-06-17T08:25:06.633 に答える
1

{ eval }タグが役立つと思います:

{eval} は、変数をテンプレートとして評価するために使用されます。これは、テンプレート タグ/変数を変数に埋め込んだり、タグ/変数を構成ファイル変数に埋め込んだりする場合に使用できます。

http://www.smarty.net/docs/en/language.function.eval.tpl

于 2012-06-17T07:18:49.770 に答える