ホームページ > php教程 > php手册 > PHP Smartyを徹底的に学ぶ

PHP Smartyを徹底的に学ぶ

WBOY
リリース: 2016-06-13 12:29:51
オリジナル
1036 人が閲覧しました

基本構文
smarty タグはすべて区切り文字で区切られています。smarty は、テンプレート タグを検出すると、それらを解釈して適切に使用しようとします。デフォルトは { です。と } ですが、カスタマイズ方法は次のとおりです:
$smarty->right_delimiter = '}-->';

1. コメント

{* これはコメントです *} などの * 記号で囲まれたテンプレート コメントは、内部コメントではありません。 template.

2. 変数
テンプレート変数は $ で始まり、数字、文字、アンダースコアを含めることができます。
config_file 変数は例外であり、#variablename# メソッドを使用して参照する必要があります。

関数は、変数を出力するか、特定の関数を呼び出します。区切り文字属性内の他の関数は処理されて出力されます。例:
{funcname attr1="val" attr2="val"}
funcname は、include などの関数の名前です。 attr1 と attr2 は属性名、val は属性に対応する値です。

テンプレート内の組み込み関数とカスタム関数はどちらも同じ構文を持ちます。
{if}、{section}、{strip} などの組み込み関数は、smarty 内で動作します。
カスタム関数は、プラグイン メカニズムを通じて機能します。
たとえば、{html_options} および {html_select_date}

4. 🎜 >静的な値には引用符は必要ありません。また、ブール値 (true または false) には、true、on、yes または false、off、no を指定できます。ただし、文字列も例外です。

5. 文字列に変数を挿入する
は、数字、文字、アンダースコア、[] の組み合わせのみを認識します。 「.」が付いた変数。たとえば、{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、サーバー、環境、セッション変数などのページリクエスト変数にアクセスする例です。たとえば、{$smarty.server.SERVER_NAME} はサーバー変数を取得し、{$smarty.env.PATH} はシステム変数を取得します。環境変数 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.config} {$smarty} 変数 ロードされた設定変数にアクセスできます。
たとえば、{$smarty.config.foo} は、

{$smarty.section}、{$smarty を表すことができます。 .foreach}
{$smarty} 変数は、'section' および 'foreach' ループのプロパティにアクセスできます。

{$smarty.template}
現在処理中のテンプレートの名前を表示します。

{ $smarty.version}
smarty テンプレートのバージョンを表示

{$smarty.ldelim}
左区切り文字を表示

{$smarty.rdelim}
右区切り記号を表示

変数アジャスター
変数アジャスターは、「|」記号とアジャスター名を使用して適用できます。変数調整器は、パラメータに割り当てられた値によってその動作が決まります。
パラメータは「:」記号で区切られます。
変数調整器を使用して配列変数を調整すると、その結果は次のようになります。配列全体を調整する場合は、レギュレーター名の前に @ 記号を付ける必要があります。例: {$articleTitle|@count} (これにより、$articleTitle に数値が出力されます)。 array)

capitalize
変数内のすべての単語の最初の文字を大文字にします。パラメーター値 boolean は、数字を含む単語の最初の文字を大文字にするかどうかを決定します。デフォルトでは大文字ではありません。

count_characters
変数値の文字数をカウントします。パラメーター値のブール値により、スペースの数をカウントするかどうかが決まります。デフォルトでは、スペースはカウントされません。

cat
cat のパラメータ値を指定された変数に接続します。デフォルトは空です。

count_paragraphs
Count the number of paragraphs in the variable

count_sentences
Count the number of sentences in the variable

count_words
Count the number of words in the variable

date_format
Date format

The first parameter controls the date format.
If the data passed to date_format is empty, the second parameter will be used as the default time

%a - Abbreviation of day of the week

%A - Abbreviation of day of week

%b - Abbreviation of month

% B - 月の略語

%c - 日付と時刻 06/12/05 11:15:10

%C - 世紀時間

%d - の数月 (01 から 31 まで)

%D - %m/%d/%y と同じ

%e - 月の番号 (数値が奇数の場合)前にスペースを追加します (1 ~ 31)

%g - 世紀

%G - 世紀 [0000,9999]

%h - %b
%H - 24 時間形式の時間 (00 から 23)

%I - 12 時間形式の時間 (01 から 12)

%j - day of the year (from 001 to 366)

%k - The hour in 24-hour format, with a space before the singular digit. (from 0 to 23)

%l - The hour in 12-hour format, with a space before the singular digit. (range 1 to 12)

%m - Month (range 01 to 12)

%M - Minutes

%n - 改行

%p - 午前または午後 `am' または `pm' を表示

%r - 午前または午後の形式の時刻

%R - 24 時間形式の時刻

