smarty教程
smarty教程包含以下内容:1.下载Smarty文件放到站点中;2. section循环块与foreach循环块;3. foreach 输出一个“二维关联数组”的数据;4. 使用{section}来替代。
1.下载Smarty文件放到站点中
index.php代码如下:
<?php /** * * @version $Id: index.php * @package * @author www.jb51.net * @action 显示实例程序 */ include_once("./Smarty/Smarty.class.php"); //包含smarty类文件
$smarty = new Smarty(); //建立smarty实例对象$smarty $smarty->templates("./templates"); //设置模板目录$smarty->templates_c("./templates_c"); //设置编译目录$smarty->cache("./cache"); //缓存目录$smarty->cache_lifetime = 0; //缓存时间$smarty->caching = true; //缓存方式
$smarty->left_delimiter = "{#"; $smarty->right_delimiter = "#}"; $smarty->assign("name", "zaocha"); //进行模板变量替换$smarty->display("index.htm"); //编译并显示位于./templates下的index.htm模板 ?>
2. section循环块与foreach循环块
section循环块与foreach循环块,本来它应该属于模板部分,但是由于它们是smarty的精华所在,而且与smarty程序设计部分联系非常紧密,所以就在本节单独拿出来讲一下。
foreach:用于循环简单数组,它是一个选择性的section循环,它的定义格式为:
{foreach from=$array item=array_id} {foreachelse} {/foreach}
其中,from 指出要循环的数组变量,item为要循环的变量名称,循环次数由from所指定的数组变量的个数所决定。{foreachelse}用来当程序中传递过来的数组为空时的处理。
3. foreach 输出一个“二维关联数组”的数据
{#foreach item=new from=$news#}
新闻编号:{#$new.id#}
新闻内容:{#$new.title#}
{#foreachelse#}数据库中没有新闻输出!
{#/foreach#}
{foreach from=$newsArray item=newsID}新闻编号:{$newsID}新闻内容:{$newsTitle}{foreachelse}对不起,数据库中没有新闻输出!
{/foreach}
4. 使用{section}来替代
我们把上边的那个例子使用{section}来替代{foreach}来实现现样的功能,注意,在这个例子中我只将tpl模板中的{foreach}用{section}来实现,php程序文件中没有任何改动,同时加了{sectionelse}处理块:
example.tpl模板文件如下:
这里将输出一个数组:
{section name=loop loop=$News} 新闻编号:{$News[loop].newsID} 新闻标题:{$News[loop].newsTitle} {sectionelse} 对不起,没有任何新闻输入! {/section}
5. 这里的{section}块的对于变量的命名方式感觉有些别扭,不过没关系,你只要记住模板变量使用:
$loopName[name].var这种模式就行了,loopName为loop处赋予的变量名,[name]为name处赋予的字符串,.后为为你要在程序数组中设定要与值相对应的下标名称就行了。
最后,推荐我们的管理工具给大家。