天天看点

Smarty入门

??????

Smarty入门

??撘?憪??亥圻璅∠??撘????? PHP 霈曇恣撣?嚗??砍??Smarty ?塚??賭?閫?敺?敺??整???嗅?蝚???銋?銝?靘?憭?嚗?蝣圈?賭??Y1銝?銝???雿??臬???亙?典???? XOOPS ??蝔?摨??嗆???塚?撘?憪?????Smarty ?嗅?撟嗡??整???芾?撠? Smarty ?箇???蝏?憟踝??其??砍??其?撠勗歇蝏??詨?頞喳?鈭???敶??嗅?箇??賣??憟踝????Y??餈??嗅??其?撠曹??冽??鈭???

??????? 餈?蝭???蝡???銝餉??冽??撟園??閬?瘛勗?交?Z悄 Smarty ??雿輻?剁?餈??典??嫣蝙?刻秩??銝剝?賢歇蝏???敺?敺?摰??港???蝚???隞??冽迨??銝?銝?鈭??芸楛雿輻?其???敹?敺?嚗?霈拇?唾?鈭?閫?Smarty ?港?敺??園?刻???亦??????嚗??臭誑隞?銝剖??唬?鈭??舐內??撠勗??銝箄?蝭???蝡?????摰嫣??舫??撣豢楛?伐?隡?雿輻??Smarty ??????隞砍?航?賭?閫?敺?蝞???鈭??嫘??

??????? ?桀???祆??撌脩?蝚砌?甈∩耨霈V?嚗??祆?喳???銝?鈭???餈??伐?銝?餈?蝣?鈭??園?渡???喟頂嚗?敺?憭? Smarty ??餈??嗆??撌抒???撟嗆瓷????蝛嗅?敺???敶鳴???隞乩?銝??X?踹?箸?亦?啁?潘?雿?蝚????訾縑餈?蝭???蝡?摨?霂亥?賢?皛∟雲憭批??唳?喳郎銋? Smarty ????摮西??鈭???敶??嗆?祆????靚祈秤???唳?嫣?甈Z????伐?蝚???隡??其?銝?甈∠??靽株恥銝剜?湔迤????

Smarty隞?蝏?

隞?銋??舀芋??撘???

銝??仿??隞?隞?銋??嗅??撘?憪?嚗???鈭箏?憪?撖?HTML ??撋???Server Script 閫?敺?銝?憭芣說?????嗉??銝?霈箸?臬凝頧舐?? ASP ???臬??暹????? PHP嚗??賣?臬?鈭???撋? Server Script ??蝵?憿萎撩??蝡航祗閮?????甇支?撠望??鈭箸?喳?堆?憒????賣??蝔?摨?摨??券?餉? (??蝘啣??銝?摨??券?餉?) 銝?蝵?憿萄????(Layout) ?餉???蝳餌??霂?嚗??臭??臭?瘥?颲?憟賢?g?

?嗅?餈?銝芷?桅??拙停摮??典歇銋?嚗?隞?鈭支?撘?蝵?憿萄?憪?憌?銵??塚?銝?霈箸??ASP ????PHP ??雿輻?刻???賣?航澈?潛?摨?撘?????銝?閫?閫?霈曇恣撣?銝斤?頨思遢???舀?舫??撣貉?鈭?雿輻?刻??銝??舐?摨?撘箏停?舐?撌亙撩嚗?憒???閬?銝方?????嗅?潮▽嚗????臬?甇餅??銝?撠???蝏???...

??隞交芋??撘???撠勗?餈??????佗?璅∠??撘??????桃??嚗?撠望?航?颲曉?唬?餈唳???啁???餉???蝳餌?????賬??摰??質悟蝔?摨?撘?????銝?瘜其?韏??????批?嗆???臬???賜??颲暹??嚗???閫?閫?霈曇恣撣????臭?瘜其?蝵?憿菜????嚗?霈拍?憿萇??韏瑟?交?游?瑟??銝?銝???嚗???甇斗芋??撘???敺??????砍?貊??蝵?蝡?撘????a??雿輻?剁?雿踵?銝芯犖?質?賢???亙?嗡??選?

撠梁????亥圻餈???璅∠??撘????亥秩嚗?靘?韏??????唳?孵?憭扳?????嚗????剝??蝔?摨?憭?????璅∠??撘?????摰??函?望芋???祈澈?芾??喳???璅∠??撘???銝斤?敶W???

