onethink thinkphp整合smarty模版引擎的笔记

最近用到thinkphp官方出版的onethink搭建管理后台,因为公司以前代码是smarty写的,模版2000多行,实在懒得用think的模版引擎来改,

所以整合smarty模版引擎, 兼容 think模版。

一:Application/Common/Conf/config.php添加

‘TMPL_ENGINE_TYPE’      => ‘Smarty’,

二:下载smarty模版引擎 下载地址

http://pan.baidu.com/s/1ntoXvwH

放在ThinkPHP\Library\Vendor下面

因为onethink已经有smarty类,在

ThinkPHP/Library/Think/Template/Driver/Smarty.class.php

public function fetch($templateFile,$var) {
$templateFile = substr($templateFile,strlen(THEME_PATH));
vendor('Smarty.Smarty#class');
$tpl = new \Smarty();
$tpl->caching = C('TMPL_CACHE_ON');
$tpl->template_dir = THEME_PATH;
$tpl->compile_dir = CACHE_PATH ;
$tpl->cache_dir = TEMP_PATH ;
if(C('TMPL_ENGINE_CONFIG')) {
$config = C('TMPL_ENGINE_CONFIG');
foreach ($config as $key=>$val){
$tpl->{$key} = $val;
}
}
$tpl->assign($var);
$tpl->display($templateFile);
}

而onethink模版解析流程是在

hinkPHP\Library\Behavior\ParseTemplateBehavior.class.php

public function run(&$_data){
$engine = strtolower(C('TMPL_ENGINE_TYPE'));
$_content = empty($_data['content'])?$_data['file']:$_data['content'];
$_data['prefix'] = !empty($_data['prefix'])?$_data['prefix']:C('TMPL_CACHE_PREFIX');
if('think'==$engine){ // 采用Think模板引擎
if((!empty($_data['content']) && $this->checkContentCache($_data['content'],$_data['prefix']))
|| $this->checkCache($_data['file'],$_data['prefix'])) { // 缓存有效
//载入模版缓存文件
Storage::load(C('CACHE_PATH').$_data['prefix'].md5($_content).C('TMPL_CACHFILE_SUFFIX'),$_data['var']);
}else{
$tpl = Think::instance('Think\\Template');
// 编译并加载模板文件
$tpl->fetch($_content,$_data['var'],$_data['prefix']);
}
}else{
// 调用第三方模板引擎解析和输出
if(strpos($engine,'\\')){
$class = $engine;
}else{
$class = 'Think\\Template\\Driver\\'.ucwords($engine);
}
if(class_exists($class)) {
$tpl = new $class;
$tpl->fetch($_content,$_data['var']);
}else { // 类没有定义
E(L('_NOT_SUPPERT_').': ' . $class);
}
}
}

可以看出如果模版引擎不是think时,则实例化

‘Think\\Template\\Driver\\’.ucwords($engine);

这样你的系统可以支持smarty模版了,

但是你其他的模版有的不想使用smarty ,还想保留think

则可以在config.php里加判断

if( strstr($_GET['s'],"NoSmarty")!=''){){
 
return array(
 
'TMPL_ENGINE_TYPE'      => 'Smarty',
 
//当前控制器使用smarty
 
);
 
}else{
 
return array(
 
//当前控制器不使用smarty
 
);
 
}

时间: 2024-09-29 15:11:32

onethink thinkphp整合smarty模版引擎的笔记的相关文章

基于thinkphp的onethink如何整合smarty模版

整合smarty模版引擎, 兼容 think模版的步骤如下: 一:Application/Common/Conf/config.php添加 'TMPL_ENGINE_TYPE'      => 'Smarty', 二:下载smarty模版引擎 下载地址 http://www.smarty.net/ 放在ThinkPHP\Library\Vendor下面 因为onethink已经有smarty类,在 ThinkPHP/Library/Think/Template/Driver/Smarty.cla

smarty 模版引擎block疑问

