Smarty2.0 オンラインマニュアル
http://www.php100.com/manual/smarty
Smarty3.0 オンラインマニュアル
http://www.php100.com/manual/smarty3
1.Smarty3.0
をインストールします
1. スマートとは何ですか?
Smarty は、PHP で書かれたテンプレート PHP テンプレート エンジンです。簡単に言えば、その目的は、PHP プログラマーがプログラムの論理コンテンツを変更しないようにすることです。アーティストのページ デザインに基づいて、アーティストがページを再変更しても、プログラムのプログラム ロジックには影響しません。これは、複数人のコラボレーション プロジェクトで特に重要です。
2. Smarty の利点:
1. 速度:smarty を使用して作成されたプログラムは、他のテンプレート エンジン テクノロジと比較して最大速度の向上を達成できます。
2. コンパイル済みタイプ: Smarty で書かれたプログラムは、実行時に非テンプレート テクノロジの PHP ファイルにコンパイルする必要があります。このファイルは、次回テンプレートが作成されるときに、PHP と HTML を組み合わせて使用されます。テンプレートを再コンパイルする代わりに (ソースプログラムが変更されていない場合)
3. キャッシュ技術:smarty が選択したキャッシュ技術。ユーザーが最終的に見る HTML ファイルを静的 HTML ページにキャッシュできます。
Smarty のキャッシュ属性が true に設定されている場合、ユーザーの WEB リクエストは、smarty によって設定されたキャッシュタイム期間内にこの静的 HTML ファイルに直接変換されます。これは、静的 HTML ファイルを呼び出すことと同じです。
4. プラグイン技術: Smarty はプラグインをカスタマイズできます。プラグインは実際にはいくつかのカスタム関数です。
5. if/elseif/else/endif をテンプレートで使用できます。テンプレート ファイルで判断ステートメントを使用すると、テンプレートを非常に便利に再フォーマットできます。
3. Smarty が適さない場所:
1. リアルタイムで更新する必要があるコンテンツ。たとえば、頻繁にデータを更新する必要がある株式表示のように、このタイプのプログラムに Smarty を使用すると、テンプレートの処理が遅くなります。
2. 小規模なプロジェクト。プロジェクトが単純であるためにアーティストとプログラマーの両方が関与する小規模なプロジェクトの場合、smarty を使用すると、迅速な PHP 開発という利点が失われます。
Smarty の公式 Web サイト、www.smarty.net/download.php を開きます。まだ rc バージョンである Smarty 3.0rc4 をダウンロードします (Release.Candidate. はリリース候補バージョンです。ベータ版と比較すると機能が増えず、デバッグに重点が置かれています!)。 Linux 版と Windows 版にはそれぞれ tar.gz と zip があります。
tar –zxvf Smarty 3.0rc4.tar.gz
をダウンロード後ディレクトリ内のデモ フォルダーにはサンプル ファイルが含まれています。ライブラリはプログラム ファイルです。
/libs/Smarty.class.php #メインファイル
/libs/sysplugins/ #内部プラグイン
/libs /plugins/ #外部プラグイン、自由に拡張可能
/demo/cahce/ #キャッシュ ファイルを配置
/demo/configs / #ロードできる設定ファイルを配置します
/demo/templates/ #テンプレート ファイルを配置
/demo/templates_c/ #コンパイルされたテンプレート ファイルを配置します
Smarty で処理する必要があるファイルのディレクトリに、デモと同じフォルダーを作成するのが最善です (フォルダーには Web ユーザーの書き込み権限があることに注意してください)。もちろん、フォルダー名やフォルダーを変更することもできます。デフォルト値は、smarty によって処理されるファイルの同じレベルのディレクトリです。 Smarty3.0 には php5.0 以降が必要です。
2.Smarty3.0のデバッグ
独自のファイル (index.php など) を作成します。
テンプレート ディレクトリにテンプレート Index.tpl を作成します (これは、ほぼすべてのテキスト ファイルの拡張子にすることができます。一般的に使用されるのは、tpl、php、html です。後者の 2 つは、ブラウザでは安全ではありません。apache を使用して、.tpl ファイルへの直接アクセスを禁止するように httpd.conf を設定するか、テンプレート ディレクトリを Web サイトのドキュメント ツリーの外に配置してください)
[インデックス.php]
require_once("../../Smarty-3.0rc4/libs/Smarty.class.php");
$smarty = 新しい Smarty();
$smarty->assign('name','Han Lingzhi');
$smarty->display(‘templates/index.tpl’);
[Index.tpl] のコード:
こんにちは、{$name}
Smarty コンパイル時の処理プロセスは、ソース PHP ファイル -> テンプレート ファイル (複数回呼び出される可能性があります) -> ソース PHP ファイルです。 。 。
つまり、元のphpファイルの他の処理や出力には影響しません。そのため、Smarty テンプレート ファイルは、完全な HTML またはその一部にすることができます。
Smarty は、まず PHP ソース ファイルを中間ファイル (PHP) にコンパイルします。キャッシュが有効な場合は、コンパイルされたファイルに基づいてキャッシュ ファイル (PHP も) を生成します。キャッシュする必要がある部分はすべてハードコーディングされます。キャッシュが有効でキャッシュ ファイルがある場合、後続の各アクセスはコンパイル済みファイルにアクセスし (コンパイル済みファイルがすでに存在する場合)、1 回のコンパイルに対して複数回呼び出します (単一のファイルに対して複数回、または複数のファイルに対して複数回可能)。有効期限が切れると、キャッシュ ファイルに直接アクセスされ、コンパイルされたファイルはスキップされます。コンパイル済みファイルが生成されると、テンプレート ファイルまたは設定ファイルが変更されない限り、自動的に更新されません。ソース PHP ファイルを変更しても再コンパイルはトリガーされません。コンパイルされたファイルが再生成されたら、キャッシュ ファイルも再生成する必要があります。
Smarty では 2 つの特別なコンパイル設定が可能です:
1. いつでも自動再コンパイルは行われません (オンライン段階): このファイルのコンパイル済みファイルがない場合にのみ生成され、テンプレート ファイルまたは構成ファイルへの変更によって再コンパイルがトリガーされません。
$smarty->setCompile_check(false)
#デフォルトは true です。 false は、コンパイル済みファイルがない場合を除き、ファイル変更が発生してもコンパイル済みファイルが生成されないことを意味します。
$smarty->getCompile_check() #現在のコンパイル チェック設定を取得します
2. いつでも再コンパイルします (デバッグ段階): いつでも再コンパイルします。
$smarty->setForce_compile(true) #デフォルトは false です。true は毎回再コンパイルすることを意味します (キャッシュが有効になっている場合は、毎回再キャッシュします)
$smarty->getForce_compile() #現在の強制コンパイル設定を取得します
3.2 デリミタ
テンプレート ファイルでは、通常の HTML コードと Smarty コードを区別するために区切り文字が使用されます。デフォルトは「{}」ですが、js および css と競合します。
変更も可能です。 3.0 では、テンプレート タグは Smarty2 で認識できる { $abc }、
などのスペースをサポートしません。
ただし、3.0 では動作しません。JavaScript と CSS をより適切にサポートするには、{$abc} のようにする必要があります。
$smarty->left_delimiter = "<{"; #左区切り文字、2.0 属性、3.0 が続きます
$smarty->right_delimiter = "}>" #右区切り文字、2.0 属性、3.0 が続きます
注: デフォルトの区切り文字を変更した後も、<{ $abc }> などのスペースは 3.0 テンプレートではサポートされておらず、これは無効です。
3.3 コメント{* Smarty は、* に含まれるテキストを注釈コンテンツとして使用します *}
デフォルトの区切り文字が「<{}>」に変更された場合、<{* Smarty は * を使用してテキストをコメント内容として含めます *}>。コメント内のテンプレート変数が無効です。
3.4 テンプレートインクルードファイル形式 {include file="インクルードするファイル名"}
Head.tpl
これはトップコンテンツです。ようこそ、{$name}
Index.tpl
にコードを追加します。{include file="head.tpl"}
出力結果:
ようこそ、ハン・リンジさん。
こんにちは、ハン・リンジさん!
他の設定ファイルに加えて、html と php も含めることができます (php テンプレート オプションをサポートするには、smarty を有効にする必要があります。include_php 関数を使用するのが最善です)。インクルードされたファイルでも、渡されたパラメーターを使用できます。
Head.tpl
{$nr}、ようこそ、{$name}
Index.tpl
{include file="head.tpl" nr="これがトップコンテンツです"}
出力は上記と同じです。
3.5 設定ファイルのロード変数と値の一連の対応関係を事前に指定して設定ファイルに置き、使用時に読み込むことができます。構成ファイルは通常、configs フォルダーに配置され、カスタマイズできます。
My.conf
gv = "my.conf のグローバル変数" #グローバル構成変数は呼び出されるたびにロードされます
#$sections が設定されていない場合は、すべての変数を表示します
[色] #ローカル構成変数
fontcolor = "red" #$sections が red に設定されている場合、グローバル変数と [color] の変数のみが表示されます
[サイズ] #ローカル構成変数
fontsize = "12px" #$sections が size に設定されている場合、グローバル変数と [size] 内の変数のみが表示されます
構成ファイルを呼び出す方法は 2 つあり、1 つはソース ファイルから呼び出す方法、もう 1 つはテンプレート ファイルから呼び出す方法です。
ソースファイル: $smarty->configLoad($config_file, $sections = null)
テンプレート ファイル: {config_load file="ロードされた構成ファイル" section="選択されたローカル変数 (オプション)"scope="アプリケーション テンプレート スコープ (オプション)"}
ソース ファイル方式を使用する場合、ロードされた構成ファイル変数のテンプレート スコープは自動的にグローバルになり、複数のテンプレートに適用できます (スマート オブジェクトは複数のテンプレートを呼び出します)。
後者を使用すると、より柔軟になります。単一テンプレートの config_load のスコープ パラメーターは、ローカル (このテンプレート、このテンプレートのみがこれらの変数を使用できる)、親 (親テンプレートまたはファイル)、またはグローバル (同じ Smarty オブジェクトによって呼び出されるすべてのテンプレート。他のテンプレートはその必要はありません) にすることができます。設定ファイルをロードします)
テンプレート ファイルで構成変数を使用する
{#設定変数#} または {$smarty.config.変数名}
【関連機能】
$smarty->getConfigVariable($variable) #親またはグローバルである必要があるテンプレート変数を返します
$smarty->getConfigVars($varname = null) #テンプレート変数の配列、または単一の変数を返します。
変数または変数グループは親またはグローバルである必要があります
$smarty->clearConfig($varname = null) #すべての構成変数または指定された構成変数をクリアします
$smarty->setConfig_overwrite(false) #変数が true に設定されている場合、変数は構成ファイルから読み取られます (変数名が同じ場合)
最後の値で上書きされます。それ以外の場合、変数は配列に配置されます。配列インデックスを使用してアクセスすることはできません。サイクル関数を使用できます。このプロパティには getConfig_overwrite 関数もあります。
$smarty->setConfig_booleanize(true); #true に設定すると、構成ファイル内の on/true/yes/1 および off/false/no/0 の値が自動的にブール値に変換されます。 falseを文字列に変換します(判定条件として使用する場合は常にtrueとなります)。この属性には getConfig_booleanize 関数もあります。
3.6 環境設定コンパイル、テンプレート、キャッシュ、構成パスは、Smary スクリプトで動的に設定できます。
$smarty->template_dir = "./templates"; #テンプレート ディレクトリを設定します。2.0 での設定方法ですが、3.0 でも使用されますが、推奨されません
$smarty->compile_dir = "./templates_c"; #コンパイル ディレクトリを設定します。2.0 での設定方法は 3.0 でも使用されますが、推奨されません
$smarty->config_dir = ‘./configs/’; # 構成ディレクトリを設定します。2.0 の設定方法、3.0 はまだ使用されていますが、推奨されません
$smarty->cache_dir = ‘./cache/’; #キャッシュ ディレクトリを設定します。2.0 の設定方法、3.0 はまだ使用されていますが、推奨されません
Smary は 3.0 のプロパティをカプセル化します。以下の方法でディレクトリにアクセスできます。
$smarty->getCacheDir(); #現在のキャッシュ ディレクトリ パスを取得します
$smarty->getTemplateDir(); #現在のテンプレート ディレクトリ パスの配列を取得します
$smarty->getConfigDir(); #現在の設定ディレクトリのパスを取得します
$smarty->getCompileDir(); #現在のコンパイル ディレクトリ パスを取得します
$smarty->getPluginsDir() #現在のプラグイン ディレクトリ パス配列を取得します
また、次の方法でディレクトリ
を設定します。
$smarty->setTemplateDir("../smarty1/templates/"); #新しいテンプレート ディレクトリを設定します。
設定後は、元の値の数に関係なく、テンプレート ディレクトリの配列には値が 1 つだけ含まれることに注意してください。
$smarty->setCompileDir("../smarty1/templates_c/"); #新しいコンパイル ディレクトリを設定します
$smarty->setConfigDir("../smarty1/configs/"); #新しい構成ディレクトリを設定します
$smarty->setCacheDir("../smarty1/cache/"); #新しいキャッシュ ディレクトリを設定します
$smarty->addTemplateDir("templates"); #参照されるテンプレート ファイルのパスは、テンプレート ディレクトリ値
内にある必要があります。
それ以外の場合は、元のテンプレート ファイルが引き続き使用されるため、元のテンプレート パスが追加され、テンプレート配列内に 2 つのパスが存在します。
$smarty->addPluginsDir(‘myplugins’); #set を使用すると、プラグイン配列がキャンセルされて 1 つのフィンガーになります
【関連機能】
$smarty->utility->compileAllTemplates($extention = ‘.tpl’, $force_compile = false, $time_limit = 0, $max_errors = null) #すべてのテンプレート ディレクトリ内のすべてのテンプレート ファイルを直接コンパイルすることはほとんど役に立ちません。
$smarty->utility->clearCompiledTemplate($resource_name = null, $compile_id = null, $exp_time = null)
#コンパイルディレクトリ内のコンパイル済みファイル、または指定した条件でコンパイル済みのファイルをクリアします。
$smarty-> setDefault_template_handler_func($fucname)
#この関数は、ソース ディレクトリからテンプレートを取得できない場合に呼び出されます。例外処理を設定してもあまり意味がありません。
テンプレートには主に 3 つの変数ソースがあります。
1. 元のphpファイルから割り当てられます。
$smarty->assign(‘name’,’Han Lingzhi’); #ソース php ファイルに割り当てます
こんにちは、{$name} #テンプレート ファイルで
を使用してください2. 設定ファイルから割り当てられます。
$smarty->configLoad(“configs/my.conf”) #設定ファイルをソース php ファイルにロードするか、テンプレートにロードします
これは、テンプレート ファイル内の {#gv#}
3. テンプレートファイルに作成されます。
{assign var="name" value="Han Lingzhi" nocache="false"scope="global"}
#テンプレートで定義されている変数。同じ変数が以前に定義されている場合は、最後の定義が優先されます。
{$name="Han Lingzhi"} #変数に値を直接割り当てます。変数が存在しない場合は、3.0 の新機能です。
{assign var=foo value=[1,2,3]} #通常の配列変数を定義します
{assign var=foo value=['y'=>' yellow','b'=>'blue']} #連想配列を定義
{assign var=foo value=[1,[9,8],3]} #配列に配列を定義
{$foo[]=1} #変数配列の要素を追加 $foo
こんにちは、{$name} #テンプレート ファイルで
を使用してください【関連機能】
$smarty->getVariable($variable, $_ptr = null, $search_parents = true,
$error_enable = true) #変数の取得は、最初の方法で取得された変数に限定されます
$smarty->getTemplateVars($varname = null, $_ptr = null, $search_parents = true)
#変数の取得。最初と 3 番目の方法で変数を取得できます (3 番目の方法の変数スコープはグローバルまたは親である必要があります)。
設定変数を取得したい場合は、3.4
一部の組み込み変数は Smarty システムに保持されるため、対応する変数にすばやくアクセスできます。ただし、これらの変数はソース php では取得できません。
1. リクエストアクセス変数 (リクエスト変数)
$smarty.get.Variable get メソッドを通じて渡された指定された変数の値を表示します。
$smarty.post.Variables # post メソッドを通じて渡された指定された変数の値を表示します。
$smarty.cookies.Variable #Cookie で指定された変数の値を表示します。
$smarty.server.SERVER_NAME #phpinfo()
でサーバー変数の値、$_SERVERシリーズの変数を表示します$smarty.env.PATH #phpinfo()
でシステム環境変数の値、$_ENVシリーズの変数を表示します$smarty.session.Variable #セッションで指定された変数の値を表示
$smarty.request.Variable #post、get、cookieで指定した変数の値を表示します。
2. 時間アクセス変数
{$smarty.now} #変数レギュレーターでフォーマットする必要がある Unix システムのタイムスタンプを表示します。{time()}
も使用できます。3. 定数アクセス変数
{$smarty.const._MY_CONST_VAL} #php での定数へのアクセスにはカスタム定数とシステム定数が含まれます
4. {$smarty.capture}
4.4.1
を参照してください。5. アクセス変数を構成します
{$smarty.config.Configuration variables} #構成変数にアクセスします。#Configuration variables# メソッド
に相当します。6. {$smarty.section}、{$smarty.foreach}
4.4.3 および 4.4.4
を参照してください。7. {$smarty.template} #テンプレートのパスと名前を表示
4.3 変数の操作 4.2.1 代入
{$name = 新しい値} 例: {$name=”私の名前はHan Lingzhi”} #そのような変数がない場合は、新しい値が元の値を置き換えます。
次に変数を作成し、値を割り当てます。構成変数を再割り当てすることはできません。
{$name = 式} 例: {$name = 1+2+$foo['bar']} #$foo['bar'] の値は 1、変数値は 4
{$foo['bar']=1} #配列の要素に値を割り当てます
{$foo['bar']['blar']=1} #多次元配列の要素に値を代入します
{$foo = array(1,2,3,4,5)} #php 関数を使用して変数 $foo を作成し、それに値を割り当てます。
4.2.2 アクセス最も単純なアクセス方法は {$var} で、構成変数へのアクセスは {#configvar#}
です。配列変数へのアクセスは、{$array[1][1]} または {$array.1.1}
で行うことができます。オブジェクト アクセス {$object->method1($x)} はオブジェクト チェーン、{$object->method1($x)->method2($y)}
もサポートしています。文字列と変数の混合出力
{"こんにちは、私は $name
"} #Smarty は二重引用符で囲まれた変数を認識できます、
この変数に数字、文字、アンダースコアのみが含まれている限り。
{"こんにちは、私は `$name[$obj->a]`
"} #括弧 []、オブジェクト関連 ->、変数は 2 つの ` 記号で囲む必要があります。 。
PHP と同様に、どちらも変数名での変数の使用をサポートしており、smarty は式の使用もサポートしています。
$foo #共通変数
$foo_{$bar} #変数名には変数
が含まれています$foo_{$x+$y} #変数名で式をサポートできます
$foo_{$bar}_buh_{$blar} #変数名に複数の変数が含まれています
4.2.4 可変レギュレータ変数レギュレーターは主に変数をフォーマットします。
{$varcapitalize} #変数
の最初の単語を大文字にします
{$varcount_characters:false} #変数内の文字数を計算します。false はスペースをカウントしないことを意味します。
変数が数値の場合、それは数値と小数点などの他の演算子の合計です
{$var cat:var2} #var2をvarに接続します。数値の場合は文字列として処理されます。
{$var count_paragraphs} #「n」で区別される変数内の段落数をカウントします
{$var count_sentences} #変数内の文の数を計算しますが、使用するのは簡単ではありません
{$var count_words} #変数内の単語数を計算します。文字と数字以外の文字分割統計を計算します。
{$var date_format :"%H:%M:%S" } #変数の日付をフォーマットします。特定のパラメータについては chm ドキュメントを参照してください
{$var default:"no title" } #変数が空の場合、変数
のデフォルト値を指定します{$varエスケープ:url} #変数値をトランスコードします。特定のパラメータについては、chm ドキュメントを参照してください
。{$var indent:10:"*"} #変数で指定された特定の文字をインデントします。スペースの場合、HTML には表示されません。具体的なパラメータについては、chm ドキュメントを参照してください。
{$var lower} #変数を小文字にします
{$var nl2br } #変数の「n」を「
」に変換します
{$var regex_replace:"/[rtn]/":" "} #変数内の通常の内容を指定された内容に置き換えます
{$var replace:"Garden":"Vineyard"} #変数内の必須の内容を指定された内容に置き換えます
{$var spacify:"^^"} #スペースを含む変数文字の間に指定されたコンテンツを挿入します
{$varstring_format:"%d"} #変数の内容をフォーマットします。フォーマットパラメータは printf
と同じです。{$vartrip: "*"} #繰り返されるスペース、改行、タブをすべてスペースまたは指定された文字に置き換えます
{$varstrip_tags} #変数内の HTML タグを削除し、< と > の間にあるものを削除します。
{$var truncate:30:"…":true} #指定された長さまで変数をインターセプトします。具体的なパラメータについては、chm ドキュメントを参照してください。
{$var upper} #変数を大文字にします{$var wordwrap:30:"n":true} #指定された長さを強制的に折り返すことを指定します。特定のパラメーターについては、chm ドキュメントを参照してください
。
修飾子は組み合わせることができます。{$articleTitle lowerspacifytruncate:30:". . ."}
デフォルトの可変レギュレーターを設定します
$smarty->getDefault_modifiers() #デフォルトは空の配列です
$smarty->setDefault_modifiers(array(‘spacify:"^^"','capitalize') #変数のデフォルトのレギュレーターを設定します。array
を使用する必要があります。
{name} #テンプレート変数名は上記 2 つのレギュレーターに自動的に追加されます独自のレギュレータを定義することもできます。詳細については、6.7.4 および 6.8.4
を参照してください。4.2.5 変数のスコープ (記述されていません) 4.4 組み込み関数 4.4.1 キャプチャ
キャプチャ関数の機能は、テンプレートによって出力されたデータをページに出力するのではなく、キャプチャして変数に格納することです。
{capture name="foo"} と {/capture} の間のデータは変数 $foo に保存されます。
このように、実際の状況に応じていくつかのコンテンツを選択して出力できます。出力構文は $smarty.capture 変数です。
{include file="bottom.tpl" nr="これは下部のコンテンツです"}
{/キャプチャ}
{if true } #
を出力するかどうかの条件判定を行う
{$smarty.capture.bottom}{/if}
4.4.2 config_load
3.4を参照 4.4.3 foreach、foreachelse
foreach は単純な配列 (要素の型が同じ) に適しています{foreach name=name item=content key=key from=array} #2.0、3.0 での使用法は
に続きます
通常実行{foreachelse}
From変数配列に値がない(要素0)場合に実行されます。
{/foreach}
例:
{foreach name=for1 item=num from=$foo}
{$smarty.foreach.for1.index+1} 要素: {$num}
{if is_array($num)}
{foreach name=for2 item=num2 key=key2 from=$num}
{$strcat:$smarty.foreach.for2.index+1cat:"element:"cat:$num2cat:" キーは "cat:$key2indent:1:" です。"}
{/foreach}
{/if}
{foreachelse}
{$smarty.foreach.for1.index+1} 要素: 値がありません!
{/foreach}
foreach
の組み込み変数
$smarty.foreach.foreachname.index #(ループ内で使用) 現在のループのインデックスを表示します。配列が空の場合は、-1を返します。
$smarty.foreach.foreachname.iteration #(ループ内で使用) 現在の反復数を表示します$smarty.foreach.foreachname.first #(ループ内で使用) 最初のループの場合は true
を返します
$smarty.foreach.foreachname.last #(ループ内で使用) 最後のループの場合は trueを返します
$smarty.foreach.foreachname.total #(ループの内側と外側で使用) はループの総数を表示しますforeach は 3.0 でアップグレードされ、構文は PHP に近くなり、組み込み変数はより簡潔になりました。
{foreach $myarray as $var}…{/foreach}
foreach の組み込み変数は内部でも外部でも使用できます
$var@key # 要素のキー値 (単純に 012) を出力し、関連付けは特定のキー値です。
$var@iteration # 現在のループ数を表示します。外部使用は前回です
$var@index # 現在のループのインデックスを表示します。配列が空の場合は -1 を返します。外部使用は最後です。
$var@total #ループの総数を表示
$var@first #最初のループの場合は true を返します
$var@last #最後のループの場合は true を返します
4.4.4 セクション、セクションその他
セクションは複雑な配列演算に適していますが、連想配列には適していません。しかし、3.0 では、どのようなアップグレードや変更が行われていますか?
代わりに、for コマンドが直接起動され、for は PHP 構文に近くなります。このセクションは将来のバージョンでは削除されることが予想されます。
#2.0での使用法は3.0でも使用されます
{sectionelse}
ループ配列は値がない場合(要素数が 0 の場合)に実行されます。
{/セクション }
例:
{セクション名=sec1 ループ=$foo ステップ=1 開始=0 表示=true}
{$smarty.section.sec1.index+1} 要素: {$foo[sec1]} ループ数は
{$smarty.section.sec1.iteration}
{if is_array($foo[sec1])}
{セクション名=sec2 ループ=$foo[sec1] ステップ=1 スタート=0 表示=true}
{$smarty.section.sec2.index+1} 要素: {$foo[sec1][sec2]}
サイクル数は {$smarty.section.sec2.iteration}
{/if}
{sectionelse}
{$smarty.section.sec1.index} 要素: 値がありません。
{/セクション}
セクションの組み込み変数は foreach と同じです。
4.4.5 インクルード
{include file="インクルード ファイル" var="インクルードされるファイルに渡される変数をカスタマイズする" assign="インクルードするテンプレートの出力を保存する変数を指定する"}
assign を指定した場合、インクルードされたファイルはすぐには出力されず、テンプレートによって出力されたデータは assign で指定された変数
に格納されます。
このようにして、インクルードされたファイルの内容を実際の状況に基づいて出力することができます。原理はキャプチャと似ています。
{include_php file="ファイルをインクルードする" Once="一度インクルードするかどうか(true)" assign="インクルードする出力を保存する変数を指定する"}
php ファイルが含まれており、含まれているファイルは正常にコンパイルされ、出力が提供されます。 assign が指定されている場合、
インクルードされたファイルはすぐには出力されず、出力データは assign で指定された変数に格納されます
このようにして、インクルードされたファイルの内容を実際の状況に基づいて出力することができます。
Insert の最大の特徴はキャッシュを行わないことです。そのパラメータはキャッシュされる可能性があります。ただし、insert によって呼び出される関数は内部的にキャッシュされません。
{insert name=”関数名” script=”関数を含むスクリプト” var….=”関数パラメータ” assign=”呼び出しの出力を保存する変数を指定してください”}
Insert で呼び出される関数には特別な規則があります。関数の形式は「smarty_insert_関数名 ($params,&$smarty)」、
でなければなりません。
insert から渡されたパラメーターは配列変数に入れられ、パラメーター名は配列のキー値になります。
例:
{insert name="maxnum" script="s2.php" x=12 y=13 assign=nn} #テンプレート ファイル、スクリプトは呼び出し元の関数を保存するスクリプトです
{foreach $nn as $n}
{$n}
{/foreach}
functionsmarty_insert_maxnum($arr) #関数スクリプトファイル
{
return $arr['x']>$arr['y']?$arr['x']:$arr['y'];
}
assignを指定すると関数呼び出しのデメリットがすぐに出力されず、出力データはassignで指定した変数に格納されます
このようにして、インクルードされたファイルの内容を実際の状況に基づいて出力することができます。
Insert をコンポーネントとして定義し、コンポーネント ライブラリに書き込むこともできます。詳細は 6.8.5
を参照してください。