?券???剝??蝔?摨?憭?????璅∠??撘???銝哨?蝔?摨?撘?????敹?憿餉?韐?韐??????????圈?餉?嚗?銋?撠望?航秩隞?敹?憿餅??????????摰孵?刻??箏?唳芋??????憭???憟踝????賢?? assign ??撌乩????W?亥?霂湛?蝔?摨?撘?????餈??臬?憭???銝?鈭?蝔?摨??亙?喳????????啁??憌?鞎?????摰??函?望芋???祈澈?芾??喳???璅∠??撘???嚗?摰???霈詨?????湔??assign ?唳芋??銝哨?霈抵?閫?霈曇恣撣??刻挽霈⊥芋???嗅???喳?????閬?憒?雿????啜????甇文?撠勗?航?賭????虫?憟?撅?鈭??芸楛??璅∠??蝔?摨?霂剜? (憒? Smarty) 嚗?隞交?嫣噶?批?嗅?????????啜??雿?餈??瑚??伐?閫?閫?霈曇恣撣?銋?敺?摮虫?憒?雿?雿輻?冽芋??霂剛???

璅∠??撘?????餈?雿?????嚗?擐?????隞砍??????隞乩???餈?銵??橘?

?

Smarty入门

銝??祉??璅∠??撘??? (憒? PHPLib) ?賣?臬?典遣蝡?璅∠??撖寡情?嗅??敺?閬?閫?????璅∠??嚗??嗅????????憟??亙??嚗???餈? parse() 餈?銝芣?寞??亥圾??璅∠??嚗???????撠?蝵?憿菔??箝??

Smarty入门

撖?Smarty ??雿輻?刻???亥秩嚗?蝔?摨???銋?銝???閬???隞颱? parse ???其?鈭?嚗?餈?鈭? Smarty ?芸?其?撣格??隞砍??????銝?撌脩?蝻?霂?餈???蝵?憿蛛?憒???璅∠??瘝⊥?????函??霂?嚗? Smarty 撠梯?芸?刻歲餈?蝻?霂????其?嚗??湔?交?扯?蝻?霂?餈???蝵?憿蛛?隞亥????蝻?霂????園?氬??

雿輻?沒marty??銝?鈭?璁?敹??其??祆芋??撘???銝哨???隞砍虜???啣?箏????閫?敹蛛???靚??箏??憭扳??賭??踵??餈??瘀?

<!-- START : Block name -->

?箏????摰?<!-- END : Block name -->

餈?鈭??箏??憭折?其遢?賭???PHP 蝔?摨?銝凋誑 if ?? for, while ?交?批?嗅?隞祉???曄內?嗆??嚗??賜?嗆芋????韏瑟?亦?瘣?憭?鈭?嚗?雿??芾?銝??V??曄內?孵?銝?????璅∠??嚗? PHP 蝔?摨??踹?閬????嫣?甈∴?

??Smarty 銝哨?銝???隞亙????銝箔蜓嚗??????????圈?餉??質悟璅∠???芾??批?嗚????銝?Smarty 隡????芸楛??璅∠??霂剛?嚗???隞乩?蝞⊥?臬?箏???臬?西??曄內餈??航???憭?嚗??賣?舐??Smarty ??璅∠??霂剜? (if, foreach, section) ?剝????????摰嫣????啜??餈??瑚??交??閫?銝?憟質情璅∠????敺????孵???嚗?雿?憟賢??臬?芾?閫???敺?敶?嚗? PHP 蝔?摨?銝?銵??賭?敹??嫘??

?曹??Y??霂湔??嚗???隞砍?臭誑?仿??雿輻?沒marty 閬????∩?銝芸????嚗?撠?蝔?摨?摨??券?餉?銝?蝵?憿萄???圈?餉???蝖桀?啣??蝳颯??撠望?航秩 PHP 蝔?摨???銝?閬???憭芸??? HTML ????蝔?摨?銝剖?芾??喳?憟賡???????閬?憛??唳芋????嚗?霈拇芋???芸楛?喳?霂亙?雿????啗?鈭????? (???喃??箇?唬?銵?) ??

Smarty???箇?

摰?鋆?Smarty

擐???嚗???隞砍???喳?蝔?摨??曄蔭??雿?蝵柴??

Windows銝??航?賭?蝐颱撮餈??瑞??雿?蝵殷??? d:/appserv/web/demo/ ????

Linux銝??航?賭?蝐颱撮餈??瑞??雿?蝵殷??? /home/jaceju/public_html/ ????

?訕marty??摰??寧?蝡?銝?頧賣???啁??Smarty憟?隞塚?http://smarty.php.net??

閫?? Smarty 2.6.0 ??嚗?隡????啣?憭?獢??嚗??嗡葉??銝?libs 韏???憭嫘????libs 銝剖?霂乩??? 3 銝?class.php 瑼? + 1 銝?debug.tpl + 1 銝?plugin 韏???憭?+ 1 銝?core 韏???憭嫘???嗅???湔?亙? libs 憭??嗅?唳?函??蝔?摨?銝餉???憭嫣?嚗????游??銝?class 撠勗?臭誑鈭???撠梯??瘀?瘝⊿??嚗?餈?蝘?摰?鋆?瘜?瘥?颲?蝞???嚗?????銝??祆瓷???芸楛銝餅?箇??雿輻?刻????

