サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
iPhone 16
www.smarty.net
You may use the Smarty logo according to the trademark notice. For sponsorship, advertising, news or other inquiries, contact us at:
{literal} タグに囲まれたデータのブロックは、 リテラルとして認識されます。これは一般的に、Javascript やスタイルシートなどで 中括弧がテンプレートの デリミタ として解釈されるとまずい場合に使用します。 {literal}{/literal} タブの内部は解釈されず、 そのままで表示されます。{literal} ブロック内にテンプレートタグを含める必要がある場合は、代わりに {ldelim}{rdelim} で個々のデリミタをエスケープしてください。 Note {literal}{/literal} タグは通常は不要です。Smarty は、 空白文字で囲まれたデリミタを無視するからです。 Javascript や CSS で波括弧を使う場合は両側に空白文字を入れるようにしましょう。 これは、Smarty 3 以降の新しい挙動です。
キャッシュは出力内容をファイルに保存する事によって、 display() 又は fetch() を呼び出す速度を向上させるために使用されます。キャッシュが有効の場合、 出力を再生成せずに表示されます。特に処理時間が長いテンプレートは、 キャッシュを使用する事で大きく速度が上昇するでしょう。 キャッシュされるのは display() 又は fetch() の出力結果なので、1つのキャッシュファイルが複数のテンプレートファイルや 設定ファイル等で構成されていることもあります。 テンプレートが動的コンテンツの場合、何をどれくらいの期間キャッシュするのか注意が必要です。 例えば、Webサイトの一面にそれほど変更されないコンテンツが表示されている場合は、 一時間かそれ以上、このページをキャッシュしても問題なく動作するでしょう。 一方、一分経過するごとに新しい情報が格納される天気図をページに表示する場
{include} タグを使用して、 現在のテンプレートに他のテンプレートをインクルードします。 現在のテンプレートにて利用可能なあらゆる変数は、 インクルードされたテンプレートでも同じく利用可能です。 {include} タグには、テンプレートリソースのパスを含んだ file 属性を必ず指定する必要があります。 {include} の出力をブラウザに表示する代わりに変数に格納したい場合は、 オプションの assign 属性にその変数名を定義します。 {assign} と同等です。 インクルードされたテンプレートに変数を渡すには、 attributes を使用します。インクルードされたテンプレートに明示的に渡された変数は、 インクルードされたファイルのスコープでのみ有効となります。 そのテンプレートに同じ名前の変数が存在する場合は、 渡された変数がそれをオーバーライドします。 全ての割り当
options を使用しない場合は、 必須の属性は values および output となります。 全ての出力は XHTML 準拠です。 上の属性リストに無いパラメータが与えられた場合は、作成された各 <input> タグの内側に名前/値のペアで表されます。 <?php $smarty->assign('cust_ids', array(1000,1001,1002,1003)); $smarty->assign('cust_names', array( 'Joe Schmoe', 'Jack Smith', 'Jane Johnson', 'Charlie Brown') ); $smarty->assign('customer_id', 1001); ?> テンプレート {html_checkboxes name='id' values=$cust_ids output=$cust_
テンプレート変数は、先頭にドル記号 $ を付けます。変数名には PHP の変数 と同様に英数字およびアンダースコアが使用できます。 配列の参照には、インデックスの数値もしくはそれ以外の文字を使用できます。 オブジェクトのプロパティとメソッドの参照も同様です。 Config ファイルの変数 にはドル記号を付けず、参照する際にはハッシュマーク # で囲むか、 $smarty.config 変数として指定します。 {$foo} <-- 単純な変数 (配列やオブジェクト以外) を表示します。 {$foo[4]} <-- 0から始まるインデックスを持った配列の5番目の要素を表示します。 {$foo.bar} <-- "bar"というキーに対応する配列の値を表示します。PHP の $foo['bar'] と同じです。 {$foo.$bar} <-- 変数のキーに対応する配列の値を表示します。PHP の
{* これは Smarty コメントです。コンパイルされた結果には登場しません。 *} <html> <head> <title>{$title}</title> </head> <body> {* 別の Smarty コメント *} <!-- HTML コメント。これはブラウザに送信されます --> {* この、複数行の Smarty コメントは ブラウザへは送信されません *} {********************************************************* クレジットブロックを含む複数行のコメント @ author: bg@example.com @ maintainer: support@example.com @ para: var that sets block style @ css: the style output **********
{literal} タグに囲まれたデータのブロックは、 リテラルとして認識されます。これは一般的に、Javascript やスタイルシートなどで 中括弧がテンプレートの デリミタ として解釈されるとまずい場合に使用します。 {literal}{/literal} タブの内部は解釈されず、 そのままで表示されます。{literal} ブロック内にテンプレートタグを含める必要がある場合は、代わりに {ldelim}{rdelim} で個々のデリミタをエスケープしてください。 {literal} <script type="text/javascript"> <!-- function isblank(field) { if (field.value == '') { return false; } else { document.loginform.submit(); return true;
Smarty が "ダブルクォート" で囲まれた内容の中から 割り当てられた 変数 として認識するのは、変数名が数字・文字・_(アンダースコア)・[](ブラケット) のみで構成されているもののみです。詳細は 名前の付けかた を参照ください。 その他の文字、たとえば .(ピリオド)や $object>reference(オブジェクト参照)を含む場合は、 その変数を `バッククォート` で囲む必要があります。 修飾子 を埋め込むことはできず、 常にクォートの外で適用する必要があります。 {func var="test $foo test"} <-- $foo を参照します {func var="test $foo_bar test"} <-- $foo_bar を参照します {func var="test $foo[0] test"} <-- $foo[0] を参照します {func var=
継承機能は、オブジェクト指向プログラミングの考え方をテンプレートに導入したものです。 これを使うと、ひとつあるいは複数の基底テンプレートを継承して子テンプレートを作ることができます。 継承とは、子テンプレートが親の名前付きブロックをオーバーライドできるということです。 継承ツリーは好きなだけ深くすること (つまり、あるファイルを継承したファイルを継承したファイルを… ということ) ができます。 子テンプレートでは、オーバーライドした {block} タグの内部のコンテンツ以外を変更することはできません。 {block} タグの外側に書いた内容は削除されます。 子テンプレートと親テンプレートの {block} タグの内容をマージすることができます。その場合は、 {block} タグのオプションのフラグ append あるいは prepend と、プレースホルダ {$smarty.block.
Smarty は PHP のためのテンプレートエンジンです。具体的に言うと、php のプレゼンテーションからアプリケーションのロジックとコンテンツを分離して管理する事を容易にします。 これは、プログラマーとテンプレートデザイナーの役割が異なり、 これらの役割を違う人間が受け持っている場合に最適だと言えます。 例えば、新聞記事を表示するwebページを作成しているとします。 記事の $headline (見出し)、$tagline (キャッチフレーズ)、$author (著者) および $body (本文) が中身を構成する要素となります。 ここには、それをどのように表示するかという情報は含まれません。 これらはアプリケーションによって Smarty に 渡されます。 テンプレートデザイナーはこのテンプレートを編集し、 HTML タグや テンプレートタグ を使用して、これらの 変数 と要素 (
$_GET、$_POST、 $_COOKIE、$_SERVER、 $_ENV および $_SESSION ( $request_vars_order および $request_use_auto_globals を参照してください) といった リクエスト変数 にアクセスするには、下の例のようにします。 {* ($_GET) http://www.example.com/index.php?page=foo から page の内容を表示 *} {$smarty.get.page} {* ($_POST['page']) フォームから送信された変数"page"の値を表示 *} {$smarty.post.page} {* クッキーに登録された"username"の値を表示 ($_COOKIE['username']) *} {$smarty.cookies.username} {* サーバ変数"
{foreach} はデータの配列をループするために使います。{foreach} は {section} ループよりもシンプルできれいな構文で、 連想配列をループすることもできます。 {foreach $arrayvar as $itemvar} {foreach $arrayvar as $keyvar=>$itemvar} Note この foreach 構文は、名前つき属性を受け付けません。この構文は Smarty 3 で新しく導入されたものですが、Smarty 2.x 形式の {foreach from=$myarray key="mykey" item="myitem"} もまだ対応しています。 {foreach} ループはネストさせることができます。 array 変数を渡すと、その要素数で {foreach} のループ回数が決まります。 整数値を渡してループ回数を決めることもで
Webデザイナーの方は、HTML コードに含まれたホワイトスペースとキャリッジリターンが ブラウザの表示に影響を及ぼす問題に何度も遭遇した事があると思います。 問題を回避するには、テンプレートの全てのタグを連ねて記述する必要があります。 しかしこれでは大変読みづらく管理しにくいテンプレートになってしまいます。 {strip}{/strip} タグに囲まれたコンテンツは、 ブラウザに表示される前に、各行の先頭と終端にある 余分なホワイトスペースやキャリッジリターンが除去されます。 これによってテンプレートは可読性を維持し、 余分なホワイトスペースによって問題を引き起こす心配もありません。
必須の属性は name と loop です。 {section} の name は、 英数字とアンダースコアを使って自由に命名できます。これは PHP の変数 と同様です。 {section} はネスト可能で、その場合の {section} の名前はお互いにユニークである必要があります。 loop 属性で指定されたループ変数 (たいていは配列) は、{section} のループ回数を決定するために使用されます。 loop の値として、整数値を渡すこともできます。 {section} 内で値を表示するには、 変数名に続けてブラケット {} で囲んだセクション名を指定します。 ループ変数に値が存在しない場合は {sectionelse} が実行されます。 {section} には、そのプロパティを操作するための 自身の変数があります。これらには {$smarty.section.name.pr
{if $name eq 'Fred'} Welcome Sir. {elseif $name eq 'Wilma'} Welcome Ma'am. {else} Welcome, whatever you are. {/if} {* 論理演算子 "or" の例 *} {if $name eq 'Fred' or $name eq 'Wilma'} ... {/if} {* 上と同じ *} {if $name == 'Fred' || $name == 'Wilma'} ... {/if} {* 括弧は使用可能 *} {if ( $amount < 0 or $amount > 1000 ) and $volume >= #minVolAmt#} ... {/if} {* PHP 関数を埋め込むことも可能 *} {if count($var) gt 0} ... {/if} {* 配列のチ
Note Smarty-2.6.10 以降、date_format に渡された数値は 常に (MySQL タイムスタンプは例外です。以下を参照してください) Unix タイムスタンプとして解釈されるようになりました。 Smarty-2.6.10 より前は、PHP の strtotime() がパース可能な数値文字列 (YYYYMMDD のような形式) は、 タイムスタンプではなく日付文字列として解釈されることもあります (strtotime() の実装に依存します)。 唯一の例外は、mysql タイムスタンプです。 これは数値のみで、文字数は14文字 ("YYYYMMDDHHMMSS") です。 mysql タイムスタンプは unix タイムスタンプより優先されます。 プログラマーズノート date_format は、本質的には PHP の strftime() 関数のラッパーです。PHP
{function} は、テンプレート内で関数を作成します。 これはプラグイン関数のようにコールすることができます。 見た目に関する内容を生成するプラグインを書くよりは、 それをテンプレート側に書いておいたほうが管理しやすくなるでしょう。 深く込み入ったメニューなどのデータの取り回しもシンプルになります。 Note テンプレート関数はグローバルに定義されます。Smarty のコンパイラはシングルパスのコンパイラなので、 指定したテンプレートの外部で定義されたテンプレート関数をコールするときには {call} タグを使わなければなりません。それ以外の場合は、テンプレート内で直接 {funcname ...} として関数を使うことができます。 {function} タグには name 属性が必須です。 ここに、テンプレート関数の名前を書きます。 この名前のタグを使って、テンプレート関数をコール
{foreach} を使用して、通常の数値添字配列と同じように 連想配列 をループします。 {section} のように、数値添字の配列のみ をループさせるということはありません。 {foreach} の構文は {section} よりずっと簡単ですが、その代わりに 1つの配列 しか扱えません。すべての {foreach} タグは、 終了タグ {/foreach} とペアである必要があります。
変数の修飾子は、 変数 や カスタム関数 や文字列を修飾して出力することができます。修飾子を適用するには、 変数名の後に | (パイプ) と修飾子の名前を指定します。 また、修飾子はその動作に影響を及ぼす追加のパラメータを受け入れる場合もあります。 そのパラメータは修飾子の後に続き、: (コロン) によって区切られます。 また、すべての PHP 関数は、暗黙的に修飾子として使用でき (あとで説明します)、修飾子は 組み合わせる こともできます。 {* 変数に修飾子を適用 *} {$title|upper} {* パラメータを持つ修飾子 *} {$title|truncate:40:'...'} {* テンプレート関数のパラメータに修飾子を適用 *} {html_table loop=$myvar|upper} {* パラメータ付き *} {html_table loop=$myvar|tr
Table of Contents 序文 I. はじめに 1. Smarty とは? 2. インストール 必要条件 基本的なインストール 拡張セットアップ II. テンプレートデザイナのための Smarty 3. 基本構文 コメント 変数 関数 属性 ダブルクォート内に埋め込まれた変数 演算子 Smarty の構文解析を回避する 4. 変数 PHP から割り当てられた変数 連想配列 配列のインデックス オブジェクト 設定ファイルから読み込まれた変数 予約変数 {$smarty} リクエスト変数 {$smarty.now} {$smarty.const} {$smarty.capture} {$smarty.config} {$smarty.section}、{$smarty.foreach} {$smarty.template} {$smarty.version} {$smarty.lde
Table of Contents 序文 I. はじめに 1. Smarty とは? 2. インストール 必要条件 基本的なインストール 拡張セットアップ II. テンプレートデザイナのための Smarty 3. 基本構文 コメント 変数 関数 属性 ダブルクォート内に埋め込まれた変数 演算 Smarty の構文解析を回避する 4. 変数 PHP から割り当てられた変数 連想配列 配列のインデックス オブジェクト 変数のスコープ 設定ファイルから読み込まれた変数 予約変数 {$smarty} リクエスト変数 {$smarty.now} {$smarty.const} {$smarty.capture} {$smarty.config} {$smarty.section} {$smarty.template} {$smarty.current_dir} {$smarty.version} {
options を使用しない場合は、 values および output が必須となります。 任意である name 属性が与えられると、 <select></select> タグが作成されます。 それ以外の場合は <option> のリストのみを作成します。 配列が渡された場合は HTML の <optgroup> として扱われ、グループが表示されます。 <optgroup> での再帰呼出もサポートしています。 前述の属性リストに無いパラメータが与えられた場合は、 作成された各 <select> タグの内側に 名前/値 のペアで表されます。任意の name 属性が与えられない場合には、これらは無視されます。 すべての出力は XHTML に準拠しています。 <?php $smarty->assign('myOptions', array( 1800 => 'Joe Schmoe', 9904
You may use the Smarty logo according to the trademark notice. For sponsorship, advertising, news or other inquiries, contact us at: Rewritten for PHP 5 The Smarty 3 code base is a 100% rewrite, and contains many language features that do not exist in PHP 4. This means Smarty 3 will NOT work with PHP 4. If you need PHP 4 support, you will have to stick with Smarty 2 until you can upgrade PHP. Desi
時々、Smarty の構文解析の対象にしたくないと望む、 もしくはそうする必要がある部分があります。 典型的な例としては、 テンプレートに Javascript や CSS コードが含まれるときです。 それらの言語が Smarty のデフォルトの デリミタ である { と } を使用するときに問題が発生します。 もっとも単純な解決方法は、Javascript と CSS コードをそれぞれファイルに切り分け、 それらにアクセスするために標準的な HTML の機能を使用する事で状況を回避する事です。 リテラルコンテンツを含めるには {literal}..{/literal} ブロックを使用します。 HTML エンティティの使用法と同様に、 {ldelim}、{rdelim} あるいは {$smarty.ldelim} を使用して現在のデリミタを表示することができます。 単純に Smarty の
次のページ
このページを最初にブックマークしてみませんか?
『PHP Template Engine | Smarty』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く