skinny

in_gl_A

Skinny タグマニュアル

external - 外部テンプレートファイルを展開する

別ファイルの外部テンプレートファイルを指定場所へ展開する。

説明

書式

external( 'template-filename' [,false] )

パラメータ

template-filename : 差し込むテンプレートファイル名

説明

部分的なテンプレートとして保存された別のテンプレートファイルを差し込み展開します。
1段目の外部テンプレート内のタグは通常のテンプレートと同様に展開処理されますが、2段目以降のexternalタグ呼び出しは、デフォルトでは展開されません。
これは file-A から file-B を呼び出した際、file-B から更に file-A を呼び出すといった永久ループを防ぐ為、特別に制限された仕様です。
これを解除するには、「$skConf['EXTERNAL_CALLBACK'] = true」にする必要があります。

Ver 0.3.3以降

・テンプレートベース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コード

<?php
    include_once( "Skinny.php" );
    $out = array();
    $out['main_title'] = "早口言葉";
    $out['question'] = "生麦生米と言えば?";
    $out['answer'] = "生たまご";
    
    // メインテンプレートへ渡す
    $Skinny->SkinnyDisplay( "external_sample.html", $out );
?>

メインテンプレート(external_sample.html

さてここで「<% echo(main_title) %>」の問題です。<br />
<br />
<!-- externalした結果を表示 -->
<% external('external_template_1.html') %>

外部テンプレート1(external_template_1.html

Q.<% echo(question) %><br />
<% external('external_template_2.html') %>

外部テンプレート2(external_template_2.html

A.<% echo(answer) %><br />

出力結果

$skConf['EXTERNAL_CALLBACK'] = false の場合

さてここで「早口言葉」問題です。

Q.生麦生米と言えば?

$skConf['EXTERNAL_CALLBACK'] = true の場合

さてここで「早口言葉」問題です。

Q.生麦生米と言えば?
A.生たまご

btn_pagetop