smarty サンプル チュートリアル (1) 1.smarty とは何ですか? smarty は、PHP プログラムと外部コンテンツを分離することを目的としています。プログラマがプログラムの論理内容を変更してもアーティストのページのデザインには影響せず、アーティストがページを再変更してもプログラムのプログラム ロジックには影響しません。これは特に複数人で行う場合に当てはまります。重要な協力プロジェクト。 2. Smarty の利点: 1. 速度: Smarty を使用して作成されたプログラムは、他のテンプレート エンジン テクノロジーと比較して最大の速度向上を実現できます。 2. コンパイル済みタイプ: Smarty で書かれたプログラムは、実行時に非テンプレート テクノロジの PHP ファイルにコンパイルする必要があります。このファイルは、次回テンプレートにアクセスするときに、PHP と HTML を組み合わせて WEB リクエストを直接変換します。このファイルでは、テンプレートは再コンパイルされなくなります (ソース プログラムが変更されていない場合) 3. キャッシュ技術: ユーザーが最終的に見る HTML ファイルを静的 HTML にキャッシュできる、smarty が選択したキャッシュ技術ページで、smarty のキャッシュ属性が true に設定されている場合、ユーザーの WEB リクエストは、smarty によって設定されたキャッシュタイム内でこの静的 HTML ファイルに直接変換されます。これは、静的 HTML ファイルを呼び出すことと同等です。 4. プラグインテクノロジー: Smarty はプラグインをカスタマイズできます。プラグインは実際にはいくつかのカスタム関数です。 5. If/elseif/else/endif をテンプレートで使用できます。テンプレート ファイルで判断ステートメントを使用すると、テンプレートを非常に便利に再フォーマットできます。 3. Smarty が適さない場所: 1. リアルタイムで更新する必要があるコンテンツ。たとえば、頻繁にデータを更新する必要がある株式表示のように、このタイプのプログラムに Smarty を使用すると、テンプレートの処理が遅くなります。 2. 小さなプロジェクト。プロジェクトが単純であるため、アーティストとプログラマーの両方が単純な小規模プロジェクトの場合、smarty を使用すると、迅速な PHP 開発という利点が失われます。 4.smartyクラスをインストールします: smartyをインストールする環境: PHPバージョン4.06以降。 smartyのインストール方法は非常に簡単で、http://samrty.php.net...からsmarty.tをダウンロード して、commディレクトリに全てのファイルをコピーして、基本的なインストールは完了です その他をご覧ください。高度なインストールと使用方法 5. テンプレートでの Smarty の使用: このセクションでは、いくつかの例を通して Smarty の使用について説明します。 Smarty テンプレートは通常、.tpl で識別されます。芸術の便宜上、拡張子を直接 .html として記述する人もいます。これも です。この記事では、smarty の標準的な記述方法を採用しており、smarty テンプレートとして .tpl で表現されています。 PHP コード:------------------------------------------ --- ---------------------------------- 例 1: 簡単な例を見てみましょう初め。 =============================================== ==== index.tpl ========================================= = ============ {* Smarty 変数識別子の * に含まれるテキストがコメント内容として表示されます *} {include file="header.tpl"}{*ページヘッダー* } 皆さん、こんにちは。私の名前は {$ Name} です。皆さん、私の Smarty 学習教材を読んでください。 {include file="foot.tpl"}{*ページの終わり*} 上の例は tpl テンプレートです。ここで: 1. {**} はテンプレート ページのコメントであり、テンプレートを解析します。 Smarty 出力は実行されません。テンプレート設計者のみがテンプレートに注釈を付けることができます。 2. {include file="xxx.tpl"} この文を使用して、現在のページにテンプレート ファイルをインクルードします。この例では、Web サイトで一般的な head.tpl と foot.tpl がインクルードされます。これについて考えてみましょう。この文を使用して、xxx.tpl のすべての内容を現在のステートメントにコピーします。もちろん、この文を使用する必要はありません。XXX.tpl の内容を現在の文にコピーしても問題ありません 。 3.{$name}: Smarty のコアコンポーネントであるテンプレート変数には、smarty によって定義された左境界文字 {および右境界文字} が含まれており、PHP 変数の形式で与えられます。これは Smarty で使用されます。プログラム $smarty ->assign("name", "Li Xiaojun"); テンプレート内の $name を 3 つの単語「Li Xiaojun」に置き換えます。 ソースプログラム全体の例は次のとおりです: ============================= header.tpl ==== === ======================
兄貴の賢いチュートリアル ;/ 頭>
<体>
=============================
foot.tpl
== == ==========================
CopyRight(C) by Senior Brother 2004 年 8 月<中央> ============== = ========================= index.tpl =================== = ================================= {* 表示はsmarty変数識別子の*に含まれるテキストですコンテンツに注釈を付けます *} {include file="header.tpl"}{*ページ ヘッダー*} 皆さん、こんにちは。私の名前は {$name} です。私の Smarty 学習教材をぜひ読んでください。 {include file="foot.tpl"}{*ページ終了*} ============================== == ================= Index.php ========================== == ==================== include_once("./comm/Smarty.class.php") //smarty クラス ファイルをインクルードします。 $smarty = new Smarty(); //smarty インスタンス オブジェクトを作成します $smarty $smarty->templates("./templates"); // テンプレート ディレクトリを設定します $smarty->templates_c(". /templates_c") ; //コンパイルディレクトリを設定します --------------- // 左右の境界記号、デフォルトは {} ですが、実際のアプリケーションでは競合しやすいですJavaScript // を使用するため、& lt; {} & gt; などに設定することをお勧めします。 //-------------------------------------------- --- ---- s $ SMARTY- & GT; left_delimiter = "{"; $ SMARTY- & GT; Right_delimiter = "}"; // の下にあるindex.tplテンプレートをコンパイルして表示します。 ./templates $smarty->display("index.tpl");シ ============================= === Index.php を実行 ============ ===================== < head> Big Brother Smarty チュートリアル 皆さん、こんにちは、私の名前は Li Xiaojun です。皆さん、私の Smarty 学習教材を読んでください。 smartyの例(2) この例は、これらのパラメーターを使用して、他のパラメーターを参照することができます。 ============================================= == == exmple2.tpl ========================================= === ===== $str1|capitalize} 2. 2 番目の文テンプレート変数 + Li Xiaojun: {$str2|cat:"Li Xiaojun"} 3. 3 番目文は現在の日付を出力します: {$str3|date_format: "%Y year %m month %d day"} 4. 4 番目の文は .php プログラムでは処理されず、デフォルト値が表示されます: {$str4|default :「価値がない!」} 5. 5 番目の文は 8 つの空白文字でインデントし、これら 8 つの空白文字を「*」に置き換えます。 6. 6 番目の文では、すべての TEACHerLI@163.com を小文字に変更します: {$str6| lower} 7. 7 番目の文で、変数の Teacherli を次のように置き換えます。 Li Xiaojun: {$str7|replace:"Teacherli ":"Li Xiaojun"} 8. 8 番目の文は、変数修飾子の組み合わせです。 $str8|capitalize|cat:"これが新しく追加された時刻です:"|date_format:"%Y year %m month %d日"| lower} ================ == example2.php ============================ =============== ===== include_once("./Smarty.class.php"); //Smarty クラス ファイルをインクルードします $smarty / /コンパイル ディレクトリを設定します ---------- --- // 左右の境界記号、デフォルトは {} ですが、実際のアプリケーションでは JavaScript と競合しやすいため // に設定することをお勧めします & {} & gt; ; またはその他。 //-------------------------------------------- --- ----- $smarty->left_delimiter = "{"; $smarty->left_delimiter ."); // str1 を私の名前は Xiao Jun, Li に置き換えます。 $smarty->assign ("str2", "私の名前は:"); //出力: 私の名前は: Li Xiaojun $smarty->assign("str3", "AD"); //西暦 2004 年 8 月 21 日の出力 (my現在時刻) //$smarty->assign("str4", ""); //4 番目の文が処理されない場合はデフォルト値が表示されます。前の文が使用されている場合は、" に置き換えられます。 「 ********最初の 8* $smarty-> ("str7", "this is Teacherli"); // テンプレートでは次のように表示されます。 Xiaojun $smarty->assign("str8", "HERE IS COMBINING:"); // ./templates にあるindex.tplテンプレートをコンパイルして表示します $smarty->display("example2.tpl ======================================= Example2.php の出力効果: == ============================================= ==== == & lt; & lt; タイトル & gt; ブラザー スマーティ & lt; & gt; 1. 最初の文の最初の文は大文字にする必要があります: 私の名前は xiao Jun, Li. 2. 2 番目の文のテンプレート変数 + Li Xiaojun: 私の名前は: Li Xiaojun 3. 3 番目の文は現在の日付を出力します: 2004 年 8 月 21 日 4. 4 番目の文は PHP プログラムでは処理されず、デフォルト値: 値なしが表示されます。 5. 5 番目の文は 8 つの空白文字でインデントし、これら 8 つの空白文字を「*」に置き換えます: ********6 番目の文の最初の 8 文字をすべて TEACHerLI@ に変更します。 163.com を小文字にします: Teacherli@163.com 7. 7 番目の文で、変数の Teacherli を次のように置き換えます。 Li Xiaojun: これは李小ジュンです 8. 8 つの文では変数修飾子を使用します。 is Combining: これが新しい時間です: 2004 年 8 月 21 日 & lt;/body & gt; 修飾子 (変数修飾子) は、テンプレートへの一連の変更を制御するために使用します。変数修飾子 修飾子を適用するには「|」と修飾子名を使用し、修飾子のパラメータを区切るには「:」を使用します。変数修飾語は8文目のように組み合わせて使用することができ、実際の運用において柔軟に適用することができます。 例 3. ========================================== ======== example3.tpl ===================================== = ============= テンプレートのいくつかのデフォルト関数 {*次の段落は、変数 username を定義するのと同じです*} {assignay var = "username" value = "Master"} ここに変数が定義されています: username = admin この行には、3 つのチェックボックス: 3 つのラジオ:< が表示されます。 ; br&gt、年、br&gt; ================= ==================== example3.php ======== ================== ============================= require_once ("./comm/Smarty.class.php") ; $smarty = new F117_Smarty $smarty->template_dir = './templates/'; $smarty->compile_dir = './templates_c/'; $smarty->config_dir = './configs/'; $smarty->caching = false; /---------------- --------------------------------- ----------------- ------------------ //処理中 {html_checkboxes name="CheckBox" value=$CheckNameチェック済み=$IsChecked 出力=$値区切り文字=" //---------------------------- -------------------- ------------------------------ ------------ $smarty->assign( 'CheckName', array( 1001 1003 => $smarty->assign(' IsChecked', 1001); //------------------------------------- ---------------------------------------------------- //処理中 {html_radioes name=" RadioBox" value=$RadioName selected=$IsChecked Output=$value separator=" "} //----------------------------------------------- --- -------------------------------------- $smarty->assign( 'RadioName' , array( 1001 1003 => '外国語')); / /----------- -------------------------------------- ------------------------ ------------------------ //{html_select_date}は処理せずに自動的に出力されます / /----------- -------------------------------------- ----------- ------------------------ $smarty->display("example3.tpl "); ?> smarty サンプル チュートリアル(3) ================================== ========== ============ example3.php の出力効果: ==================== ========== ======================== テンプレート内の 一部のデフォルト関数 < /head> {assign var="UserName" value="先輩"} 这里将显示模板内部定义的一个变量:UserName = 大师兄 下面的这一行将显示3个checkBox: 语文 数学 外语 下面在这一行将显示3个radio: 语文 数学 外语 下面显示一个月,日, 年选择框: January February March April May June July August September October November December 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 <名前=「日付_年」を選択> 2004 CopyRight(C) By XiaoJun, Li 2004Áèã ϵ×÷Õß 例 3 は、smarty モジュール内にあるいくつかの関数を使用しており、同様の関数を大家が手動で入手でき、方法を使用して、大家が自分で去れる可能性があります。 例4.模板制御(if / elseif / else/ endif ) ================================ ======================= example4.tpl ====================== ================================= モール板内のフロー制御 {assign var="tbColor" value="#D4D0C8"} 色:{$tbColor} {section name=loop loop=$News} {if $tbColor == "#D4D0C8"} {assign var="tbColor" value="#EEEEEE"} {else $tbColor == "#EEEEEE"} {assign var="tbColor" value="#D4D0C8"} {/if} {$News[loop].newsID} s [ループ].newsTitle}
======================================================= example4.php ======================================================= require_once ("./public/inc/F117_Smarty.php"); $smarty = new F117_Smarty; $smarty->template_dir = './templates/'; $smarty->compile_dir = './templates_c/'; $smarty->config_dir = './configs/'; $smarty->cache_dir = './cache/'; $smarty->caching = false; $array[]= array("newsID"=>"001", "newsTitle"=>"第1条新闻"); $array[]= array("newsID"=>"002", "newsTitle"=>"第2条新闻"); $array[]= array("newsID"=>"003", "newsTitle"=>"第3条新闻"); $array[]= array("newsID"=>"004", "newsTitle"=>"第4条新闻"); $array[]= array("newsID"=>"005", "newsTitle"=>"第5条新闻"); $array[]= array("newsID"=>"006", "newsTitle"=>"第6条新闻"); $array[]= array("newsID"=>"007", "newsTitle"=>"第7条新闻"); $array[]= array("newsID"=>"008", "newsTitle"=>"第8条新闻"); $smarty->assign("News", $array); $smarty->display("example4.tpl"); ?> smarty实例教程(4) ================================================== example4.php输出: ================================================== 模板中的流程控制 001 第1条新闻 002 第2条新闻 003 第3条新闻 004 第4条新闻 005 第5条新闻 006 第6条新闻 EEEEEE"< ;/table> < /html & gt; {if $ tbcolor = = "#d4d0c8"} & lt; trbcolor = "{$ tbcolor}" & gt; この 1 つの Statement ブロックで各行の背景色を設定します。{assign var="tbColor" value="# D4D0C8"} 例 3 のテンプレートの内部変数を設定する定義方法であることを覚えておいてください。 テンプレートの組み込みフロー制御ステートメントを使用すると、プログラムの制御能力が大幅に向上する場合があります。次の例は友人から質問されました。例 5: 組み込みテンプレートの使用 プロセス制御ステートメントは、複数のセルの内容を 1 行に出力します。つまり、視覚的には複数のセルが出力されます。レコードごとのレコード: ========================= ==================== === example5.tpl ====================== ==================== ====== 複数のレコードを 1 行に出力 marty.section.loop.index % 4 == 0 } t; {$News[loop].newsTitle} {/セクション}
============================================== ===== example5.php ==================================================== require_once ("./public/inc/F117_Smarty.php"); $smarty = new F117_Smarty; $smarty->template_dir = './templates/'; $smarty->compile_dir = './templates_c/'; $smarty->config_dir = './configs/'; $smarty->cache_dir = './cache/'; $smarty->caching = false; $array[]= array("newsID"=>"001", "newsTitle"=>"第1条新闻"); $array[]= array("newsID"=>"002", "newsTitle"=>"第2条新闻"); $array[]= array("newsID"=>"003", "newsTitle"=>"第3条新闻"); $array[]= array("newsID"=>"004", "newsTitle"=>"第4条新闻"); $array[]= array("newsID"=>"005", "newsTitle"=>"第5条新闻"); $array[]= array("newsID"=>"006", "newsTitle"=>"第6条新闻"); $array[]= array("newsID"=>"007", "newsTitle"=>"第7条新闻"); $array[]= array("newsID"=>"008", "newsTitle"=>"第8条新闻"); $smarty->assign("News", $array); $smarty->display("example5.tpl"); ?> ================================================== example5.php输出内容: ================================================== 一行输出多条记录 001 第1条新闻 002 第2条新闻 003 第3条新闻 004 第4条新闻 005 第5条新闻 006 第6条新闻 007 第7条新闻 008 第8条新闻
説明: 最初の行が空白行を出力しないように最適化することもできますが、プログラムを学習する場合は、シンプルにするため、「This is used」から始めます。 セクション} } はループセクションを指します。これについては次のセクションで詳しく説明します。文: {if $smarty.section.loop.index % 4 == 0} $smarty.section.loop は、$smarty のインスタンス内のセクションセクションに、loop と呼ばれる部分があり、index と呼ばれる属性があることを示します。現在のループのインデックス値を表します。 0 から始まり増加します。%4 の後に配置します。0 と比較します。つまり、現在のインデックス値が 4 の倍数の場合、 を出力します。 tr>、そうでない場合は、次の部分を実行します。 プログラムの問題を解決するのは非常に簡単ですが、実装するのは非常に面倒です。
http://www.bkjia.com/PHPjc/317127.html www.bkjia.com 本当
http://www.bkjia.com/PHPjc/317127.html
技術記事 Smarty サンプル チュートリアル (1) 1. Smarty とは何ですか? Smarty は、PHP で書かれたテンプレート PHP テンプレート エンジンです。簡単に言うと、その目的は... です。
声明: この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。