?喃? Smarty 摰??寞????銝凋蛹隞?銋?閬?隞?蝏?銝?鈭?瘥?颲?憭?????摰?鋆??孵??g??箸?砌?靘??批??寧???孵?摰?鋆?嚗??臭誑?芸?其蜓?箏?鋆?銝?甈∴??嗅????靘?蝏?霂乩蜓?箔?????霈曇恣??撘???銝???蝔?摨??嗥?湔?亙??剁???銝?隡???憭?摰?鋆?憭芸??? Smarty 憭??研????蝚???????靘????孵????舫????閬???蝔?摨?撣西??亦宏餈??餌??蝔?摨?撘?????雿輻?剁?餈??瑚??函?行?潔蜓?箸??瘝⊥??摰?鋆? Smarty ??

蝔?摨???韏???憭寡挽摰?

隞亦????汾indows摰?鋆?Appserv銝箔?嚗?蝔?摨???銝餉???憭寞?胯??d:/appserv/web/demo/????摰?鋆?憟磅marty??嚗???隞砍?其蜓韏???憭嫣???撱箇?餈??瑞??韏???憭對?

?

Smarty入门

??Linux 摨?銝?嚗?霂瑁扇敺?撠? templates_c ?????????港蛹 777 ??Windows 銝???撠??嗅?芾粉??瘨???

蝚砌?銝芰?沒marty????撠?蝔?摨?

??隞砍??霈曉? Smarty ??頝臬?嚗?霂瑕?隞乩?餈?銝芣﹝獢??賢??銝?main.php 嚗?撟嗆?曄蔭?唬蜓韏???憭嫣?嚗?

main.php:

<?php

include "class/Smarty.class.php";

define('__SITE_ROOT', 'd:/appserv/web/demo'); // ????瘝⊥????蝥?$tpl = new Smarty();

$tpl->template_dir = __SITE_ROOT . "/templates/";

$tpl->compile_dir = __SITE_ROOT . "/templates_c/";

$tpl->config_dir = __SITE_ROOT . "/configs/";

$tpl->cache_dir = __SITE_ROOT . "/cache/";

$tpl->left_delimiter = '<{';

$tpl->right_delimiter = '}>';

?>

?找??X?孵?霈曉????冽???其?嚗?蝔?摨?憒???閬?蝘餅??啣?嗅??唳?對??芾???__SITE_ROOT 撠勗?臭誑?艾?? (餈????臬???? XOOPS ?? )

Smarty ??璅∠??頝臬?霈曉?憟賢??嚗?蝔?摨?隡?靘??扯?銝芾楝敺??交??????璅∠?????詨笆雿?蝵?(??靘?銝剜??'d:/appserv/web/demo/templates/' ) ???嗅????隞祉??display() 餈?銝?Smarty ?寞??交?曄內??隞祉??璅∠????

?乩??交??隞砍??templates 韏???憭嫣??曄蔭銝?銝?test.htm嚗?(?拙????思?銋??賣????靚?嚗?雿?靘蹂?閫?閫?霈曇恣撣?撘???嚗?蝚????質??臭誑 .htm 銝箔蜓??)

templates/test.htm:

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=big5">

<title><{$title}></title>

</head>

<body>

<{$content}>

</body>

</html>

?啣?冽??隞祈?撠?銝??Y??璅∠???曄內?箸?伐?撟嗅?蝵?憿菜??憸? ($title) 銝???摰?($content) ?湔?g?霂瑕?隞乩?獢????摰孵?賢??銝?test.php 嚗?撟嗆?曄蔭?其蜓韏???憭嫣?嚗?

test.php:

<?php

require "main.php";

$tpl->assign("title", "瘚?霂??函??蝵?憿菜??憸?");

