`
易沙520
  • 浏览: 8005 次
  • 性别: Icon_minigender_1
  • 来自: 上海
最近访客 更多访客>>
社区版块
存档分类
最新评论

phpcms源码解析之模板(template)函数

阅读更多
模板调用函数在global.func.php中。
<?php

/**
 * 模板调用
 *
 * @param $module
 * @param $template
 * @param $istag
 * @return unknown_type
 */
function template($module = 'content', $template = 'index', $style = '') {

 //插件处理
 if(strpos($module, 'plugin/')!== false) {    //插件检测 , 包含plugin/的为插件
  $plugin = str_replace('plugin/', '', $module);//将模板中plugin/替换,去除
  return p_template($plugin, $template,$style); //调用插件前台模板函数
 }
 $module = str_replace('/', DIRECTORY_SEPARATOR, $module);
 
 //style设置, 默认default
 if(!empty($style) && preg_match('/([a-z0-9\-_]+)/is',$style)) {
 } elseif (empty($style) && !defined('STYLE')) {
  
  //设置siteid
  if(defined('SITEID')) {
   $siteid = SITEID;
  } else {
   $siteid = param::get_cookie('siteid');
  }
  if (!$siteid) $siteid = 1;
  $sitelist = getcache('sitelist','commons');
  if(!empty($siteid)) {
   $style = $sitelist[$siteid]['default_style'];
  }
  
 } elseif (empty($style) && defined('STYLE')) {
  $style = STYLE;
 } else {
  $style = 'default';
 }
 if(!$style) $style = 'default';
 
 
 $template_cache = pc_base::load_sys_class('template_cache');//加载模板缓冲类template_cache
 
 //
 /*
  * 编译模板缓冲文件
  * PHPCMS_PATH="/" 
  * /caches/caches_template/defaults/$module/$template.php
  * */ 
 $compiledtplfile = PHPCMS_PATH.'caches'.DIRECTORY_SEPARATOR.'caches_template'.DIRECTORY_SEPARATOR.$style.DIRECTORY_SEPARATOR.$module.DIRECTORY_SEPARATOR.$template.'.php';

 /*
  * 模板文件
  * PC_PATH='phpcms/'
  * phpcms/templates/defaults/$module/$template.html
  * */
 if(file_exists(PC_PATH.'templates'.DIRECTORY_SEPARATOR.$style.DIRECTORY_SEPARATOR.$module.DIRECTORY_SEPARATOR.$template.'.html')) {
  //检测模板缓存文件
  if(!file_exists($compiledtplfile) || (@filemtime(PC_PATH.'templates'.DIRECTORY_SEPARATOR.$style.DIRECTORY_SEPARATOR.$module.DIRECTORY_SEPARATOR.$template.'.html') > @filemtime($compiledtplfile))) {
   //若模板缓存文件不存在,或是模板文件更新,则执行下面代码,对模板文件进行编译
   $template_cache->template_compile($module, $template, $style);
  }
 } else { //执行style=default
  $compiledtplfile = PHPCMS_PATH.'caches'.DIRECTORY_SEPARATOR.'caches_template'.DIRECTORY_SEPARATOR.'default'.DIRECTORY_SEPARATOR.$module.DIRECTORY_SEPARATOR.$template.'.php';
  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))) {
   $template_cache->template_compile($module, $template, 'default');
   //模板文件不存在
  } elseif (!file_exists(PC_PATH.'templates'.DIRECTORY_SEPARATOR.'default'.DIRECTORY_SEPARATOR.$module.DIRECTORY_SEPARATOR.$template.'.html')) {
   showmessage('Template does not exist.'.DIRECTORY_SEPARATOR.$style.DIRECTORY_SEPARATOR.$module.DIRECTORY_SEPARATOR.$template.'.html');
  }
 }
 return $compiledtplfile;  //返回最新的编译缓存文件
}


/**
 * 插件前台模板加载
 * Enter description here ...
 * @param unknown_type $module
 * @param unknown_type $template
 * @param unknown_type $style
 */
function p_template($plugin = 'content', $template = 'index',$style='default') {
 if(!$style) $style = 'default';
 $template_cache = pc_base::load_sys_class('template_cache');
 $compiledtplfile = PHPCMS_PATH.'caches'.DIRECTORY_SEPARATOR.'caches_template'.DIRECTORY_SEPARATOR.$style.DIRECTORY_SEPARATOR.'plugin'.DIRECTORY_SEPARATOR.$plugin.DIRECTORY_SEPARATOR.$template.'.php';
 
 /*
  * phpcms/plugin/$plugin/templates/$template.html
  * */
 if(!file_exists($compiledtplfile) || (file_exists(PC_PATH.'plugin'.DIRECTORY_SEPARATOR.$plugin.DIRECTORY_SEPARATOR.'templates'.DIRECTORY_SEPARATOR.$template.'.html') && filemtime(PC_PATH.'plugin'.DIRECTORY_SEPARATOR.$plugin.DIRECTORY_SEPARATOR.'templates'.DIRECTORY_SEPARATOR.$template.'.html') > filemtime($compiledtplfile))) {
  $template_cache->template_compile('plugin/'.$plugin, $template, 'default');
 } elseif (!file_exists(PC_PATH.'plugin'.DIRECTORY_SEPARATOR.$plugin.DIRECTORY_SEPARATOR.'templates'.DIRECTORY_SEPARATOR.$template.'.html')) {
  showmessage('Template does not exist.'.DIRECTORY_SEPARATOR.'plugin'.DIRECTORY_SEPARATOR.$plugin.DIRECTORY_SEPARATOR.$template.'.html');
 }

 return $compiledtplfile;
}

?>

这里有调用到模板编译函数,下节将奉上!!!敬请期待,,,

 

0
1
分享到:
评论

相关推荐

    phpcmsV9后台模板

    PHPCMS美化后台样式,方便操作,...说“PHPCMS后台模板,用于美化PHPCMS原始后台,直接把文件压根上传网站根目录,可替换原来后台模板。”不要下。 下我的对了,可惜不能上传截图,不然让需要的朋友看下,整体不错。

    phpcms模板

    不过,实际操作中,模板文件一般会被放置在phpcms系统的template目录下,对应于不同的主题或者频道。 进入PHPCMS更新模板的流程如下: 1. **登录后台**:首先,你需要登录到phpcms的管理后台,通常通过...

    最新phpcmsV9手机模板源码分享

    【phpcmsV9手机模板源码详解】 phpCMS V9是一款广泛应用的内容管理系统,专为构建高效、便捷的网站而设计。这款系统以其强大的功能、灵活的扩展性和易于使用的后台管理界面,深受开发者喜爱。此次分享的"最新phpcms...

    仿猫扑PHPCMS模板

    《仿猫扑PHPCMS模板解析与学习指南》 在互联网内容管理系统的广泛应用中,PHPCMS是一款备受青睐的开源CMS(Content Management System)平台,以其强大的功能和易用性深受开发者喜爱。本文将深入探讨“仿猫扑PHPCMS...

    PHPcms超给力模板

    6. **自定义功能**:PHPcmsV9的模板还支持自定义标签和函数,开发者可以通过这些自定义元素增强模板的功能,实现如文章列表、图片轮播、评论系统等常见功能。 7. **后台管理**:模板与PHPcms的后台管理无缝集成,...

    PHPCMS后台模板 美化PHPCMS后台

    而"PHPCMS后台模板 美化PHPCMS后台"是针对该系统进行的界面美化工作,主要目标是提升管理员在后台操作时的视觉体验和交互效果。 首先,我们来看"PHPCMS后台模板"这个概念。PHPCMS的后台模板主要包含HTML、CSS、...

    PHPCMS资源网站源码软件源码下载站网站源码

    1. **网站框架**:PHPCMS作为一个开源CMS框架,它的核心组件包括模板引擎、会员系统、广告管理、内容发布、分类管理、表单自定义、评论系统等,这些功能为网站的日常运营提供了坚实的基础。 2. **源码管理**:对于...

    phpcms企业网站模板_

    【phpcms企业网站模板】 PHP CMS(全称:PHP Content Management System)是一种基于PHP语言开发的开源内容管理系统,被广泛应用于构建企业网站。这个“phpcms企业网站模板”是为那些希望快速搭建功能完善、界面...

    PHPcms完整网站模板

    【PHPcms完整网站模板】 PHPcms是一款基于PHP和MySQL数据库的开源内容管理系统,它为开发者提供了强大的网站建设和管理工具。这个“PHPcms完整网站模板”是PHPcms系统的一部分,主要包含了一系列预先设计好的页面...

    phpcms模板下载(带使用说明,带数据库,带源码)

    【phpcms模板下载】是一个提供phpcms系统模板资源的压缩包,其中包含了使用说明、数据库文件以及源码,旨在帮助用户学习和理解如何在phpcms上构建企业官方网站。phpcms是一款基于PHP语言和MySQL数据库的开源内容管理...

    phpcms黑色模板后台-v9后端模板-phpcms模板.zip

    《phpcms黑色模板后台-v9后端模板-phpcms模板.zip》是一个专为phpcms V9系统设计的定制化后台界面,旨在提供一个更加美观、用户体验更佳的管理平台。相较于官方默认的后台模板,这款黑色模板针对用户界面进行了深度...

    PHPCMS二次开发常用函数

    ### PHPCMS二次开发常用函数解析 #### 一、引言 在进行PHPCMS二次开发的过程中,了解并掌握常用函数的应用是至关重要的。本文将详细介绍`phpcms v9`中的一些关键函数及其应用场景,帮助开发者更好地利用这些工具...

    PHPCMS 当客网模板

    PHPCMS的模板系统是其核心优势之一,它允许开发者根据需要定制各种风格的网站界面。当客网模板就是这样的一个实例,它将当客网的布局、色彩搭配、图标设计等元素融入到PHPCMS中,提供了一种专业且具有商业气息的...

    PHPCMS函数与实例讲解

    在模板处理上,`template`函数是核心,它负责解析和渲染模板文件,将数据填充到模板中,生成最终的HTML页面。`gettemplets`函数用于获取模板文件路径,而`template_var`可以获取模板变量的值,这些工具使得开发者...

    PHPCMS M0001模板

    PHPCMS M0001模板是一款专为网站开发设计的网页模板,它基于PHPCMS内容管理系统构建,提供了一套完整的网站布局和设计。PHPCMS是一款流行的开源CMS(内容管理系统),它允许用户通过简单的界面创建、管理和发布网站...

    PHPCMS资源网站源码软件源码下载站网站源码.rar

    首先,从标题和描述我们可以知道,这个压缩包包含的是PHPCMS的资源网站源码,主要用于创建一个可以供用户下载软件源码的平台。PHPCMS以其模块化设计、易用性和强大的功能著称,使得网站的搭建、管理和维护变得简单...

    phpcms模板(打包)

    phpcms模板标签是其强大之处,例如: - `{phpcms:info}`:用于获取文章的基本信息,如标题、作者、发布时间等。 - `{phpcms:category}`:显示分类列表。 - `{phpcms:list}`:用于显示指定分类下的文章列表。 - `{...

    PHPCMS V9后台模板

    本压缩包提供的"PHPCMS V9后台模板"是针对该系统的后台管理界面进行美化和优化的设计方案,旨在提供更美观、易用的操作界面。 PHPCMS V9后台模板的修改通常涉及以下几个方面: 1. **布局调整**:优化后台界面的...

Global site tag (gtag.js) - Google Analytics