• Smarty基础用法


    一、Smarty基础用法:
    1、基础用法如下
    
    include './smarty/Smarty.class.php';//引入smarty类
    $smarty = new Smarty();//实例化smarty
    $smarty->template_dir = './dir';//设置默认模板路径(当前如果有模版,优先找当前目录,没有再找定义的目录)
    
    $smarty->left_delimiter = '<{'; //设置边界符
    $smarty->right_delimiter = '}>';//设置边界符
    $smarty->caching = true;//开启缓存
    $smarty->cache_lifetime = 120; //缓存生命周期(秒)
    
    $t = '北京真TM好';
    
    //注:assign 可以传递所有数据类型(资源除外)
    //然后在模板中单一型变量可以直接{$t}
    //数组{$t['name']}或{$t.name}
    //对象{$t->name}或其方法{$t->test()}
    $smarty->assign('t',$t);//传参到模板
    
    $smarty->display('2.html');//渲染(展示模板)
    
    2、smarty中的系统变量
    其中一些如下:
    $smarty.now ,被解析成 time();
    $smarty.get.key ---> $_GET[key]
    $smarty.const.常量---> echo 常量名
    
    3、从配置文件得到的变量
    例:x x x .conf
    配置项1=值1
    配置项2=值2
    配置文件的载入
    {Config_load file="x x x .conf"}
    引用配置选项的值
    建议用后者,即中括号语法,兼容性更强
    {$smarty.config.配置项}或者{#配置项#}
    
    xxx.conf //不用管后缀,就当是配置文件
    aa=123
    bb=456
    <body>
    <{Config_load file="xxx.conf"}>
    <h1><{$smarty.config.aaa}></h1>
    </body>
    
    
    总结: 模板中的变量有 模板中的变量有 3种来源 种来源
    1: assign赋值得到的变量 , 存储在_tpl_vars属性中
    2: $smarty系统变量, 对于cookie,session,get,post,$_SERVER等信息,存储在_smarty属性中
       Smarty会自动捕捉,并保存起来,形成系统变量,可以直接用标签来引用.
    3: 从配置文件读取的变量 , 存储在_config属性中;
       定界符冲突的问题 定界符冲突的问题
       如果smarty用定界符,比如 {,},
       此定界在js,css里都有很可能碰到,如果碰到,会当成smarty标签来解析,进而引发错误发生.
    1: 换定界符,如 {> <}
    2: 用literal标签,"原义","字符意义的","无夸张的"
       例: {literal}h1{background:gray}{/literal} ---> 一般不用
    
    二、判断、循环、运算   
    
    判断 判断
    {if $ss === xxx}
    xxxx
    {else if $xx ===xx}
    xxxxx
    {else}
    xxxx
    {/if}
    
    
    循环 循环
    //4.html
    {foreach $new as $k=>$v}
    {$v.title}
    {$v.id}
    {/foreach}
    
    模板中的运算符 模板中的运算符
    //4.html
    {foreach $new as $k=>$v}
    {$v.title}
    {$v.id *4}
    {/foreach}
    
    变量调节器 变量调节器
    date_format [格式化日期]
    default [默认值]
    escape [编码]
    indent [缩进]
    low er [小写]
    nl2br [换行符替换成 <r />]
    replace [替换]
    strip [去除(多余空格)]
    strip_tags [去除html标签]
    upper [大写]
    
    display 和fetch的区别 的区别
    display 调用的ftech方法
    即: display() = echo fetch();
    
    包含子模板 包含子模板
    头部尾部的文件引用等,很实用;
    {include file='./xxx.html' }
    
    缓存 缓存
    开启缓存
    //6.php
    $sm->caching = true;//开启缓存
    $sm->cache_lifetime = 120; //缓存生命周期(秒)
    
    $smarty->isCached() 判断是否有缓存,如果有缓存,则用缓存,避免数据交互操作
    
    
    默认情况下:smarty会自动生成一个文件夹templates_c来存放被替换的模板文件
    			如果开启了缓存,smarty会生成一个cache文件夹来存放被缓存的文件
    
    
    单模板多缓存 单模板多缓存
    1个模板还可以根据其他参数,缓存多个结果,比如商品页面根据商品id来为每个商品缓存一个页面
    
    如下,$id就代表不同的商品id,然后每个id会生成一个缓存文件
    if(!$sm->isCached('7.html',$id)){
    	$sm->assign('a',$id);
    }
    $sm->display('7.html',$id);
    
    局部缓存 局部缓存
    不缓存标签
    可以以不缓存的方式assign()变量。
    适用于单个标签不缓存。
    例:
    $foo = 'ttttt';
    $smarty->assign('foo',$foo,true); //第三个参数 true 不缓存
    那么在模板中 
    这个<a>{$foo}</a> 
    会变成<a><?php echo $foo?></a>
    而不是<a>ttttt</a>
    
    nocache  标签 
    在模板中,不需要缓存的地方,用 {nocached}{/nocached} 包住.
    适用于大段的不缓存效果
    html模板
    例: {nocache}{$smarty.now }{/nocache}
    
    模板调用 模板调用 PHP函数 函数
    模板中用{insert name=xx } 直接调用PHP中的insert_xx函数
    小绵羊
  • 相关阅读:
    Linq 入门系列 [Take,Skip,TakeWhile,SkipWhile]篇
    SqlString 引发的思考
    DLINQ
    Wrf 格式播放器
    仙剑奇侠传4序列号
    Asp.Net程序性能 浅谈
    Linq 扩展函数的应用
    正则表达式积累
    ajax 之取消服务器任务[转]
    Linq 演变的过程(delegate => Lamb => Linq)
  • 原文地址:https://www.cnblogs.com/lauhp/p/7999338.html
Copyright © 2020-2023  润新知