phpcmsv9后台管理生成首页静态模板技术ob系列函数实现

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方法的参数为

content/index/default


意思是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中

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值