$tpl->assign("content", "瘚?霂??函??蝵?憿萄??摰?);

// 銝??V舅銵?銋??臭誑?刻?銵?隞???// $tpl->assign(array("title" => "瘚?霂??函??蝵?憿菜??憸?", "content" => "瘚?霂??函??蝵?憿萄??摰?));

$tpl->display('test.htm');

?>

霂瑟??撘?瘚?閫??剁?颲???http://localhost/demo/test.php 霂?霂???(靘??函???臬??喳?蝵???)嚗?摨?霂乩????唬誑銝????駁?g?

Smarty入门

????templates_c 摨?銝?嚗???隞砌????唬?銝芸??芰??韏???憭?(%%179) 嚗????寥??銝??颱??臭?銝芸??芰??韏???憭?(%%1798044067) 嚗????嗡葉??銝?銝芣﹝獢?嚗?

templates_c/%%179/%%1798044067/test.htm.php:

<?php ?>

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=big5">

<title><?php echo $this->_tpl_vars['title']; ?></title>

</head>

<body>

<?php echo $this->_tpl_vars['content']; ?>

</body>

</html>

瘝⊿??嚗?餈?撠望??Smarty 蝻?霂?餈???獢????摰?撠???隞砍?冽芋??銝剔??????頧祆?X??鈭? PHP ??霂剜??交?扯?嚗?銝?甈∪??霂餃?????瑞????摰寞?塚? Smarty 撠曹??湔?交????餈?銝芣﹝獢??交?扯?鈭???

??????隞祆?渡??銝?銝??港葵 Smarty 蝔?摨??啣??甇仿炊嚗?

Step 1. ??頧?Smarty 璅∠??撘?????

Step 2. 撱箇? Smarty 撖寡情??

Step 3. 霈曉? Smarty 撖寡情?????啜??

Step 4. ?函?摨?銝剖?????????嚗?????Smarty ?? assign ?寞?撠?????蝵桀?交芋??????

Step 5. ?拍??Smarty ?? display ?寞?撠?蝵?憿萇??箝??

憒?雿?摰???雿???蝔?摨??嗆??

銝??X??隞祉???圈?支? Smarty ????閬???韏???憭孵? (class ?? configs ?? templates ?? templates_c) 嚗?餈???銝支葵韏???憭對? includes ?? modules ???嗅?餈??舐???璅∩遛 XOOPS ???嗆????撱箇??箸?亦??嚗???銝?XOOPS ?舐??????亥圻?啁??蝔?摨?銝哨?撠??唬蝙??Smarty 璅∠??撘??????嗥?蝔?摨?????靚?镼輻????憭扯器嚗?蝚???餈??瑞??蝔?摨??嗆???賣瓷?? XOOPS ???曉??銋?銝?撘綽?雿??喳?蝏?鈭箇???嗉??? XOOPS ???啜??

includes 餈?銝芾???憭嫣蜓閬??舐?冽?交?曄蔭銝?鈭? function ?? sql 瑼?嚗?餈??瑕??main.php 撠勗?臭誑撠?摰?隞砍??乩?嚗?憒?銝?嚗?

main.php:

<?php

include "class/Smarty.class.php";

define('__SITE_ROOT', 'd:/appserv/web/demo'); // ????瘝⊥????蝥?// 隞?main.php ??雿?蝵桐蛹?箏??

require_once "includes/functions.php";

require_once "includes/include.php";

$tpl = new Smarty();

$tpl->template_dir = __SITE_ROOT . "/templates/";

$tpl->compile_dir = __SITE_ROOT . "/templates_c/";

$tpl->config_dir = __SITE_ROOT . "/configs/";

$tpl->cache_dir = __SITE_ROOT . "/cache/";

$tpl->left_delimiter = '<{';

$tpl->right_delimiter = '}>';

?>

modules 餈?銝芾???憭孵???舐?冽?交?曄蔭蝔?摨?璅∪????嚗?憒?甇支??乩噶銝?隡???蝔?摨?銝W??啣??賣?荔??港??嗆??銝??桐??嗚??

銝??X??隞砌?????main.php 嚗?餈??舀?港葵蝔?摨???銝餉??詨?嚗?銝?霈箸?臬虜?啣?銋???憭??函?摨???頧賬???曹澈????撱箇?蝑?嚗??賣?臬?刻???撘?憪???????隞乩?????璅∪???賢?芾?撠?餈?銝芣﹝獢????怨??亙停?臭誑?艾????甇文?函?摨?瘚?蝔?閫??????湛?撠勗?憿餃末憟賣???? main.php 銝剖?霂亥??暸???銝?镼選?敶??嗅?拍??include ?? require ??隞歹???瘥?銝芰?航??皜?璆???蝳餅?臬??憟賭?餈?鈭???

?

Smarty入门

?其??????啁?? Smarty 蝔?摨? 5 甇仿炊嚗? main.php 撠曹?撣格??隞砍??撠??? 3 銝芣郊撉文??憟踝????Y??璅∪??蝔?摨??芾??????V舅銝芣郊撉文停?臭誑鈭???

隞?????撘?憪?

憒?雿?雿輻?典????

隞?銝?銝?蝡???靘?銝哨???隞砍?臭誑皜?璆??啁???唳??隞砍?拍??<{ ?? }> 餈?銝支葵??蝷箇泵?瑕???????韏瑟?乓??憸?霈曄????蝷箇泵?瑚蛹 { ?? } 嚗?雿?銝箔?銝剜???脩???? Javascript ???喟頂嚗???甇斤???餈??舀芋隞?XOOPS 嚗?撠???蝷箇泵?瑟?X???????????賢???孵??? PHP ???????賢???孵??臭?璅∩??瑞??嚗????V???銝?$ 摮???(餈???銝??祉??璅∠??撘???銝???)????蝷箇泵?瑕停???孵????PHP 銝剔?? <?php ?? ?> (鈭?摰?銝?摰?隞祉??蝖桐?鋡急?踵?X??餈?銝? 嚗???隞乩誑銝???璅∠????????瘜??賣?臬?航???嚗?

1. <{$var}>

2. <{ $var }> <!-- ??????銋??湔??蝛箸??-->

3. <{$var

}> <!-- ?臬?????蝷箇泵?瑕??蝏???????蝷箇泵?瑚??典??銝?銵? -->

??Smarty ??嚗?????憸?霈暹?臬?典????嚗?銋?撠望?航秩雿??芾???摰?銝?甈∪停憟賭?????摰?銝斗活隞乩???霂?嚗???????摰嫣?隞交??????摰???銝箔蜓??撠梁???隞砍?其蜓璅∠??銝剖??頧賭?憭??函??摮?璅∠??嚗?摮?璅∠??銝剖???瑞??????銝??瑚?隡?鋡急?蹂誨嚗?餈??瑟??隞砍停銝??典????撖孵?璅∠??????銝?甈∟圾?????其???

????PHP 蝔?摨?銝哨???隞祉??Smarty ?? assign ?亙?????蝵格?曉?唳芋??銝准?? assign ???冽?摰??寞????銝剖歇蝏???敺?敺?憭?鈭?嚗??冽?撠勗???銝?銝???????靘???蝷箝??銝?餈??券??憭??箏???塚???隞砍停敹?憿餃???????銝?鈭???????嚗????賢????? assign ?唳芋??銝哨?餈??其?銝?蝡???????

靽桅弘雿???????

銝??X??隞祆????Smarty ???????啁??憌?鞎??舐?望芋???芾??喳???嚗???隞?Smarty ??靘?鈭?霈詨?靽桅弘???????賢???雿輻?函???寞?憒?銝?嚗?

<{????|靽桅弘?賢?}> <!-- 敶?靽桅弘?賢?瘝⊥?????唳??-->

<{????|靽桅弘?賢?:"??????敹?閬?嚗?閫??賢???摰?)"}> <!-- 敶?靽桅弘?賢??????唳??-->

??靘?憒?銝?嚗?

<{$var|nl2br}> <!-- 撠?????銝剔???Z?摮?蝚行?X?? <br /> -->

<{$var|string_format:"%02d"}> <!-- 撠??????澆??? -->

憟踝???蛹隞?銋?閬?霈拇芋???芾??喳????????啁??憌?鞎?嚗???????摨?銝??? HTML 嚗?餈??舀??銝芾揚?抵膠蝏?撣????其遢?駁?U??

<input name="total" type="hidden" value="21000" />

?駁??憸?嚗?21,000 ??

銝??祆芋??撘?????璅∠???航?賭?餈??瑕??嚗?

<input name="total" type="hidden" value="{total}" />

?駁??憸?嚗?{format_total} ??

摰?隞祉?? PHP 蝔?摨?銝剛?餈??瑕??嚗?

<?php

$total = 21000;

$tpl->assign("total", $total);

$tpl->assign("format_total", number_format($total));

?>

?? Smarty ??璅∠??撠勗?臭誑餈??瑕??嚗? (number_format 靽桅弘?賢?霂瑕?訕marty 摰??寧?憿萎?頧?

<input name="total" type="hidden" value="<{$total}>" />

?駁??憸?嚗?<{$total|number_format:""}> ??

Smarty ?? PHP 蝔?摨?銝剖?芾?餈??瑕??嚗?

<?php

$total = 21000;

$tpl->assign("total", $total);

?>

??隞亙??Smarty 銝剜??隞砍?芾???摰?銝?甈∪????嚗??拐???鈭斤?璅∠???芾??喳??喳?胯??餈??瑚?閫????嚗?餈?撠望?航悟璅∠???芾??喳????????圈?鞎???憟賢?嚗?

?批?嗆芋??????摰?

??憭????箏??

??Smarty ?瑟?蹂葉嚗???隞祈???憭?銝?銝芸?箏????銝斤??孵?嚗? foreach ?? section ?????函?摨?銝剜??隞砍??閬? assign 銝?銝芣?啁?嚗?餈?銝芣?啁?銝剖?臭誑???急?啁??啁???撠勗??銝??Z?銝芯?摮?嚗?

擐?????隞祆?亦?? PHP 蝔?摨??臬?雿?????嚗?

test2.php:

<?php

require "main.php";

$array1 = array(1 => "?寞??", 2 => "????", 3 => "擐???", 4 => "?凋?");

$tpl->assign("array1", $array1);

$array2 = array(

array("index1" => "data1-1", "index2" => "data1-2", "index3" => "data1-3"),

array("index1" => "data2-1", "index2" => "data2-2", "index3" => "data2-3"),

array("index1" => "data3-1", "index2" => "data3-2", "index3" => "data3-3"),

array("index1" => "data4-1", "index2" => "data4-2", "index3" => "data4-3"),

array("index1" => "data5-1", "index2" => "data5-2", "index3" => "data5-3"));

$tpl->assign("array2", $array2);

$tpl->display("test2.htm");

?>

??璅∠??????瘜?憒?銝?嚗?

templates/test2.htm:

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=big5">

<title>瘚?霂???憭??箏??</title>

</head>

<body>

<pre>

?拍??foreach ?亙????array1

<{foreach item=item1 from=$array1}>

<{$item1}>

<{/foreach}>

?拍??section ?亙????array1

<{section name=sec1 loop=$array1}>

<{$array1[sec1]}>

<{/section}>

?拍??foreach ?亙????array2

<{foreach item=index2 from=$array2}>

<{foreach key=key2 item=item2 from=$index2}>

<{$key2}>: <{$item2}>

<{/foreach}>

<{/foreach}>

?拍??section ?亙????array1

<{section name=sec2 loop=$array2}>

index1: <{$array2[sec2].index1}>

index2: <{$array2[sec2].index2}>

index3: <{$array2[sec2].index3}>

<{/section}>

</pre>

</body>

</html>

?扯?銝?靘???嚗???隞砍???唬?蝞⊥??foreach ?? section 銝支葵?扯?蝏????臭??瑞???????銝方???啣???雿?銝????g?

蝚砌?銝芸榆?怠????橘?撠望?病oreach 閬?隞亙楷?嗅??????孵??亙???唳??隞祆?? assign ??銝文??啁?????嚗??? section ??隞乓??銝餅?啁?[敺芰?臬??蝘財.摮??啁?蝝W????喳?臬??港葵?啁????啣?箸?乓???望迨?舐?伐? Smarty ?冽芋??銝剔?? foreach ?? PHP 銝剔?? foreach ?臭??瑞??嚗??? section ????Smarty 銝箔?憭???憒?銝??????啁?????????撅??箸?亦????餈啜??敶???section ?????質?銝??芸?甇歹??支?銝?銝?????靚??啁??撌Y?嗉??????啣?嚗?摰??寞????銝凋???靘?鈭?憟賢??銝?section ??摨??刻??靘???

銝?餈?閬?瘜冽?????荔?銝Y? section ???啁?蝝W?敹?憿餅?臭? 0 撘?憪???甇??湔?堆???0, 1, 2, 3, ...??憒????函???啁?蝝W?銝??臭? 0 撘?憪???甇??湔?堆????撠勗??寧??foreach ?亙???唳?函??韏??????典?臭誑????摰??寡悄霈箏?箔葉??甇斤?霈刻捏嚗??嗡葉?Z悄鈭? section ?? foreach ???冽???

撌Y?嗉?????????

璅∠??撘???????隞支犖隡方??蝑???憭扳?撠望?臬楷?嗉????????啣?改?霈詨???????璅∠??撘????賭??寞??撘箄?餈??對?銝?餈?餈?撖?Smarty ?亥秩?湔?臬??輻???

??撣貉??啁??撌Y?嗉???嚗?撠梁?霈箄?蝔?摨?銝剔??霈刻捏銝駁??箏?扼????霈曇????啁??蝏???憒?銝?嚗?

?砍????

蝡??∪?砍??

??摮虫???

憟賭髡隞?蝏?

憟????梯?

霈∠??箔???

蝖砌辣憭???

頧臭辣霈刻捏

蝔?摨?銝剜??隞砍??隞仿????韏???銝箔?嚗?

test3.php:

<?php

require "main.php";

$forum = array(

array("category_id" => 1, "category_name" => "?砍????,

"topic" => array(

array("topic_id" => 1, "topic_name" => "蝡??∪?砍??")

)

),

array("category_id" => 2, "category_name" => "??摮虫???,

"topic" => array(

array("topic_id" => 2, "topic_name" => "憟賭髡隞?蝏?"),

array("topic_id" => 3, "topic_name" => "憟????梯?")

)

),

array("category_id" => 3, "category_name" => "霈∠??箔???,

"topic" => array(

array("topic_id" => 4, "topic_name" => "蝖砌辣憭???),

array("topic_id" => 5, "topic_name" => "頧臭辣霈刻捏")

)

)

);

$tpl->assign("forum", $forum);

$tpl->display("test3.htm");

?>

璅∠??????瘜?憒?銝?嚗?

templates/test3.htm:

<html>

<head>

<title>撌Y?嗅儐?舀?霂?</title>

</head>

<body>

<table width="200" align="center" cellpadding="3" cellspacing="0">

<{section name=sec1 loop=$forum}>

<tr>

<td colspan="2"><{$forum[sec1].category_name}></td>

</tr>

<{section name=sec2 loop=$forum[sec1].topic}>

<tr>

<td width="25">&nbsp;</td>

<td width="164"><{$forum[sec1].topic[sec2].topic_name}></td>

</tr>

<{/section}>

<{/section}>

</table>

</body>

</html>

?扯???蝏???撠勗??蝚???銝曄??靘?摮?銝??瑯??

??甇文?g??函?摨?銝剜??隞砍?芾??喳??瘜?????閬???憭??潔?撅?銝?撅???憛??唳?啁?銝哨????拍??<{蝚砌?撅??啁?[敺芰??].蝚砌?撅??啁?[敺芰??].蝚砌?撅??啁?[敺芰??]. ... .?啁?蝝W?}> 餈??瑞???孵??交?曄內瘥?銝?銝芸楷?嗅儐?臭葉???潦???喃??其?銋??寞??g?銝?銝???雿輻?冽?唳?桀??嗆??隞砍??????

頧祆?X?唳?桀?銝剔??韏???

銝??X???啣?雿??曄內撌Y?嗅儐?荔???摰???銝?摨??冽?嗆??隞祉??韏????航?賣?臭??唳?桀?銝剜?????箸?亦??嚗???隞交??隞砍停敺??喳??瘜????唳?桀???韏???????銝?餈啁??憭????啁???敶W???餈???蝚????其?銝?DB 蝐餃?急?交?????唳?桀?銝剔??韏???嚗??典?臭誑?芾??冽?典??甈Y???寞???

??隞砍?芯耨??PHP 蝔?摨?嚗?璅∠??餈??臭??a??葵 (餈?撠望?舀芋??撘?????憟賢?~)嚗??嗡葉 $db 餈?銝芸笆鞊∪??霈曉歇蝏???main.php 銝剖遣蝡?憟賭?嚗???銝????箸?亦??韏???撠望?臭??Y??靘?摮???

test3.php:

<?php

require "main.php";

// ??撱箇?蝚砌?撅??啁?

$category = array();

$db->setSQL($SQL1, 'CATEGORY');

if (!$db->query('CATEGORY')) die($db->error());

// ????蝚砌?撅?敺芰?舐??韏???

while ($item_category = $db->fetchAssoc('CATEGORY'))

{

// 撱箇?蝚砌?撅??啁?

$topic = array();

$db->setSQL(sprintf($SQL2, $item_category['category_id']), 'TOPIC');

if (!$db->query('TOPIC')) die($db->error());

// ????蝚砌?撅?敺芰?舐??韏???

while ($item_topic = $db->fetchAssoc('TOPIC'))

{

// ?????????唳?格?典?亦洵鈭?撅??啁?銝?array_push($topic, $item_topic);

}

// ??蝚砌?撅??啁???摰?銝箇洵銝?撅??啁??????????唳?桐葉??銝?銝芣????

$item_category['topic'] = $topic;

// ??蝚砌?撅??唳?格?典?亦洵銝?撅??啁?銝?array_push($category, $item_category);

}

$tpl->assign("forum", $category);

$tpl->display("test3.htm");

?>

?冽?唳?桀?????銝?蝚?韏?????嚗???隞砍??啁???臭?銝芸???怨砲蝚??唳?桃???啁?????餈? while ??餈啣?? array_push ?賢?嚗???隞砍??唳?桀?銝剔??韏???銝?蝚?銝?蝚?憛??唳?啁?????憒????典?芰?典?啣??撅?敺芰?荔?撠望??蝚砌?撅?敺芰??(蝥Z?脩???其遢) ?餅???喳?胯??

?喳???摰寞?臬?行?曄內

閬??喳??臬?行?曄內??摰對???隞砍?臭誑雿輻??if 餈?銝芾祗瘜??亙?????押??靘?憒?憒???雿輻?刻??撌脩??餃?亦??霂?嚗???隞祉??璅∠??撠勗?臭誑餈??瑕??嚗?

<{if $is_login == true}>

?曄內雿輻?刻????雿?????

<{else}>

?曄內颲??亙??瑕??撖?????蝒?雿?

<{/if}>

閬?瘜冽?????荔???==???瑚舅颲嫣?摰?閬??????喳?銝?銝芰征?潛泵嚗??血?? Smarty 隡???瘜?閫?????

if 霂剜?銝??祉??摨??典?臭誑???批??嫣蝙?刻秩??嚗???隞亦????刻???撠曹?霂血??隞?蝏?鈭???銝?餈?蝚??????唬?銝?銝芣??頞???摨??剁?撣詨虜隡????啁?摨???閬?鈭抒??餈??瑞??銝?銝芾”?潘? (?啣?隞?”???航???????憿箏?)

1 2

3 4

5 6

7 8

餈?銝芰???蝘唬?銝箝??璅芸????憭?銵冽?潦????摰????寡?脣??隡?蝏???蝥萄????憭?銝???嚗?????????隞祉???啁????憭?銵冽?潮?賣?臭?銝???銝?嚗?銝????芣??銝?蝚?韏???????璅芸????憭?銵冽?澆???臭誑璅芸???啣?其???銝凋漣?? n 蝚?韏?????嚗????V?銝???嚗??游?唳?港葵敺芰?舐?????閬?颲曉?啗??瑞?????踝???蝞??????孵??芷??閬? section ?? if ?剝???喳?胯??

??隞祆?亦????銝??Z?銝芯?摮?嚗?

test4.php:

<?php

require "main.php";

$my_array = array(

array("value" => "0"),

array("value" => "1"),

array("value" => "2"),

array("value" => "3"),

array("value" => "4"),

array("value" => "5"),

array("value" => "6"),

array("value" => "7"),

array("value" => "8"),

array("value" => "9"));

$tpl->assign("my_array", $my_array);

$tpl->display('test4.htm');

?>

璅∠??????瘜?憒?銝?嚗?

templates/test4.htm:

<html>

<head>

<title>璅芸????憭?銵冽?潭?霂?</title>

</head>

<body>

<table width="500" cellspacing="0" cellpadding="3">

<tr>

<{section name=sec1 loop=$my_array}>

<td><{$my_array[sec1].value}></td>

<{if $smarty.section.sec1.rownum is div by 2}>

</tr>

<tr>

<{/if}>

<{/section}>

</tr>

</table>

</body>

</html>

???孵?其? $smarty.section.sec1.rownum 餈?銝?Smarty ????嚗???section 敺芰?臭葉餈?銝芸????隡???敺?隞? 1 撘?憪???蝝W??潘???隞亙? rownum ?質◤ 2 ?文偷?塚?撠梯???</tr><tr> 雿輯”?潭?W?? (瘜冽??嚗???</tr> ?典????lt;tr> ?典???? ????甇斗?啣? 2 撠望?舀??隞砍?其???銝剜?唾????啁??韏???蝚??啜????雿??臭誑?望迨?餃?????嗅?銝????????唳?孵???

??頧賢??典??摰?

??隞砍?臭誑?冽芋??????頧?PHP 蝔?摨?隞??????臬?虫?銝芸?璅∠??嚗????急?臭蝙??include_php ?? include 餈?銝支葵 Smarty 璅∠??霂剜?嚗? include_php 蝚???颲?撠??剁?雿輻?冽?孵??臭誑?亥砭摰??寞????嚗?餈???銝?????餈啜??

?其蝙??include ?塚???隞砍?臭誑憸?????頧賢?璅∠??嚗????臬?冽????頧賢?璅∠????憸?????頧賡??撣訾蝙?典?冽???勗??????隞嗆??憭游??????摰???嚗????冽????頧賢???臭誑?典?函?銝???獢??園△嚗???餈?銝?甇亥噢?啣? Winamp ?砍?舀??Skin ??敶??嗉?銝斤???隞砌??臭誑瘛瑞?剁?閫??嗅?菔??摰???

??隞祆?亦????銝??Z?銝芯?摮?嚗?

test5.php:

<?php

require "main.php";

$tpl->assign("title", "Include 瘚?霂?");

$tpl->assign("content", "餈??舀芋?? 2 銝剔??????");

$tpl->assign("dyn_page", "test5_3.htm");

$tpl->display('test5_1.htm');

?>

璅∠?? 1 ????瘜?憒?銝?嚗?

templates/test5_1.htm:

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=big5">

<title><{$title}></title>

</head>

<body>

<{include file="test5_2.htm"}><br />

<{include file=$dyn_page}>

<{include file="test5_4.htm" custom_var="?芾恥????????摰?}>

</body>

</html>

璅∠?? 2 ????瘜?憒?銝?嚗?

templates/test5_2.htm:

<{$content}>

璅∠?? 3 ????瘜?憒?銝?嚗?

templates/test5_3.htm:

餈??舀芋?? 3 ????摰?

璅∠?? 4 ????瘜?憒?銝?嚗?

templates/test5_4.htm:

<{$custom_var}>

餈???瘜冽????銝芷???對?1. 璅∠????雿?蝵桅?賣?臭誑????摰?銋??? template_dir 銝箏?箏??嚗?2. ???? include 餈??亦??摮?璅∠??銝哨??嗅????銋?隡?鋡怨圾霂???嚗?3. include 銝剖?臭誑?具????????蝘???????摰嫘???交??摰?撘??怨??亦??璅∠??銝剜?????怎??????嚗?憒???銝??X芋?? 4 ????瘜???