模板引擎smarty工作原理以及使用示例(2)

循环list变量每个量赋值到v里,然后从变量v里面指定要显示的索引,除了循环标记外,它还给我们提供了一些常用的语法标记,例如包含文件,条件判断,我们知道HTML不能包含文件,比如网页头部,但smarty提供了{include}的标记,可以像php一样包含文件,例如{include file="文件路径"} 这个标记格式是固定的,而且这个路径必须在模板引擎指定的路径下,而条件判断的语法和php一样是if条件判断,语法如下

复制代码 代码如下:


{if变量==值或量}
为真时显示的值
{else}
为假是显示的值
{/if}

也可以不写else只有为真时显示的内容,例如常见的一种情况是网页上有一个登陆口登录前显示的是表单登录后显示的是用户信息,假设一个量已经赋值给模板了比如 $username 用户登录这个量就有用户名没有登录这个量就是空的,我们可以这样写

复制代码 代码如下:


{if $username !=""}
欢迎{$username}
{else}
请先登录
{/if}

我们只要在php把这个变量准备好,并赋值给smarty即可除了这些标记外还有的标记自行参考手册,

其次就是变量调节器了,很多时候我们从数据库中得到的数据,都要小小的处理下才输出的,比如日期格式,只显示年月日即可再如输出的内容里的换行要换成<br />才能在页面显示对应的样子,这个时候我们可以使用smarty自带的变量调节器,格式如下

复制代码 代码如下:


{要输出的变量|调节器名:参数}

假如内容部分在显示的时候把所有的换行显示为<br />只需要如下写法

复制代码 代码如下:


{$content|nl2br}

日期的格式化可以用date_format 例如手册上

复制代码 代码如下:


index.php:

$smarty = new Smarty;
$smarty->assign('yesterday', strtotime('-1 day'));
$smarty->display('index.tpl');

index.tpl:

{$smarty.now|date_format}
{$smarty.now|date_format:"%A, %B %e, %Y"}
{$smarty.now|date_format:"%H:%M:%S"}
{$yesterday|date_format}
{$yesterday|date_format:"%A, %B %e, %Y"}
{$yesterday|date_format:"%H:%M:%S"}

OUTPUT:

Feb 6, 2001
Tuesday, February 6, 2001
14:33:00
Feb 5, 2001
Monday, February 5, 2001
14:33:00

实在不行我们可以用php处理好之后再进行赋值。

下面写上配置

复制代码 代码如下:


<?php
define("ROOT",str_replace('\\','https://www.jb51.net/',dirname(__FILE__)).'https://www.jb51.net/');//定义根路径
//加载smarty类
require ROOT.'lib/smarty.class.php';
$samrty = new smarty();//实例化一个smarty类
//配置各种目录
$smarty ->setTemplateDir(ROOT.'templates/')
        ->setCompileDir(ROOT.'templates_c')
        ->setPluginsDir(ROOT.'plugins/')
        ->setCacheDir(ROOT.'cache/')
        ->setConfigDir(ROOT.'configs/');
$smarty->caching = false;//是否开启缓存
$smarty->left_delimiter = '<{';//设置左右 防止和js css 等发生冲突
$smarty->right_delimiter = '}>';
?>

您可能感兴趣的文章:

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/ea108a35ea8a164e6a69320ddbe0ae63.html