smarty、fck

来源:互联网 发布:网络管理总结 编辑:程序博客网 时间:2024/06/01 10:35

一. Smarty模板

    1.1为什么要使用Smarty如何使用Smarty

1.2 模板中可以使用的变量类型变量来源

1.3 函数

1.4 模板中使用的变量调节器与组合修改器与机配置文件

1.5 Smarty模板中最重要的缓存机制

. FCK编辑器的使用

 

. Smarty模板

1.1为什么要使用Smarty如何使用Smarty

      1.为什么要使用模板引擎:

         做项目的时候:学习了PHPHTML相分离的模板技术:

         将来在公司做真实项目的时候,通常都是PHP程序员和美工分工协作的

     项目大概划分成:

     负责显示的HTML代码

    负责业务逻辑的PHP代码(显示哪些数据、怎么显示)

        模板引擎,就是将PHP处理的数据 和 HTML代码显示整合一起,这么一个技术

       2. 如何使用?

          (1) 从官网下载smarty 类库   www.smarty.net

          (2) 解压这个包:我们需要的是libs这个目录,将这个目录放到我们的项目根目录中

    通常情况下,我们需要将这个libs目录重命名为 smarty

          (3) 接下来就是使用这个类

     1. 加载这个类,实例化对象

var 是 PHP 4之前的声明属性的关键字,PHP 5 之后,采用 $声明变量,PHP5 兼容 4之前

 

            2. PHP获得的数据,显示到模板中,那么找到这个模板,通过smarty对象的 template_dir  属性来找到,默认情况下是在项目的templates目录中

 

    3. PHP代码和HTML代码整合好之后,编译文件(放到哪里)---->compile_dir属性设置

    4. 开始从PHP文件给HTML文件分配变量

    5.显示(在模板文件中,怎么显示内容呢?)

       模板标签:

        在模板中如何使用 PHP分配的变量呢?

        {变量名}

 

1.2 模板中可以使用的变量类型变量来源

1. 可以使用的数据类型

      (1)分配变量数据(一个值)

      (2)数组(必须是关联数组)

  

  模板文件中,如何使用数组

  

 

      (3)分配对象

   

  在模板文件中,如何访问对象的属性和方法呢?

  通过 -> 来访问 对象的属性和方法

    注意:在模板文件中访问对象的属性和方法的时候,也是受 权限控制的

  2. 变量来源

      可以通过php 文件来分配变量

$smarty=new Smarty();

$smarty->left_delimiter='<{';   //修改Smarty类中的定界符设置

$smarty->right_delimiter='}>';

$smarty -> config_dir = 'configs';//修改smarty 类中的配置文件设置   

$smarty->assign('all',$all);//分配变量

