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.为什么要使用模板引擎:
做项目的时候:学习了PHP和HTML相分离的模板技术:
将来在公司做真实项目的时候,通常都是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表单提交的内容,session,cookie,env,server....当前的时间戳
3. Foreach(foreach from=$待循环的数组 item=”将循环的元素值赋给谁” key=”将循环数组的下标赋给谁”) // key循环的案例
key = ‘k’ 这个用法,只适用于索引数组,如果这个数组是一个关联数组的话,就不能获得下标的数字值了 Key 值的循环是从0开始的
那么,第二种方法:
(2)iteration ----- 获得当前循环的次数,默认从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();
- smarty、fck
- fck与smarty的结合使用
- fck
- FCK
- FCK
- FCK
- FCK
- FCK
- FCK
- FCK
- Smarty
- Smarty
- smarty
- smarty
- Smarty
- smarty
- smarty
- smarty
- 最常用进程、端口有关管理命令
- Python 程序员应该知道的10个库
- Oracle 优化
- 红茶一杯话Binder(传输机制篇_下)
- C#单例设计模式
- smarty、fck
- iOS与设计模式七:建造者模式
- 用js实现的时钟效果
- Re-creating a Password Authentication File
- Web Services--gSOAP 2.7.6 第三章(3)
- MongoDB 复制集 (一) 成员介绍
- WAV音频格式
- 获取下一个灯
- Web Services--gSOAP 2.7.6 第四章(4)