%S - 秒

%t - タブ記号

%T - %H:%M:% と同じs

%u- [1,7]を使用して曜日を表す
%v-計算は年の週数であり、01から53まで、今年は少なくとも4日間、日曜日は週の初日です

%w-数値の曜日を表し、日曜日は0です

%w-年の最初の月曜日から始まる年の週の数

%x - Display date: month/day/year

%X - Display time: hour: minute: second

%y - year excluding century

%Y - 世紀を含む
default
Default
Set a default value for an empty variable.
When the variable is empty or unassigned, the output will be replaced by the given default value.

ESCAPE
トランスコーディング
パラメーター値は、HTML、htmlall、url、quotes、hex、hexentity、javascrīptです。默认是html转码 

indent 
缩进 
在每行缩进字符串,第一个参数指定缩进多少个字符,默认是4个字符.第二个参数,指定缩进用什么字符代替。

lower
lowercase
This is used to lowercase a variable.
Lowercase the variable string

nl2br
Replace newline characters with


regex_replace
Regular replacement
Find and replace regular expressions. There must be two parameters. Parameter 1 is the replacement regular expression. Parameter 2 uses what text string to replace

replace
Replace
Simple search and replace strings must have two parameters, parameter 1 is the string to be replaced. Parameter 2 is the text used to replace

spacify
spacify inserts a space or other string文字列の各文字の間。

string_formatのフォーマット
たとえば、小数点図をフォーマットする方法です。パラメーターが必要であり、使用するフォーマット方法を指定します。 %d は整数を表示することを意味し、%.2f は 2 つの浮動小数点数をインターセプトすることを意味します。

ストリップは、繰り返されるすべてのスペース、ニューライン、タブを単一のパラメーターまたは指定された文字列に置き換えます。

strip_tagsすべてのhtmlタグを削除

インターセプト
パラメーター1は、デフォルトの文字の数を指定します。文字列の後に追加されます。

upper は変数を大文字に変更します。

ワードラップの行幅制約
最初のパラメータは段落の幅 (つまり、この数を超える場合は 1 行あたりの文字数を指定します)
2 番目のパラメータは、制約ポイントで使用する文字を指定します (デフォルトは改行文字 n)。
3 番目のパラメータは、文字を正確にインターセプトするかどうかを決定します。デフォルトでは、不正確なインターセプトです。つまり、インターセプト中に単語を分離できません。
組み込み関数
組み込み関数は許可なく変更することはできません。
capture
キャプチャ関数の機能は、テンプレートによって出力されたデータをページに出力するのではなく、変数に収集することです。たとえば、{capture name="foo"} と {/ の間のデータです。 Capture} は、関数の name 属性で指定された変数 {$foo} または {$smarty.capture.foo} で受信されます。関数に name 属性がない場合、「default」が使用されます。各 {capture} は {/capture} に対応する必要があり、キャプチャ関数をネストすることはできません。

config_load
設定ファイルの参照
ファイルは必須で、インクルードする設定ファイルの名前、ロードする部分の名前を示すセクション、および変数のスコープを示しますスコープによって処理されます。ローカル、親、またはグローバルである必要があります。
ローカルは、変数がこのテンプレートと上位のテンプレートにロードされることを意味します。 global は、変数がすべてのテンプレートに適用されることを意味します。デフォルトはローカルです。変数が上位テンプレートに表示されるかどうかに関係なく、デフォルトは「いいえ」です。スコープ属性がすでに存在する場合、この値は無視されます。

foreach、foreachelse
foreach ループは、連想配列を走査するために使用されます。
foreach の必須パラメータは、ループする必要がある配列の名前を表し、item は変数名を表します。現在の要素、key は現在のキーワードの変数名を表し、name は foreach 属性にアクセスする foreach ループの名前を表します。ループは互いに入れ子にすることができ、from 変数に値がない場合は、他のテンプレートを参照するために foreachelse が実行されます。
file 属性は参照されるテンプレートの名前を表すために必要であり、assign はインクルード ファイルが割り当てる出力変数を表します。属性名="属性値" を使用して、任意の数のローカル変数を自分で定義できます。

include_php
は、php スクリプトをテンプレートに導入するために使用されます。 file は、PHP スクリプトのパスを表すために必要です。 Once は、PHP スクリプトがテンプレート内で複数回参照される場合に、その PHP スクリプトを 1 回だけロードするかどうかを決定します。デフォルトは true です。

