基本構文
smarty タグはすべて区切り文字で区切られており、smarty はテンプレート タグを検出すると、それらを解釈して適切な方法で使用します。 } ですが、カスタマイズ方法は次のとおりです:
$smarty->left_delimiter = '}- ->';テンプレートのコメントは、{* これはコメントです *} のように * 記号で囲まれます。
スマートなコメントは出力されません。
2. 変数
テンプレート変数の先頭には $ が付きます。数字、文字、アンダースコアを含めることができます。
config_file 変数は例外であり、#variablename# メソッドを使用して参照する必要があります。
3. 関数
smarty タグは変数を出力するか、特定の関数を呼び出します。
たとえば、区切り文字内の関数とその属性が処理され、出力されます。 :
{ funcname attr1="val" attr2="val"}。
funcname は include などの関数の名前、attr1 と attr2 は属性名、val は属性の対応する値です。
テンプレート内の組み込み関数とカスタム関数はどちらも同じ構文を持ちます。
{if}、{section}、{strip} などの組み込み関数は変更できません。これらは、自由に変更して追加できる追加関数です。たとえば、{html_options} や {html_select_date} です。
静的値には引用符は必要ありません。ブール値も必要ありません。 (true または false) 引用符は true、on、yes または false、off、no のいずれかになります。ただし、変数も使用できます。
変数を文字列に挿入することはできません。アンダースコアと[]の組み合わせは認識できますが、複雑な形式の場合は変数を「」で区切る必要があります。たとえば、{func var="test $foo.bar test"} は変数 $foo のみを認識します。$foo.bar を認識するには、{func var="test `$foo." の形式で記述する必要があります。バー`テスト"}。
6. いくつかの予約語を表示する方法
区切り文字を表示するなど、smarty のいくつかの予約語をテンプレート内の言語コンテンツとして表示したい場合、デフォルトのメソッドは {}: {ldelim}、{rdelim} または { $smarty .ldelim},{$smarty.rdelim} または、{literal} .. {/literal} の途中に {} を入れて出力することもできます。
smarty 予約変数
{$smarty} 予約変数は、いくつかの特別なテンプレート変数にアクセスするために使用できます。
ページ リクエスト変数
以下は、get、post、cookie、server、environment などのアクセス ページ リクエスト変数です。およびセッション変数の例。たとえば、{$smarty.server.SERVER_NAME} はサーバー変数を取得し、{$smarty.env.PATH} はシステム環境変数のパスを取得し、{$smarty.request.username} は get/post/ を取得します。 cookies/server/env 複合変数。
{$smarty.now} 変数は現在のタイムスタンプにアクセスするために使用されます。
date_format アジャスターを使用して出力をフォーマットできます。たとえば、{$smarty.now|date_format:"%Y-%m-%d %H: %M:% S"}
{$smarty.const}
PHP 定数に直接アクセスできます。たとえば、{$smarty.const._MY_CONST_VAL}
{$smarty.capture}
{capture} を通じて出力をキャプチャできます。 ..{/capture} 構造体には、{$smarty} 変数を使用してアクセスできます。
{$smarty.config}
{$smarty} 変数は、ロードされた構成変数にアクセスできます。たとえば、{$smarty.config.foo}。 {#foo#} を表すことができます。
{$smarty.section}、{$smarty.foreach}
{$smarty} 変数は、「section」ループと「foreach」ループの属性にアクセスできます。
現在処理中のテンプレートの名前を表示します
{$smarty.version}
Smarty テンプレートのバージョンを表示します
{$smarty.ldelim}
左の区切り文字を表示します
{$smarty.rdelim}
右の区切り文字を表示します
変数アジャスタ
変数アジャスタは、変数、カスタム関数および文字列に使用されます。
レギュレータは、「|」記号とレギュレータ名を使用して適用できます。
変数レギュレータの動作は、それに指定されたパラメータ値によって決まります。パラメーターは「:」記号で区切られます。
変数レギュレーター変数で配列を調整すると、その結果、配列の各値が調整されます。調整者に配列全体を調整させたい場合は、@ を追加する必要があります。調整者名の前に記号を付けます。例: {$articleTitle|@count}(これは $articleTitle 配列の数値を出力します)
大文字化
変数内のすべての単語の最初の文字を大文字にします。パラメータ値はブール値によって決まります。数字が含まれる単語の最初の文字が大文字かどうか。デフォルトでは大文字ではありません
count_characters
変数値の文字数をカウントします。パラメータ値のブール値によって、スペースの数をカウントするかどうかが決まります。デフォルトでは、スペースはカウントされません。
cat
cat のパラメータ値を指定された変数の末尾に接続します。デフォルトは空です。
count_paragraphs
変数内の段落数をカウントします
count_sentences
変数内の文数をカウントします
count_words
変数内の単語数をカウントします
date_format
日付フォーマット
最初のパラメータは日付フォーマットを制御します。 date_format に渡されるデータは空です はい、2 番目のパラメーターはデフォルトの時刻として使用されます
%a - 曜日の省略形
%A - 曜日の完全形式
%b - の省略形月
%B - 月の完全形式
%c - 日付と時刻 06 /12/05 11:15:10
%C - 世紀時間
%d - 月の番号 (01 から 31)
%D - %m/%d/%y と同じ
%e - 1 か月 数値が奇数の場合は、その前にスペースを追加します (1 ~ 31)
%g - 世紀
%G - 世紀 [0000,9999]
%h - %b と同じ
%H - 24 時間形式の時間 (00 から 23)
%I - 12 時間形式の時間 (01 から 12)
%j - 年間の日 (001 から 366)
%k - 24 時間形式の 1 桁の時間 前にスペースが付きます (0 から 23)
%l - 12 時間形式の時間。奇数の場合はスペースで区切ります (1 ~ 12 の範囲)
%m - 月 (01 ~ 12 の範囲)
%M - 分
% n - 改行文字
%p - 午前または午後の `am' または `pm' を表示します。
%r - 午前または午後形式の時刻
%R - 24 時間形式の時刻
%S - 秒
%t - タブ記号
%T - %H:%M:%S と同じ
%u - 使用[1,7] は曜日を示します
%U - 年の最初の日曜日から始めて、年の週数を計算します
%V - 年の週数を 01 から 53 まで計算します、今年の最初の週は少なくとも 4 日ある必要があります。日曜日は今週の最初の日です
%w - 数値の形式で表されます。曜日です。日曜日は 0 です。
%W - 数値です。年の最初の月曜日から始まる、数値形式でのその年の週
%x - 日付の表示: 月/日/年
%
デフォルト
デフォルト
空の変数にデフォルト値を設定します
変数が空または未割り当ての場合、出力は指定されたデフォルト値に置き換えられます
エスケープ
トランスコーディング
パラメータ値は html、htmlall、url、引用符、16 進数、16 進数、javascript。デフォルトは HTML トランスコーディングです。
インデント
インデント
各行の文字列をインデントします。最初のパラメータはインデントする文字数を指定します。デフォルトは 4 文字です。
小文字
小文字
変数文字列を小文字にする
nl2br
改行を
で置換
正規置換
2 つのパラメータが必要です。パラメータ 1 は次のとおりです。置換正規表現。パラメータ 2 は置換するテキスト文字列を使用します。
replace
replace
単純な検索文字列と置換文字列には 2 つのパラメータが必要です。パラメータ 1 は置換される文字列です。パラメータ 2 は、テキストを置換するために使用されます。
spacify
spacify文字列の各文字の間にスペースまたはその他の文字列を挿入します。このパラメータは、2 つの文字の間に挿入される文字列を示します。デフォルトはスペースです。
string_format 文字列の書式設定
は、sprintf 構文を使用して浮動小数点数を書式設定する方法です。このパラメータは必須であり、使用するフォーマット方法を指定します。 %d は整数を表示することを意味し、%.2f は 2 つの浮動小数点数をインターセプトすることを意味します。
strip (余分なスペース) を削除します。
繰り返されるすべてのスペース、改行、タブを単一の文字列または指定された文字列に置き換えます。パラメータがある場合は、それが指定された文字列になります。
strip_tags すべての HTML タグを削除します。
インターセプトを切り詰めます。
パラメーター 1 は、インターセプトする文字数を指定します。
2 番目のパラメーターは、インターセプトされた文字列の後に追加する文字を指定します。
いいえ。デフォルトでは false であり、smarty は単語を分割しません。
upper は変数を大文字に変更します。
ワードラップ行幅制約
最初のパラメータは段落の幅を指定します (つまり、1 行あたりの文字数。この文字数を超えると改行されます)。デフォルトは 80 です。
2 番目のパラメータは、制約ポイント文字で使用するものを指定します (デフォルトは改行文字 n) 。
3 番目のパラメータは、デフォルトでは文字を正確にインターセプトするかどうかを決定します。つまり、単語を分離できない場合です。迎撃する。
組み込み関数
組み込み関数は許可なく変更することはできません。
capture
capture 関数の機能は、テンプレートによって出力されたデータをページに出力するのではなく、変数に収集することです。たとえば、{capture name="foo"} と {/capture} の間のデータを受け取ります。関数の name 属性で指定された変数 {$foo} または {$smarty.capture.foo} 内。関数に name 属性がない場合、「default」が使用されます。各 {capture} は {/capture} に対応する必要があり、キャプチャ関数をネストすることはできません。
config_load
設定ファイルの参照
file は必須で、インクルードされる設定ファイルの名前、ロードされる部分の名前を示すセクション、およびスコープによって処理される変数のスコープを示します。
ローカル 変数がこのテンプレートにロードされることを意味し、
グローバル 変数がすべてのテンプレートに適用されることを意味します。ローカルです。変数が上位テンプレートに表示されるかどうかに関係なく、デフォルトは「いいえ」です。スコープ属性がすでに存在する場合、この値は無視されます。
foreach、foreachelse
foreach ループは、連想配列を走査するために使用されますが、妥協として使用できます。単純な配列にのみ使用されます。
foreach の必須パラメーターは、ループする必要がある配列の名前を表し、item は現在の要素の変数名を表します。キーワード、name は foreach 属性名にアクセスする foreach ループを表します。ループは互いに入れ子にすることができ、他のテンプレートを参照するために from 変数に値がない場合、入れ子になったループ間の名前は独立している必要があります。
file 属性は参照されるテンプレートの名前を表すために必要であり、assign はインクルード ファイルが割り当てる出力変数を表します。属性名="属性値" を使用して、任意の数のローカル変数を自分で定義できます。
include_php
は、PHP スクリプトをテンプレートに導入するために使用されます。 file は、PHP スクリプトのパスを表すために必要です。 Once は、PHP スクリプトがテンプレート内で複数回参照される場合に、その PHP スクリプトを 1 回だけロードするかどうかを決定します。デフォルトは true です。
insert
は、php スクリプトに関数を含めるのに使用されます。 name は必須であり、挿入されたスクリプトの名前を表します。名前が name の場合、組み込まれる関数は insert_name() であるため、挿入されるすべての関数にはプレフィックスが必要であることに注意してください。入れる_。 assign 属性が使用されている場合、insert の出力はテンプレート変数に割り当てられ、表示されません。 script は参照するスクリプトのパスを示します。このプログラムによって生成されたコンテンツはキャッシュされず、ページが呼び出されるたびに再実行されます。広告、投票、クエリ結果などのインタラクティブな場所に適しています。
if,elseif,else
if ステートメントと条件は php に似ていますが、各単語はスペースで区切る必要があります。次のような新しい条件文もいくつかあります: eq は等しい、ne と neq は等しくない、gt はより大きい、lt はより小さい、gte と ge は以上、lte と le は以下等しいか、そうでないか、mod は係数を見つけるために使用されます。 div は、特定の数で割り切れるかどうかによって [そうではない]、偶数であるかどうかでも [そうではない]、$a は $b でさえ [そうではなく]、つまり ($a / $b) % 2 == 0, is [not] 奇数が奇数であるかどうか、$a は $b によって奇数ではない、つまり ($a / $b) % 2 != 0
php
php タグを使用すると、php 言語をテンプレート内で直接使用できます。
section,sectionelse
section はループ内の配列データを表示するために使用されます。名前とループは必須のパラメーターです。 name はネストされた名前を表します。セクションはネストして使用できますが、名前は異なる必要があります。 loop はループの数を表します。loop パラメータが空の場合、sectionelse は出力します。start は、ループを開始するポインタを指定するために使用されます。値が負の場合、開始ポインタは配列の末尾から計算されます。step は、負の場合、ループ内のステップ数を表します。ループは反転されます。デフォルトは 1 です。max はループの最大長を設定します。show にはセクション属性を処理するための独自の変数があり、これは { を使用して表示されます。 $smarty.section.sectionname.varname}。
index
index は、0 から始まる現在のループのポインターを表示するために使用されます。
index_prev
-1 から始まる前のループのポインターを表示するために使用されます。
index_next
使用されます次のループのポインターを表示します。
iteration
現在のループの数を 1 から表示します。
first
現在のループが最初のループの場合、値は true になります。
last
最後のループの場合、値は true です。
loop
セクションの途中で使用できる最後のループのポインターを表示します。
show はセクションの後に使用します。
total
ループの合計数を表示します。
strip
余分なスペースを削除します
通常の関数
assign
assign は実行時に変数の値を割り当てるために使用されます。テンプレート。var、value は必須パラメータです。var は値を割り当てる変数の名前です。
counter
counter は複数の Count を使用できます。 name はカウンター名を表し、デフォルトはデフォルトです。 start はカウントの初期値を表し、デフォルトは 1 です。 カウント間隔をスキップします、デフォルトは 1 です。 direct はカウントの方向を表し、デフォルトは です。 up .print は値を出力するかどうかを示し、デフォルトは true です。 assign はテンプレート変数を定義し、カウンターの出力は assign で定義された変数に割り当てられます。
Cycle は値のセットを表示するために使用されます。ループ内の name はサイクル名を表し、values(" Value 1", "Value 2",...) はループ内に表示される値のセットを表し、それを表示するかどうかを示します。次の値を表示するかどうかは、値の区切り文字を決定します。デフォルトはカンマです。 assign はテンプレート変数を定義します。
debug
debug はすべての変数を表示します。値が割り当てられますが、テンプレートの内容は表示されません。出力属性によって表示形式が決まります。デフォルトは html です。変数に変数を挿入するために使用されます。 var は挿入された変数名で、assign は出力を変数に割り当てます。
fetch
は、ファイルの内容を取得し、ローカル ファイル、http ファイル、および ftp ファイルを取得するために使用されます。 assign は、出力を変数に割り当てます。
html_checkboxes
html_checkbox は、指定されたデータでチェックボックスを作成するために使用されます。 name はチェックボックスの名前を表します、values はチェックボックスの値を表します、output はチェックボックスの表示を表します、selected は選択されたオプションの値を表します、options はチェックボックスのセットの値と表示を表します、separator は各チェックボックスを区切る記号、およびラベルは出力ラベルへの追加を表し、デフォルトは true です。
html_image
html_image は、画像の HTML タグを作成するために使用されます。高さと幅に値が割り当てられていない場合、それらは自動的に生成されます。 file は画像のパス、height、width、alt は html タグと同じです。basedir は画像の相対パスから始まるディレクトリのパスです。デフォルトはサーバーのルート ディレクトリです。 href は画像へのリンクを定義します。
html_options
出力ドロップダウン リスト。パラメーターは、名前、値、出力、選択済み、オプションです。
html_radios
出力ラジオボタン、パラメータはチェックボックスと同じです。
html_select_date
prefix は、各ドロップダウン リスト名の接頭辞を定義します。デフォルトは Date_ です。 time は使用する時刻を決定し、デフォルトは現在時刻です。 start_year は、ドロップダウン リストが開始する年を決定します。これは、年または現在の年からの相対年数で表すことができます。デフォルトは現在の年です。 end_year は、ドロップダウン リストが終了する年を決定します。これは、年または現在の年からの相対年数で表すことができます。デフォルトは現在の年です。 display_days は日付を表示するかどうかを決定します。 display_months は月を表示するかどうかを決定します。 display_year は年を表示するかどうかを決定します。 month_format は月を表示する形式を決定し、デフォルトは %B です。 day_format は日付の表示形式を決定し、デフォルトは %02d です。 day_value_format は日付値の形式を決定します。デフォルトは %d です。 month_value_format は月の値の形式を決定します。デフォルトは %m です。 year_as_text は、年をテキスト形式で出力するかどうかを決定します。 reverse_years は、各年を逆順に出力するかどうかを決定します。 field_array は、変数のセットを取得するために使用されます。name[日]、名前[月]、および名前[年]の形式でフォームから値を取得できます。 day_size、month_size、year_size にサイズ タグを追加します。 all_extra、day_extra、month_extra、year_extra は、タグを選択または入力するための追加の属性を追加します。 field_order は年、月、日のドロップダウン リストの順序を決定します。デフォルトは MDY です。 field_separator 異なるドロップダウン リスト間の区切り文字。デフォルトは n です。 year_empty、month_empty、day_empty は、各ドロップダウン リストの最初の列に表示される内容です。
html_select_time
prefix は、各ドロップダウン リスト名の接頭辞を定義します。デフォルトは Time_ です。time は使用する時刻を決定し、デフォルトは現在時刻です。 display_hours は時間を表示するかどうかを決定します。 display_ minutes は、分を表示するかどうかを決定します。 display_seconds は秒を表示するかどうかを決定します。 display_meridian は、午前と午後のどちらを表示するか、つまり午前/午後を表示するかを決定します。 use_24_hours は、24 時間形式を使用するかどうかを決定します。 minutes_interval は、分の間隔を決定します。 Second_interval は間隔を秒単位で決定します。 field_array は変数のセットを取得するために使用されます。name[Hour]、name[Minute]、name[Second] を使用してフォームから値を取得できます。 all_extra、hour_extra、minut_extra、second_extra、meridian_extra は、select タグまたは input タグに追加の属性を追加します。
html_table
loop はループ用のデータのセットを定義します。 Cols は列数を決定し、rows は行数を決定します。一方が空で、もう一方が値を持つ場合、もう一方の値は要素の数と値の属性に基づいて計算されます。どちらも3です。 inner は要素の列挙方向を決定します。cols は列に従って列を配置し、rows は行に従って行を配置します。デフォルトはcolsです。 table_attr、tr_attr、td_attr はそれぞれ table、tr、td にラベルを追加します。tr_attr と td_attr が配列の場合、ラベルはループで追加されます。 Trailpad は、最後の行に値のないセルを埋めるために使用されます。デフォルトは です。 hdir は、要素の各行の配置方向を左から右へ、または右から左へ決定します。デフォルトは右です。 vdir は、各列の配置方向を上から下へ、または下から上へ決定します。デフォルトは下です。
数学
数値演算を実行します。方程式と変数は必須です。方程式は演算子を定義します。使用できる演算子は、+、-、/、*、abs、ceil、cos、exp、floor、log、log10、max、min、pi、pow、rand、round、sin、sqrt、です。スランスアンタン。 var は操作変数に値を割り当てます。 format は結果の形式を決定します。 assign は出力をパラメータに割り当てます。
mailto
mailto 関数を使用すると、Web スパイダーがあなたのメール アドレスを取得することが困難になりますが、メール アドレスが暗号化されるため、Web ページ上では正常に表示されます。 address は必須であり、電子メール アドレスを定義します。 text はページに表示されるテキスト コンテンツで、デフォルトは電子メール アドレスです。エンコードは電子メール アドレスを暗号化する方法です。デフォルトは none です。他のメールボックスにメールを送信したい場合は、cc を使用してメール アドレスを区切ることができます。 bcc はブラインド カーボン コピーです。 subject は電子メールの件名です。ニュースグループは、コンテンツを公開するためのニュースグループです。ニュースグループを区切るには、 を使用します。 extra は追加のタグを追加します。フォローアップの意味が分かりません。
textformat
textformat はテキストの書式設定に使用され、スペースと特殊文字を削除し、線幅とインデントを指定します。 style は現在の形式を指定し、indent はインデントの数を指定します。 indent_first は、最初の行のインデントを指定します。 indent_char は、インデントに使用される文字です。デフォルトはスペースです。 Wrap は行の幅、つまり 1 行の文字数を指定します。デフォルトは 80 です。 Wrap_char は各行の区切り文字を指定します。デフォルトは n です。 Wrap_cut は単語を分割するかどうかを決定します。 assign は出力を変数に代入します。
定数
SMARTY_DIR
は、smarty クラス ディレクトリへのフルパスであり、/ で終わる必要があります。定義されていない場合、パスは自動的に決定されます。
SMARTY_CORE_DIR
は、smarty クラスのコア ファイル ディレクトリへのフル パスであり、/ で終わる必要があります。定義されていない場合は、smarty_dir パスの下のサブディレクトリとして自動的に定義されます。
変数
$template_dir
デフォルトのテンプレート ディレクトリ名、デフォルトは「./templates」です。
コンパイルされたデフォルトのテンプレート ディレクトリ名。デフォルトは " ./templates_c" です。
$config_dir
デフォルトの設定ファイル ディレクトリ名、デフォルトは "./configs" です。
デフォルトのプラグイン ディレクトリ名、デフォルトは "plugins" です。デバッグコンソール。つまり、変数を表示するウィンドウ
$debug_tpl
デバッグ ウィンドウ テンプレート
$debugging_ctrl
デバッグを制御する別の方法。
$autoload_filters
すべてのテンプレートにフィルターを使用します。この変数は配列であり、キーワードはフィルターの種類、値はフィルター名です。
$compile_check
phpが実行されるたびに、テンプレートの内容が変更されているかどうかをチェックします。
$caching
ファイル実行によって生成されたファイルをキャッシュするかどうかを決定します。
$cache_dir
デフォルトのテンプレート キャッシュ ディレクトリ名、デフォルトは「./cache」です。
$cache_lifetime
キャッシュされたテンプレートの有効期限 (秒単位で計算)。 $caching 値が -1 の場合、キャッシュされたテンプレートは無効になります。
最後に、参考のために私が使用する例を示します。
$TurnDot = substr(PHP_OS, 0, 3) == 'WIN' ? ":" ;
$doc_root=$_SERVER['DOCUMENT_ROOT']; //デフォルトでルートパスを取得します
//$doc_root="E:/Myweb/an-cool.com/Web" ;指定されたパス
$lib_root= ".".$TurnDot.$doc_root."/shopadmin".$TurnDot.$doc_root."/shopadmin/inc".$TurnDot.$doc_root."/".$TurnDot.$doc_root. "/jpgraph/src/ ".$TurnDot.$doc_root."/Smarty/libs/".$TurnDot.$doc_root."/Smarty";
ini_set("include_path",$lib_root); global.php"); //ここではグローバル設定ファイルを読み込みます。
$Templates_root = $doc_root."/templates"; //テンプレートのルートディレクトリを定義します
define("Templates",$Templates_root);
$templates = isset($INFO['templates']) : 'default' ;
$tpl = new Smarty(); $tpl
$tpl->debugging = false;
$tpl->template_dir = Templates."/".$templates ; ."/templates_c"; //コンパイルディレクトリを設定します
$tpl->cache_dir = $ doc_root。 True を使用してください $ TPL- & GT;
$ tpl->right_delimiter= '}>'; INFO['site_url']."/templates/".$templates ); //テンプレートパス
$tpl ->assign("Site_Url", $INFO['site_url']); //メインサイトのURL
$tpl ->assign("LanguageIs", $INFO['IS']); //言語パックの種類
$tpl->assign("HtmlTitle", $INFO['site_title']); //TITLE コンテンツ
$ tpl->assign("HtmlMeta", $INFO['meta_keyword']) //META コンテンツ
?>
上記では、shavarsh karapetyan の内容を含め、Smarty を学習するための shavarsh karapetyan PHP が詳しく紹介されており、PHP チュートリアルに興味のある友人に役立つことを願っています。