国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > CMS > PhpCMS > 正文

PHPCMS模版解析之TEMPLATE函數

2024-09-10 07:15:40
字體:
來源:轉載
供稿:網友

昨天跟到了phpcms系統初始化到控制器流程,今天阿唐屌絲帶大家一起分析phpcms模版機制,控制器 在進行一些邏輯操作后 就開始渲染 視圖顯示 用到 template函數,所以要搞清phpcms模版機制,這個函數是必須看的,代碼如下:

  1. function template($module = ‘content’, $template = ‘index’, $style = ”) { 
  2. //默認模塊為content.默認模版文件為index 
  3. if(strpos($module, ‘plugin/’)!== false) { 
  4. //檢測模塊里面是否包含plugin字符 這里進行了對插件模版的判斷 插件模版需要用p_template解析 
  5. $plugin = str_replace(‘plugin/’, ”, $module); 
  6. return p_template($plugin$template,$style); 
  7. $module = str_replace(‘/’, DIRECTORY_SEPARATOR, $module); 
  8. //路徑兼容性處理 
  9. if(!emptyempty($style) && preg_match(‘/([a-z0-9-_]+)/is’,$style)) { 
  10. elseif (emptyempty($style) && !defined(‘STYLE’)) { 
  11. //變量STYLE暫時不曉得在哪里初始化的 存在當前網站模版名 
  12. if(defined(‘SITEID’)) { 
  13. $siteid = SITEID; 
  14. else { 
  15. $siteid = param::get_cookie(‘siteid’); 
  16. if (!$siteid$siteid = 1; 
  17. $sitelist = getcache(‘sitelist’,'commons’); 
  18. if(!emptyempty($siteid)) { 
  19. $style = $sitelist[$siteid]['default_style']; 
  20. elseif (emptyempty($style) && defined(‘STYLE’)) { 
  21. $style = STYLE; 
  22. else { 
  23. $style = ‘default’; 
  24. if(!$style$style = ‘default’; 
  25. //以上全部為判斷 當前網站 應該用哪個模版 風格 
  26. $template_cache = pc_base::load_sys_class(‘template_cache’); 
  27. //載入template_cache類 
  28. $compiledtplfile = PHPCMS_PATH.’caches’.DIRECTORY_SEPARATOR.’caches_template’.DIRECTORY_SEPARATOR.$style.DIRECTORY_SEPARATOR.$module.DIRECTORY_SEPARATOR.$template.’.php’; 
  29. //組合當前模塊模版緩存文件地址 
  30. if(file_exists(PC_PATH.’templates’.DIRECTORY_SEPARATOR.$style.DIRECTORY_SEPARATOR.$module.DIRECTORY_SEPARATOR.$template.’.html’)) { 
  31. //如果模版文件存在 
  32. if(!file_exists($compiledtplfile) || (@filemtime(PC_PATH.’templates’.DIRECTORY_SEPARATOR.$style.DIRECTORY_SEPARATOR.$module.DIRECTORY_SEPARATOR.$template.’.html’) > @filemtime($compiledtplfile))) {//如果緩存文件不存在既沒有編譯模版 或者 模版的修改時間超過了系統設置緩存更新時間 從新編譯模版緩存 
  33. $template_cache->template_compile($module$template$style); 
  34. else { 
  35. //如果模版文件不存在 
  36. $compiledtplfile = PHPCMS_PATH.’caches’.DIRECTORY_SEPARATOR.’caches_template’.DIRECTORY_SEPARATOR.’default’.DIRECTORY_SEPARATOR.$module.DIRECTORY_SEPARATOR.$template.’.php’; 
  37. 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))) {//上面判斷了模版不存在,這個時候開始判斷默認模版路徑對應模版是否存在,可以做到知道用默認default模版替換,如果默認的模版的 緩存 文件 不存在 或者 存在 默認的模版 但時間超過了 系統設置緩存時間 在從新編譯模版 
  38. $template_cache->template_compile($module$template, ‘default’); 
  39. elseif (!file_exists(PC_PATH.’templates’.DIRECTORY_SEPARATOR.’default’.DIRECTORY_SEPARATOR.$module.DIRECTORY_SEPARATOR.$template.’.html’)) {//模版不存在 
  40. showmessage(‘Template does not exist.’.DIRECTORY_SEPARATOR.$style.DIRECTORY_SEPARATOR.$module.DIRECTORY_SEPARATOR.$template.’.html’); 
  41. //Vevb.com 
  42. return $compiledtplfile;//返回編譯文件 

整個邏輯很簡單 判斷 稍微有點長

這里我們可以分析到 phpcms模擬為編譯型的模版解析過程,template函數主要是控制 模版解析類工作 情況 整個編譯 過程 由template_cache類完成,要想了解整個模版編譯過程 還需要讀 這個類.

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 贺州市| 安平县| 兰西县| 兴和县| 鞍山市| 南投县| 贵阳市| 阳城县| 新竹县| 珠海市| 罗源县| 黄骅市| 新宁县| 青州市| 万全县| 旅游| 平泉县| 秀山| 和林格尔县| 甘肃省| 綦江县| 灵川县| 潜山县| 宣威市| 清丰县| 昌平区| 怀柔区| 宝山区| 文昌市| 辛集市| 西吉县| 焉耆| 正定县| 兖州市| 临泽县| 台南市| 毕节市| 法库县| 赤壁市| 安平县| 沭阳县|