问题描述 smarty 模版引擎block疑问 请问一下,在smarty模版上的这个写法是什么意思?在线等..... 解决方案 SMARTY模版仿smarty的建议模版引擎类PHP 模版引擎Smarty介绍 解决方案二: Smarty末班引擎中提供了三种插件支持,分别是block(块),function(函数),modifier(调节器),用户可以自己扩展. block:是一种非常灵活的高级插件,这种插件在模板中使用时需要成对出现,Smarty内置的block插件例如section,foreac

ThinkPHP使用smarty模板引擎的方法_php实例

ThinkPHP支持多种php模板引擎,可以根据个人需要加以配置. 下面我们以Smarty模板引擎为例,给大家说说具体的操作流程! 首先去Smarty官网上下载一个Smarty.本站下载地址:http://www.jb51.net/codes/16086.html. 接下来解压压缩包,会有两个文件夹:demo和libs.打开libs文件夹,复制所有内容. 接下来,打开你网站根目录 下thinkphp的文件夹.里面有个vendor文件夹,这个文件夹是TP调用第三方类库用的,把刚才复制的东西全部粘贴

php smarty模版引擎中的缓存应用_php技巧

1,Smarty缓存的配置: 复制代码 代码如下: $smarty->cache-dir="目录名"; //创建缓存目录名 $smarty->caching=true; //开启缓存,为false的时候缓存无效 $smarty->cache_lifetime=60; //缓存时间,单位是秒 2,Smarty缓存的使用与清除 复制代码 代码如下: $marty->display("cache.tpl",cache_id); //创建带ID的缓存

php smarty模版引擎中的缓存应用_php模板

1,Smarty缓存的配置: $smarty->cache-dir="目录名"; //创建缓存目录名 $smarty->caching=true; //开启缓存,为false的时候缓存无效 $smarty->cache_lifetime=60; //缓存时间,单位是秒 2,Smarty缓存的使用与清除 $marty->display("cache.tpl",cache_id); //创建带ID的缓存 $marty->clear_all_

php smarty模版引擎中变量操作符及使用方法_php模板

smarty常用的20个变量操作符 * 使用语法:{变量名|操作符:} * capitalize ---首字母大写 * count_characters ---计算字符数 * cat ---连接字符串 * count_paragraphs ---计算段落数 * count_sentences ---计算句数 * count_words ---计算词数 * date_format ---时间格式 * default ---默认 * escape ---转码 * indent ---缩进 * low

ThinkPHP模版引擎之变量输出详解_php实例

本文实例分析了ThinkPHP模版引擎中变量输出的用法.分享给大家供大家参考.具体分析如下: 我们已经知道了在Action中使用assign方法可以给模板变量赋值,赋值后怎么在模板文件中输出变量的值呢? 如果我们在Action中赋值了一个name模板变量: 复制代码 代码如下: $name = 'ThinkPHP'; $this->assign('name',$name); 使用内置的模板引擎输出变量,只需要在模版文件使用: {$name} 模板编译后的结果就是 复制代码 代码如下: <?ph

ThinkPHP使用Smarty第三方插件方法小结_php实例

本文实例讲述了ThinkPHP使用Smarty第三方插件的方法.分享给大家供大家参考,具体如下: 如果你在使用ThinkPHP框架的时候不想采用TP自带的模版系统,而使用第三方的模版系统,你有很多其他的选择,在这里我仅介绍Smarty这种比较官方,而且比较强大的模版系统. 由于Smarty兼容PHP4,因此,它的效率会相对低一点点,这个低只是相对的,估计等Smarty啥时候正式放弃PHP4的时候,效率可能会上很大一个台阶. 在TP框架的PlugIns目录下面,有一个SmartTemplate目录

CI框架整合smarty步骤详解_php实例

本文详细讲述了CI框架整合smarty步骤.分享给大家供大家参考,具体如下: Ci结合smarty的配置步骤: 1. 第一步配置ci和下载smarty的模板个人喜欢用(Smarty-3.1.8)这个版本. 2. 第二部把下载到的smarty版本解压然后把里面的libs文件改名为smarty然后把这个文件拷到ci\application\libraries目录下面 3. 在ci\application\libraries这个目录下面建立一个文件,文件名可以自定义,例如见一个tp.php的文档. 4