2011-02-04 3 views
0

私はその質問がそれほど良いとは思えませんでしたが、ここでより説明してみましょう。SMARTYのインクルードテンプレートのファイル名には:defaultを使用3

SMARTY 3をテンプレートシステムとして使用しているサイトがあります。

/templates/place1/inner_a.tpl 
/templates/place1/inner_b.tpl 

/templates/place2/inner_b.tpl 
/templates/place2/inner_c.tpl 

/templates/default/inner_a.tpl 
/templates/default/inner_b.tpl 
/templates/default/inner_c.tpl 

これらは、これまでのところ大きな

{include file="{$temp_folder}/{$inner_template}"} 

を使用して、親テンプレートに含まなっている:私は、次のようなテンプレート構造を持っています。私がやりたかったのは、ファイル{$temp_folder}/{$inner_template}が存在しない場合は、default/{$inner_template}の同等のファイルを使用しています。そのファイルが実際に存在していないので、私は、{include file="place1/inner_c.tpl"}を行う場合

すなわち

はそれが可能です「デフォルト/ inner_c.tpl」が含まれて?

+1

代わりに[StackOverflow](http://stackoverflow.com/)にお尋ねください。このサイトは主観的で柔らかい質問のためのものです。 –

+0

@Andrew動いてくれてありがとう。それは私の最初の質問であり、私はどちらを使うべきか分からなかった。 –

答えて

0

あなたはPHPでそれを行う必要があります、smartyはファイルが存在するかどうかをチェックする方法がありません。

独自のテンプレートハンドラも作成できます。

<?php 
// put this function somewhere in your application 

function make_template ($resource_type, $resource_name, &$template_source, &$template_timestamp, 
&$smarty_obj) 
{ 
    if($resource_type == 'file') { 
     if (! is_readable ($resource_name)) { 
      // create the template file, return contents. 
      $template_source = "This is a new template."; 
      require_once SMARTY_CORE_DIR . 'core.write_file.php'; 
      smarty_core_write_file(array('filename'=>$smarty_obj->template_dir . DIRECTORY_SEPARATOR . $resource_name, 'contents'=>$template_source), $smarty_obj); 
      return true; 
     } 
    } else { 
     // not a file 
     return false; 
    } 
} 

// set the default handler 
$smarty->default_template_handler_func = 'make_template'; 
?> 
+0

ああ、それは悪いです。しかし、別のテンプレートハンドラを作成する必要があります。速い答えに感謝します。 –

関連する問題