当前位置:首页 > CMS教程 > phpcms > 列表

phpcms template函数分析

发布:smiling 来源: PHP粉丝网  添加日期:2014-10-24 16:08:07 浏览: 评论:0 

template(模板调用)函数分析:function template 位于 libs/functions/globel.func.php

一.参数分析

参数($module 

$template $style)

模块名  模板名  模板风格

下面会以$module='content',$template='index',$style=''为例

二. 代码分段分析

  1. 1. if(strpos($module'plugin/')!== false){ 
  2.  
  3.       $plugin = str_replace('plugin/''',$module); 
  4.       return p_template($plugin,$template,$style); 
  5.     } 
  6.     //检测是否是插件调用如果是调用p_template()函数处理(分析在p_template函数分析.txt) 
  7. ------------------------------------------------------------------------------------------------- 
  8.  
  9. 2.  $module = str_replace('/',DIRECTORY_SEPARATOR, $module); 
  10.    //把$module中原本的'/'替换成系统分隔符 
  11.      
  12. ------------------------------------------------------------------------------------------------- 
  13.  
  14. 3.  if(!emptyempty($style) &&preg_match('/([a-z0-9\-_]+)/is',$style)) { 
  15.     } elseif(emptyempty($style) && !defined('STYLE')) { 
  16.       if(defined('SITEID')) { 
  17.          $siteid = SITEID; 
  18.       } else { 
  19.          $siteid = param::get_cookie('siteid'); 
  20.       } 
  21.       if (!$siteid$siteid = 1; 
  22.       $sitelist = getcache('sitelist','commons'); 
  23.       if(!emptyempty($siteid)) { 
  24.          $style =$sitelist[$siteid]['default_style']; 
  25.       } 
  26.     } elseif(emptyempty($style) && defined('STYLE')) { 
  27.       $style = STYLE; 
  28.     } else
  29.       $style = 'default'
  30.     } 
  31.     如果$style不为空$style没有特殊字符 
  32.       如果$style为空 和 未定义STYLE常量 
  33.          得到$siteid(站点ID) 
  34.          通过sitelist缓存得到$style 
  35.       如果$style为空 和 已定义STYLE常量 
  36.          $style = STYLE; 
  37.       其他状况 $style ='default';(采用默认)       
  38. ------------------------------------------------------------------------------------------------- 
  39.  
  40. 4.  if(!$style$style ='default';  //如果$style为空 $style用默认风格(那上面在干嘛?) 
  41.  
  42. ------------------------------------------------------------------------------------------------- 
  43.  
  44. 5.  $template_cache =pc_base::load_sys_class('template_cache'); //实例化template_cache类phpfensi.com
  45.  
  46. ------------------------------------------------------------------------------------------------- 
  47.  
  48. 6.  $compiledtplfile =PHPCMS_PATH.'caches'.DIRECTORY_SEPARATOR.'caches_template'.DIRECTORY_SEPARATOR.$style.DIRECTORY_SEPARATOR.$module.DIRECTORY_SEPARATOR.$template.'.php'
  49.     //得到缓存路径,以$module='content',$template='index'为例, 实际字符串(路径)为D:\xampp\htdos\www\caches\caches_template\defalut\content\index.php 
  50.      
  51. ------------------------------------------------------------------------------------------------- 
  52.  
  53. 7.   if(file_exists(PC_PATH.'templates'.DIRECTORY_SEPARATOR.$style.DIRECTORY_SEPARATOR.$module.DIRECTORY_SEPARATOR.$template.'.html')){ 
  54.       if(!file_exists($compiledtplfile) ||(@filemtime(PC_PATH.'templates'.DIRECTORY_SEPARATOR.$style.DIRECTORY_SEPARATOR.$module.DIRECTORY_SEPARATOR.$template.'.html')> @filemtime($compiledtplfile))) { 
  55.          $template_cache->template_compile($module,$template$style); 
  56.       } 
  57.     } else
  58.       $compiledtplfile =PHPCMS_PATH.'caches'.DIRECTORY_SEPARATOR.'caches_template'.DIRECTORY_SEPARATOR.'default'.DIRECTORY_SEPARATOR.$module.DIRECTORY_SEPARATOR.$template.'.php'
  59.       if(!file_exists($compiledtplfile) ||(file_exists(PC_PATH.'templates'.DIRECTORY_SEPARATOR.'default'.DIRECTORY_SEPARATOR.$module.DIRECTORY_SEPARATOR.$template.'.html')&&filemtime(PC_PATH.'templates'.DIRECTORY_SEPARATOR.'default'.DIRECTORY_SEPARATOR.$module.DIRECTORY_SEPARATOR.$template.'.html')> filemtime($compiledtplfile))) { 
  60.          $template_cache->template_compile($module,$template'default'); 
  61.       } elseif(!file_exists(PC_PATH.'templates'.DIRECTORY_SEPARATOR.'default'.DIRECTORY_SEPARATOR.$module.DIRECTORY_SEPARATOR.$template.'.html')){ 
  62.          showmessage('Template does notexist.'.DIRECTORY_SEPARATOR.$style.DIRECTORY_SEPARATOR.$module.DIRECTORY_SEPARATOR.$template.'.html'); 
  63.       } 
  64.     } 

如果有D:\xampp\htdos\www\phpcms\defalut\templates\content\index.html(模板文件).

如果 $compiledtplfile缓存文件php不存在 或者模板文件html的修改时间>缓存文件php的修改时间.

重新编译模板文件,把v9的标签语言编译成php语言,放入对应风格缓存文件中(详细过程分析在template_cache类分析.txt)

其他 (模板文件不存在).

$compiledtplfile重新得到缓存文件路径, 实际字符串(路径)为D:\xampp\htdos\www\caches\caches_template\defalut\content\index.php(针对其他模板风格,如果没有其中对应的模板文件html,则使用默认风格中的对应缓存文件php路径)

如果 $compiledtplfile缓存文件php不存在 或者 (默认风格存在对应模板html并且 默认风格对应模板html修改时间>默认风格对应缓存文件php修改时间)

重新编译模板文件, 把v9的标签语言编译成php语言,放入默认风格缓存文件中(详细过程分析在template_cache类分析.txt)

又如果 默认风格都不存在对应模板html

弹出警告:模板不存在

8.return$compiledtplfile; //返回缓存文件绝对路径; 提供给include();

Tags: phpcms函数 template函数分析

分享到: