phpcmsv9后台管理生成首页
phpcmsv9的模板静态化是使用ob系列函数实现
的,ob系列的函数实现静态化要用到的是
ob_start();
ob_get_contents();
ob_clean();
m=content&c=create_html&a=public_index
后台管理/我的面板/生成操作 /生成首页
这里使用的是后台生成首页的操作,
使用的是content模块下的create_html页面下
的public_index事件。这是一般的生成静态页面的
过程,生成首页时要更新的是首页相关的信息,
包含不同的模块的信息,
生成首页的方法内容为:
//生成首页
public function public_index() {
$this->html = pc_base::load_app_class('html');
$size = $this->html->index();
showmessage(L('index_create_finish',array('size'=>sizecount($size))));
}
加载应用类html,调用html类中的index方法,
显示信息提示框,提示更新成功,
load_app_class是pc_base中的静态加载用的方法,加载的是应用级的类文件,路径是phpcms/modules/content/classes/html.class.php
在html类中的index调用的是createhtml方法生成首页,
在createhtml中使用file_put_contents将静态页面的内容
写入到首页index.html中,实现生成首页的功能,
生成首页的具体过程
在index中使用的是
ob_start();
include template('content','index',$style);
在createhtml中使用的是
ob_get_contents();
ob_clean();
经过这几个函数的调用后,首页的html
标记内容已经生成了。
具体的过程链接起来是
ob_start();
include template('content','index',$style);
ob_get_contents();
$strlen = file_put_contents($file, $data);
ob_clean();
这样的过程达到了生成首页的功能。
template的功能是加载参数指定的模版内容,这里加载的
是content下的intdex模板,路径是
phpcms/templates/default/content/index.html
这里的index.html是首页的模板内容,在模板内
使用的是phpcms定义的标签,具体的内容是,加载
content下的header,footer,在main部分通过解析
{pc :content }{/pc}中的内容调用数据,这里在template
中使用的是将这些标记的具体的内容计算出来,生成html标记
内容返回给浏览器端。具体的解析的过程在template函数中,
template的路径phpcms/libs/functions/global.func.php
其中是template的定义,关于template的功能,通过解析
模板中的标签生成html标记内容,关于template的具体
生成静态页面的过程:
首先判断的是是否为plugin的模板,加载时的路径要正确。
接下来做的是判断缓存中是否有已经编译好的模板文件,
如果有编译好的模板文件,则使用编译好的模板文件,如果
没有编译好的模板文件则重新编译生成。具体的细节在代码中
通过file_exists检测是否存在编译好的模板文件,使用template_cache
编译模板,template_cache类的路径
phpcms/libs/classes/template_cache.class.php
生成首页操作中传递给template_cache类中的
template_compile方法的参数为
意思是tempalate/default/content
下的index.html,使用的style是
default的。
模板编译过程中使用的函数
preg_replace — 执行一个正则表达式的搜索和替换
执行过template_parse后的结果是生成
缓存用的php文件。
这些内容的路径为
phpcmsv9/caches/caches_template/default/content/index.php header.php footer.php
编译后的是替换掉pc标签的
php文件,是面向对象风格
的php文件,其中使用的是
php中的函数和在phpcms中