资源描述:
《thinkphp3.0中模板保存到数据库.doc》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、thinkphp3.0中模板保存到数据库path模板引擎fileexceptioncachelayout在开发cms的时候用到如果将模板文件存入到数据库并显示到页面中由于thinkphp3.0都是直接从模板文件中读取再解析的那么对于模板存入数据库中就只有自己开发了,还有thinkphp3.0中有mode的功能我们可以定义自己的mode这样就可以达到目的了,那么如何来扩展自己的mode呢?如下:1.在你的入口文件中输入define('MODE_NAME','Ey');其中"Ey"就是你自己扩展的mode名称了,请在你的thinkphp/Extend/Mode文件下面创建Ey文件夹2.在
2、Ey目录中修改添加tags.php文件内容如下:returnarray('app_init'=>array(),'app_begin'=>array('ReadHtmlCache',//读取静态缓存),'route_check'=>array('CheckRoute',//路由检测),'app_end'=>array(),'path_info'=>array(),'action_begin'=>array(),'action_end'=>array(),'view_begin'=>array(),'view_template'=>array('ExtensionTemplate',/
3、/自动定位模板文件(手动添加)),'view_content'=>array('ParseContent'//(手动添加)),'view_filter'=>array('ContentReplace',//模板输出替换'TokenBuild',//表单令牌'WriteHtmlCache',//写入静态缓存'ShowRuntime',//运行时间显示),'view_end'=>array('ShowPageTrace',//页面Trace显示),);该文件中后面的注释中添加手动添加了为我的修改,只是修改thinkphp中默认的tags中查找模板和解析模板的行为将系统默认的action和
4、view类复制到Ey的目录中(由于解析内容,所以要修改action和view类),修改action.class.php中的fetch方法:protectedfunctionfetch($templateFile='',$templateContent=''){return$this->view->fetch($templateFile,$templateContent);}view.class.php文件中的修改为:publicfunctionfetch($templateFile='',$templateContent=NULL){$params['templateFile']=$
5、templateFile;$params['cacheFlag']=true;if(isset($templateContent)){$params['templateContent']=$templateContent;}tag('view_template',$params);//页面缓存ob_start();ob_implicit_flush(0);if('php'==strtolower(C('TMPL_ENGINE_TYPE'))){//使用PHP原生模板//模板阵列变量分解成为独立变量extract($this->tVar,EXTR_OVERWRITE);//直接载入PH
6、P模板include$templateFile;}else{//视图解析标签$params=array('var'=>$this->tVar,'content'=>$params['templateContent'],'file'=>$params['templateFile'],'cacheFlag'=>$params['cacheFlag']);tag('view_content',$params);}//获取并清空缓存$content=ob_get_clean();//内容过滤标签tag('view_filter',$content);//输出模板文件return$conten
7、t;}3.扩展自己的查找模板的类(自己扩展的行为tp让我们放在thinkphpExtendBehavior中)在thinkphpExtendBehavior中添加ExtensionTemplateBehavior.class.php类,内容如下:classExtensionTemplateBehaviorextendsBehavior{//行为扩展的执行入口必须是runpublicfunctionrun(&$params){if(is_array(