別ファイルの外部テンプレートファイルを指定場所へ展開する。
external( 'template-filename' [,false] )
template-filename : 差し込むテンプレートファイル名
部分的なテンプレートとして保存された別のテンプレートファイルを差し込み展開します。
1段目の外部テンプレート内のタグは通常のテンプレートと同様に展開処理されますが、2段目以降のexternalタグ呼び出しは、デフォルトでは展開されません。
これは file-A から file-B を呼び出した際、file-B から更に file-A を呼び出すといった永久ループを防ぐ為、特別に制限された仕様です。
これを解除するには、「$skConf['EXTERNAL_CALLBACK'] = true」にする必要があります。
・テンプレートベースDIRの設定を追加
Skinny 0.3.3から $skConf['TEMPLATE']['BASEDIR'] が追加されました。
テンプレートの保存先をデフォルト指定するもので、ここに記述されたパスをベースとした相対パスでテンプレートを参照します。
例えば $skConf['TEMPLATE']['BASEDIR'] = "/var/www/html/template/"; と設定し、
<% external("common_header.html") %> と記述する事でスクリプトのパスに依存する事なく、
"/var/www/html/template/common_header.html" を参照します。
更に、この状態でどうしても違うDIRにあるテンプレートを参照したい場合は、
<% external("/var/www/html/template2/common2_header.html",false) %> のようにテンプレートを絶対パスで指定し、第二引数に false を設定する事で、ベース指定を無視して指定されたテンプレートを読みに行きます。
外部テンプレートから更に外部テンプレートを呼び出すサンプルを用意しました。
連続展開設定がONとOFFで、出力結果がどう変わるのかに注目してください。
<?php
include_once( "Skinny.php" );
$out = array();
$out['main_title'] = "早口言葉";
$out['question'] = "生麦生米と言えば?";
$out['answer'] = "生たまご";
// メインテンプレートへ渡す
$Skinny->SkinnyDisplay( "external_sample.html", $out );
?>
さてここで「<% echo(main_title) %>」の問題です。<br /> <br /> <!-- externalした結果を表示 --> <% external('external_template_1.html') %>
Q.<% echo(question) %><br /> <% external('external_template_2.html') %>
A.<% echo(answer) %><br />
さてここで「早口言葉」問題です。 Q.生麦生米と言えば?
さてここで「早口言葉」問題です。 Q.生麦生米と言えば? A.生たまご