insert
は、php スクリプトに関数を含めるのに使用されます。 name は必須であり、名前が name の場合、組み込まれる関数は insert_name() であることに注意してください。挿入するには、先頭に insert_ を付ける必要があります。 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 にはセクション属性を処理するための独自の変数もあり、これは {$ を使用して表示されます。

index
index は現在のループ ポインタを表示するために使用されます。ループ ポインタは 0 から始まります。

index_prev
は次のポインタを表示するために使用されます。 -1 から始まる前のループ

index_next
は、次のループのポインターを表示するために使用されます。

iteration
現在のループの数を 1 から表示します。

first
現在のループが最初のループの場合、値は true です。

last
現在のループが最後のループの場合、値は true です。 >
rownum
繰り返しと同じです。

loop
最後のループのポインタを表示します。セクションの途中のどこでも使用できます。セクションの後で使用することもできます。

show
show はセクションを表示するかどうかを決定します。

total
ループの合計数を表示します。これはセクションの途中の任意の場所で使用できます。

strip
余分なスペースを削除します
通常の関数
assign
assign は、テンプレートの実行時に変数値 .var を割り当てるために使用されます。値は必須パラメーターです。 . var は値を割り当てる変数の名前で、value は割り当てられた値です。

counter
counter はカウントを出力するために使用されますが、名前は次のようになります。異なる .name はカウンター名を表し、デフォルトはデフォルトです。start はカウントの初期値を表し、デフォルトは 1 です。カウント間隔をスキップし、デフォルトは 1 です。direction はカウント方向を表し、上または下、デフォルトは上です。 print は値を出力するかどうかを表します。デフォルトは true です。assign はテンプレート変数を定義し、カウンターの出力は assign で定義された変数に代入されます。

cycle
Cycle は表示に使用されます。 name はループ内の値のセットを表し、values("value 1", "value 2",...) はループ内に表示される値のセットを表します。 admin は次の値を表示するかどうかを決定します。delimiter は値の区切り文字を決定します。assign はテンプレート変数、cycle を定義します。 出力は、assign で定義された変数に割り当てられます。 >debug
debug は値が割り当てられたすべての変数を表示できますが、出力属性によって表示形式が決まります。デフォルトは

eval
eval です。変数を変数に挿入します。 var は挿入された変数名で、assign は出力を変数に割り当てます。

fetch
は、ファイルの内容を取得し、ローカル ファイル、http ファイル、および ftp ファイルを取得するために使用されます。変数。

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 は日付の表示形式を決定し、デフォルトは d です。 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 は、各列の配置方向を上から下へ、または下から上へ決定します。デフォルトは下です。

math
数値演算を実行します。方程式と変数は必須です。方程式は演算子を定義します。使用できる演算子は、-、/、*、abs、ceil、cos、exp、floor、log、log10、max、min、pi、pow、rand、round、sin、sqrt、srans です。そして日焼け。 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
デフォルトのテンプレート ディレクトリ名、デフォルトは「./」です。
$compile_dir
デフォルトのコンパイル済みテンプレート ディレクトリ名、デフォルトは「./templates_c」です。
$config_dir
デフォルトの設定ファイル ディレクトリ名、デフォルトは「./configs」です。
$ plugins_dir
デフォルトのプラグイン ディレクトリ名、デフォルトは「plugins」です。
$debugging
デバッグ コンソール。つまり、変数を表示するウィンドウです。
$debug_tpl
デバッグ ウィンドウのテンプレート
$debugging_ctrl
デバッグを制御する別の方法。
$autoload_filters
すべてのテンプレートにフィルターを使用します。この変数は配列であり、キーワードはフィルター タイプ、値はフィルター名です。
$compile_check
php が実行されるたびに、テンプレートの内容が変更されているかどうかがチェックされます。

$caching
ファイルの実行によって生成されたファイルをキャッシュするかどうかを決定します。
$cache_dir
デフォルトのテンプレート キャッシュ ディレクトリ名。デフォルトは「./cache」です。
$cache_lifetime
$caching 値が秒単位で計算される。 -1、テンプレートは期限切れになりません。
最後に、参考のために私が使用する例を示します。

error_reporting(7); $TurnDot = substr( PHP_OS, 0, 3) == 'WIN' ? ";" : ":" ; //デフォルトでルートパスを取得します。 //$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);
include("conf.global.php"); //ここではグローバル設定ファイルを読み込みます。 $Templates_root = $doc_root."/ templates"; // テンプレートのルート ディレクトリを定義します
define("Templates",$Templates_root);
$templates = isset($INFO['templates']) ? 'templates'] : 'default ' ;
include_once('Smarty.class.php');
$tpl = new Smarty(); //smarty インスタンス オブジェクトを作成します$ tpl
$tpl->デバッグ= false; $ tpl-> template_dir = templates時間
cache_lifetime = 0; ->right_delimiter= '}>';
$tpl->assign("template_dir", $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') ]); //メタコンテンツ
?>

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のおすすめ
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート