ホームページ  >  記事  >  バックエンド開発  >  PHP を詳しく徹底的に学ぶ Smarty_PHP チュートリアル

PHP を詳しく徹底的に学ぶ Smarty_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-21 15:52:57678ブラウズ

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

テンプレートのコメントは、{* これはコメントです *} などの * 記号で囲まれています。
スマートなコメントは、テンプレート内の内部コメントです。

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

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

テンプレート内の組み込み関数とカスタム関数はどちらも同じ構文です。
組み込み関数は、{if}、{section}、{strip} などで動作します。
自動定義関数は変更できません。これらは、自由に変更して自分で追加できる追加関数です。
属性
静的な値には引用符は必要ありません。値 (true または false) も引用符は必要ありません。true、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、などのアクセス ページ リクエスト変数です。たとえば、{$smarty.server.SERVER_NAME} はサーバー変数を取得し、{$smarty.env.PATH} はシステム環境変数のパスを取得し、{$smarty.request.username} は get を取得します。 /post/cookies/ サーバー/環境の複合変数。

{$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} は、{#foo #} を表すことができます。

{$smarty.section}、{$smarty.foreach}
{$smarty} 変数は、'section' ループと 'foreach' ループのプロパティにアクセスできます。 Smarty.template}
現在処理中の内容を表示します

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

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

{$smarty.rdelim
右の区切り文字を表示する

変数調整器
変数調整器は、変数、カスタム関数、文字列に使用されます
調整器は、パラメータによって動作が決定されます。
パラメータは ':' 記号で区切られます
変数アジャスタを使用して配列変数を調整すると、結果として配列の各値が調整されます。調整者名の前に @ 記号を追加する必要があります。例: {$articleTitle|@count} (これにより、$articleTitle 配列内の数値が出力されます)

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

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 - 月の番号、数値が奇数の場合は前にスペースを追加しますit (1 から 31)

%g - 世紀

%G - 世紀 [0000,9999]

%h - %b と同じ

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

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

%j - 年間の日 (001 から 366)

%k - 24 時間形式の時間 (先頭にスペースが入ります)奇数 (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 - 表示日付: 月/日/年

%X - 表示時間: 時:分:秒

%y - 世紀を除いた年

%Y - 世紀を含む年

%Z - タイムゾーン

%% - 出力%

一部正常に出力できない場合があります。

default
デフォルト
空の変数にデフォルト値を設定します
変数が空または未割り当ての場合、出力は指定されたデフォルト値に置き換えられます

エスケープ
トランスコーディング
パラメータ値は html、htmlall、 URL、引用符、16 進数、16 進数、JavaScript。デフォルトは HTML トランスコーディングです。

indent
Indent
最初のパラメータは、インデントする文字数を指定します。デフォルトは 4 文字です。

lower
小文字
変数文字列を小文字にする

nl2br
改行を
に置き換える
正規表現を検索して置換する
2 つのパラメータが必要です。パラメータ 1 は置換正規表現です。パラメータ 2 は置換するテキスト文字列を使用します

replace
replace
単純な検索および置換文字列には 2 つのパラメータが必要です。パラメータ 1 は置換する文字列です

spacify
spacify は、文字列の各文字の間にスペースまたはその他の文字列を挿入します。パラメータは 2 つの文字の間に挿入される文字列を表します。デフォルトはスペースです。

string_format 文字列の書式設定
は、浮動小数点数などを書式設定する方法です。sprintf 構文を使用します。このパラメータは必須であり、使用するフォーマット方法を指定します。 %d は整数を表示することを意味し、%.2f は 2 つの浮動小数点数をインターセプトすることを意味します。

strip (余分なスペース) を削除します。
繰り返されるすべてのスペース、改行、タブを単一の文字列または指定された文字列に置き換えます。パラメータがある場合は、それが指定された文字列になります。

strip_tags すべての HTML タグを削除します

インターセプトを切り詰めます
パラメータ 1 は、インターセプトする文字数を指定します。デフォルトは 80 です。
2 番目のパラメータは、インターセプトされた文字列の後に追加する文字を指定します。パラメータは正確にインターセプトするかどうかを決定します。デフォルトでは false であり、smarty は単語を分割しません。

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

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

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

foreach、foreachelse
foreach ループは、連想配列を走査するために使用されますが、妥協点として使用されます。単純な配列にのみ使用できます。
foreach の必須パラメーターは from と item で、from 変数はループする必要がある配列の名前を表し、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 は以下に等しい、not はそうでない、mod は係数です。 div は、特定の数で割り切れるかどうかによって [そうではない]、偶数であるかどうかでも [そうではない]、$a は $b でさえ [そうではなく]、つまり ($a / $b) % 2 == 0, is [not] 奇数が奇数であるかどうか、$a は $b によって奇数ではない、つまり ($a / $b) % 2 != 0

php
php タグを使用すると、php 言語をテンプレート。

section,sectionelse
section はループ内の配列データを表示するために使用され、name とloop は必須のパラメーターです。 name はネストされた名前を表します。セクションはネストして使用できますが、名前は異なる必要があります。 loop はループの数を表します。loop パラメータが空の場合、sectionelse は出力します。start は、ループを開始するポインタを指定するために使用されます。値が負の場合、開始ポインタは配列の末尾から計算されます。step は、負の場合、ループ内のステップ数を表します。デフォルトは 1 です。 max はループの最大長を設定します。
Section にはセクション属性を処理するための独自の変数があり、これは {$smarty.

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

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

index_next
次のループのポインターを表示します。

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

first
現在のループが最初のループの場合、値は true になります。現在のループは最後のループです。値は true です。

rownum
繰り返しと同じです。セクションの途中のどこでも使用できます。

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

total
セクションの途中またはセクションの後の任意の場所で使用できます。スペース
通常の関数
assign
assign は、テンプレートを実行するときに変数の値を割り当てるために使用されます。var、value は値を割り当てる変数の名前、value は割り当てられた値です。 counter
counter はカウントを出力するために使用されます。ただし、名前は異なる必要があります。name はカウントの初期値を表し、デフォルトは 1 です。スキップ カウント間隔。デフォルトは 1 です。direction はカウント方向 (上または下) を示し、デフォルトは up.print は値を印刷するかどうかを示します。デフォルトは true です。assign はテンプレート変数とカウンターの出力を定義します。 assign で定義された変数に代入されます。

cycle
Cycle はサイクル名を表し、values ("value 1", "value 2",...) を表します。サイクル内に表示される値のセット。advanced は次の値を表示するかどうかを決定します。デリミタは、デフォルトではテンプレート変数を定義し、サイクルの出力が割り当てられます。

debug
debug は、割り当てられた値をすべて表示できますが、出力属性によって表示が決まります。デフォルトは html です。変数を変数に挿入するために使用されます。 var は挿入された変数名で、assign は出力を変数に割り当てます。

fetch
は、ファイルの内容を取得し、ファイルの内容を出力するために使用されます。ファイルを取得するためのパスは、ファイルを変数に代入します。

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」です。 $debugging
デバッグ コンソール。つまり、変数を表示するウィンドウ
$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(); object $tpl
$tpl ->debugging = false;
$tpl->template_dir = Templates."/".$templates ; "/templates_c"; //コンパイルディレクトリを設定します
$tpl->cache_dir = $ doc_root。 "/cache" Cache time $ tpl-> cache_lifetime = 0; ';
$tpl->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']);メタコンテンツ
?>

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/318813.html技術記事基本的な構文: Smarty タグはすべて区切り文字で区切られています。smarty では、区切り文字以外のすべてのコンテンツが静的です。smarty はテンプレート タグに遭遇すると、それを解釈しようとします。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。