smarty实例教程-模板设计篇-2

发表于:2007-05-26来源:作者:点击数: 标签:
这个是接着的。 实例3. ?================================================== ?example3.tpl ?================================================== ? ? 模板中内定的一些函数 ? ??? ??? {assign var="UserName" value="大师兄"} ??? 这里将
这个是接着的。

实例3. ?================================================== ?example3.tpl ?================================================== ? ? 模板中内定的一些函数 ? ??? ??? {assign var="UserName" value="大师兄"} ??? 这里将显示模板内部定义的一个变量:UserName = ??? ??? 下面的这一行将显示3个checkBox:
??? {html_checkboxes name="CheckBox" values=$CheckName checked=$IsChecked output=$value separator="
"} ??? 下面在这一行将显示3个radio:
??? {html_radioes name="RadioBox" values=$RadioName checked=$IsChecked output=$value separator="
"} ??? ??????? ??? 下面显示一个月,日, 年选择框:
??? ?


CopyRight(C) By XiaoJun, Li 2004{mailto address="teacherli@163.clearcase/" target="_blank" >ccom" text="联系作者"} ? ? ====================================================== example3.php ====================================================== ?template_dir = './templates/'; $smarty->compile_dir?= './templates_c/'; $smarty->config_dir? = './configs/'; $smarty->cache_dir??= './cache/'; $smarty->caching???= false; //-------------------------------------------------------------------------------------- //处理{html_checkboxes name="CheckBox" values=$CheckName checked=$IsChecked output=$value separator="
"} //-------------------------------------------------------------------------------------- $smarty->assign('CheckName', array( ?????? 1001 => '语文', ?????? 1002 => '数学', ?????? 1003 => '外语')); $smarty->assign('IsChecked', 1001); //-------------------------------------------------------------------------------------- //处理{html_radioes name="RadioBox" values=$RadioName checked=$IsChecked output=$value separator="
"} //-------------------------------------------------------------------------------------- $smarty->assign('RadioName', array( ?????? 1001 => '语文', ?????? 1002 => '数学', ?????? 1003 => '外语')); $smarty->assign('IsChecked', 1001); //-------------------------------------------------------------------------------------- //不用处理会自动输出 //-------------------------------------------------------------------------------------- ? $smarty->display("example3.tpl"); ?> ====================================================== example3.php输出效果: ====================================================== ? 模板中内定的一些函数 ? ??? {assign var="UserName" value="大师兄"} ??? 这里将显示模板内部定义的一个变量:UserName = 大师兄 ??? ??? 下面的这一行将显示3个checkBox:
??? 语文
??? 数学
??? 外语
??? 下面在这一行将显示3个radio:
??? 语文
??? 数学
??? 外语
??? 下面显示一个月,日, 年选择框:
??? ?? ?
CopyRight(C) By XiaoJun, Li 2004联系作者 例3使用了一些smarty模板中内置的一些函数,相似的函数大家可以在手册中查到,使用方法很简单,大家可以自己去查找. 例4.模板控制(if / elseif / else/ endif ) ======================================================= example4.tpl ======================================================= ?模板中的流程控制 ? ?? ??? {assign var="tbColor" value="#D4D0C8"} 色彩:
{section name=loop loop=$News} {if $tbColor == "#D4D0C8"} ?? ??{assign var="tbColor" value="#EEEEEE"} ?{else $tbColor == "#EEEEEE"} ?? ?? {assign var="tbColor" value="#D4D0C8"} ? ? ? ? ??
? ======================================================= example4.php ======================================================= 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"); ?> ================================================== example4.php输出: ================================================== ?模板中的流程控制 ? ?? ??? ?? ?? ? ? ? ? ?? ?? ? ? ? ? ?? ?? ? ? ? ? ?? ?? ? ? ? ? ?? ?? ? ? ? ? ?? ?? ? ? ? ? ?? ?? ? ? ? ? ?? ?? ? ? ? ? ??
001第1条新闻
002第2条新闻
003第3条新闻
004第4条新闻
005第5条新闻
006第6条新闻
007第7条新闻
008第8条新闻
? 模板文件中使用: ????{if $tbColor == "#D4D0C8"} ?? ??{assign var="tbColor" value="#EEEEEE"} ?{else $tbColor == "#EEEEEE"} ?? ?? {assign var="tbColor" value="#D4D0C8"} ? 这一语句块进行设置每一行的背景颜色, {assign var="tbColor" value="#D4D0C8"}还记的吧,是例3中设置模板内部变量的定义方法, ??? 使用模板内置 的流程控制语句有时可以极大程度上提高程序的控制能力,下面一个例子是phpx.com中曾经有位朋友问过的,我将它作为 ?实例放在这里供大家学习. 例5: 使用模板内置流程控制语句进行一行多单元格内容输出, 也就是在视觉上smarty每记输出几条记录: ================================================ example5.tpl ================================================ ? 一行输出多条记录 ? ??? ????? {section name=loop loop=$News step=1} ????? {if $smarty.section.loop.index % 4 == 0} ???????? ??????? ????? ? ? ???? ??? ??
? ==================================================== example5.php ==================================================== 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条新闻
? ??说明:本来还可以优化,使得第一行不输出一个空行的 ,但是学习程序,简单为好,先就这么用了. 在这里说明一下: ????{section name=loop loop=$News step=1} ????? {if $smarty.section.loop.index % 4 == 0} ???????? ??????? ????? ? ? ???? 指的是一个循环部分,在下一节会有详细的介绍,我们主要来看看这一句: ?? {if $smarty.section.loop.index % 4 == 0} $smarty.section.loop指出$smarty的实例中的section段有一个叫loop的部分, 它有一个属性叫index, 它的表示当前循环的索引值, 从0开始递增, 我们把它%4后与0相比较,也就是说,如果当前的索引值是4的倍数,它就输出一个,否则执行下面的部分, 很简单的就解决了一个在程序上实现起来很麻烦的事情.

原文转自:http://www.ltesting.net