$smarty->display('goods_list.htm');//调用方法

   注意:css的语法 和 smarty的标签,发生冲突,可以通过修改smarty文件变量或使用smarty的内置函数 {literal}...{/literal}

 1.3 函数

   1.{literal}...{/literal}  //标签区域内的数据将被当作文本处理,此时模板将忽略其内部的所有字符信息

        2. 通过smarty内置的标签,可以获得 url地址上传递的参数,form表单提交的内容,sessioncookieenvserver....当前的时间戳

          

          

   3.  Foreach(foreach from=$待循环的数组 item=将循环的元素值赋给谁 key=将循环数组的下标赋给谁)  // key循环的案例

          key = k 这个用法,只适用于索引数组,如果这个数组是一个关联数组的话,就不能获得下标的数字值了   Key 值的循环是从0开始的

         

         

        那么,第二种方法:

         (2iteration  ----- 获得当前循环的次数,默认从1开始,每循环一次加1

          

        iteration 总是从 1 开始,每执行一次增加 

  4. include 此标签用于引入其他模板:

 

        需求:有些网站的底部有 版权所有、备案信息等等

         我们就可以封装到一个公用的文件中,其他文件需要的时候加载即可

        

  5.  config_load  加载配置文件

    

       table_color.conf

     

        

      6. Function_exists();判断函数是否被定义 isset() 判断变量是否被定义

 

1.4 模板中使用的变量调节器与组合修改器与内建函数机配置文件

    1. 变量调节器

      变量调节器,是调节一个变量该怎么显示,而不是修改这个变量的值 。如下例

        (1) 我们将时间戳按照我们要求的时间格式去显示

        语法格式:

       {变量名|变量调机器名称:参数列表}

   <{$smarty.now|date_format:"%Y-%m-%d %H:%i:%s"}>分钟 和 秒和PHP中的格式有一定的区别

<{$smarty.now|date_format:"%Y-%m-%d %H:%M:%S"}> smarty 中才能正常显示

      (2) 假如,将查询的字符串 统一转换成大小写

         <{$str|upper}><br/>

        <{$str|lower}>

              

       (3) 字符串缩进

          <{$str|indent:"2":" "}>

            Indent( number 缩进几个字符str 用什么来代替)

       (4) 换行输出

           nl2br()所有的换行符将被替换成 <br />.功能同PHP中的nl2br()函数一样.

         

      

     (5) 字符转码:url编码 html实体转码:

         

          超链接传递数据的时候,默认是明文传递的

          通常要给他url编码一下

        

  (6) 如何将保存数据的html标签,去除掉,使用smarty的内置的变量调机器(strip_tags

 

  utf8_truncate: 36**   //是自定义变量是 smarty/plugins/modifier.truncate.php

1.5 Smarty模板中最重要的缓存机制

   1. 缓存文件  

    $smarty -> config_dir = 'configs';   //设置配置文间的地址 

  $smarty->cache_dir='cache';//设置缓存文件地址

  $smarty->caching=1;                //开启缓存

      if(!$smarty->is_cached('goods_list.tpl')){  

echo 'run...';

include 'db.class.php';

$db= new db('localhost','ecshop','root','');

$sql='select * from ecs_goods';

$all=$db->getAll($sql);}

    is_cache() 判断是否有缓存文件存在

2.单模板多缓存:

     可不可以根据,根据传递的参数,来获得不同的缓存文件,可以解决:

    通常传递一个能够标识这个记录的一个标志,通常是id,称之为缓存id,会自动的生成一个相对的缓存文件:

     

    同样,既然生成缓存的时候,会根据id值来生成,那么判断的时候,也应该根据传递进来的缓存id来判断:详细过程如下

   

     单模板多缓存就是:一个模板,根据传递的id值不同,生成不同的缓存文件(多个缓存文件)

 

3. 局部不缓存:

在整体被缓存了,但是某个地方不需要缓存

如果上面讲的是提高查询的速度,那么局部不缓存就是和他相反的

例如,假如做一个股票网站、购物商场的的话,价格肯定不能缓存

案例:

(1)在缓存文件中,显示实时的时间:

 

步骤:

(2) 局部不缓存通过 smarty的内置函数:insert:特点:insert 函数不会被缓存,每次调用这个模板的时候,都会重新执行这个函数

  

 这样,每次调用模板的时候,都会执行这个insert内建函数:name属性指的是,将要调用的函数名,然后,外面的函数再给insert 返回实时的内容即可

注意:

  定义这个外面的函数的时候,不能随便定义,有一定的规范:以insert_开头

而且,函数应该在php文件中定义:

    

4. 缓存时间

   缓存确实重要,但是优缺点:导致数据的延迟

   即使修改了数据源,真实的数据不会显示

 

    解决方法:

      1. 当数据源发生变化的时候,手动的去更新一下缓存,这种情况适合于(更新频率比较低的,但是要求数据比较精确的)例如,身份证的挂失

      2. 给缓存的内容(缓存文件)设置一个有效期, 在这个有效期内,我们认为缓存有效,超过这个有效期了,我们就认为缓存无效,自动删除缓存文件

        解决方法 :

         我们的smarty支持第二中形式的缓存时间 的设置:

          

         我们可以在php 文件中设置缓存时间

 

. FCK编辑器

     1. 加载fck 类,实例化对象,

     2. 设置属性,

     3. 调用方法

  

学习总结:

一、Smarty的使用:

   Goods_list.php

   <?php

include 'db.class.php';

$db = new db('localhost','shop_test','root','');

$sql = "select goods_name,shop_price,goods_number,cat_id from ecs_goods";

$all = $db -> getAll($sql);

require 'smarty/Smarty.class.php';

$smarty = new Smarty();

$smarty -> left_delimiter = '<{';

$smarty -> right_delimiter = '}>';

$smarty -> config_dir = 'conf';

$smarty -> template_dir = 'tpls';

$smarty -> compile_dir = 'tpls_c';

$smarty -> assign('list',$all);

$smarty -> display('goods_list.htm'); 

 

Goods_list.htm

<style>

{literal}

td{text-align:center}

{/literal}

</style>

<{config_load file='table_color.conf'}>

<table width='500px' bgcolor='<{#table_bgcolor#}>'>

<tr>

<th>商品名称</th>

<th>商品价格</th>

<th>商品数量</th>

<th>商品分类</th>

</tr>

<{foreach from=$list item='value'}>

<tr>

<td><{$value.goods_name}></td>

<td><{$value.shop_price}></td>

<td><{$value.goods_number}></td>

<td><{$value.cat_id}></td>

</tr>

<{/foreach}>

</table>

{literal}

<script>

function clickme(){

alert('hello smarty');

}

</script>

{/literal}

<button onclick="clickme()">点击我</button>

<img src='<{#img_path#}>1.gif'/>

<{include file='footer.htm'}>

 

二、fck的使用

<?php

  include_once"fckeditor/fckeditor.php";

  $fck=new FCKeditor('goods_desc');

  $fck->BasePath= './fckeditor/' ;

  $fck->Width="450px";

  $fck->Height="200px";

  $fck->ToolbarSet="myFck";

  $fck->Create();

 

原创粉丝点击