phpcmsv9后台管理生成首页静态模板技术ob系列函数实现
来源:互联网 发布:java三元运算符 编辑:程序博客网 时间:2024/06/03 20:07
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中定义
的类和方法, 通过include方式
把编译后的文件执行结果放到
缓冲区中,通过ob_get_content
得到这个结果,再写入到index.html
文件中,达到静态化的目的。
附:编译后的模板内容<?php defined('IN_PHPCMS') or exit('No permission resources.'); ?>
<?php include template("content","header"); ?>
<!--main-->
<div class="main">
<div class="col-left">
<div class="news-hot">
<div class="content">
<?php if(defined('IN_ADMIN') && !defined('HTML')) {echo "<div class=\"admin_piao\" pc_action=\"content\" data=\"op=content&tag_md5=79d92623a8337007f1f3bcdd35d5f304&action=position&posid=2&order=listorder+DESC&num=4\"><a href=\"javascript:void(0)\" class=\"admin_piao_edit\">修改</a>";}$content_tag = pc_base::load_app_class("content_tag", "content");if (method_exists($content_tag, 'position')) {$data = $content_tag->position(array('posid'=>'2','order'=>'listorder DESC','limit'=>'4',));}?>
<?php $n=1;if(is_array($data)) foreach($data AS $r) { ?>
<h4 class="blue"><a href="<?php echo $r['url'];?>" title="<?php echo $r['title'];?>"><?php echo str_cut($r[title],36,'');?></a></h4>
<p><?php if($n==1) { ?><img src="<?php echo thumb($r[thumb],90,60);?>" width="90" height="60"/><?php } ?><?php echo str_cut($r[description],112);?></p>
<div class="bk20 hr"><hr /></div>
<?php $n++;}unset($n); ?>
<?php if(defined('IN_ADMIN') && !defined('HTML')) {echo '</div>';}?>
</div>
</div>
<div class="slide">
<div class="FocusPic">
<?php if(defined('IN_ADMIN') && !defined('HTML')) {echo "<div class=\"admin_piao\" pc_action=\"content\" data=\"op=content&tag_md5=dcd1c47627b910509414b85662be50cc&action=position&posid=1&order=listorder+DESC&thumb=1&num=5\"><a href=\"javascript:void(0)\" class=\"admin_piao_edit\">修改</a>";}$content_tag = pc_base::load_app_class("content_tag", "content");if (method_exists($content_tag, 'position')) {$data = $content_tag->position(array('posid'=>'1','order'=>'listorder DESC','thumb'=>'1','limit'=>'5',));}?>
<div class="content" id="main-slide">
<div class="changeDiv">
<?php $n=1;if(is_array($data)) foreach($data AS $r) { ?>
<a href="<?php echo $r['url'];?>" title="<?php echo str_cut($r['title'],30);?>"><img src="<?php echo thumb($r['thumb'],310,260);?>" alt="<?php echo $r['title'];?>" width="310" height="260" /></a>
<?php $n++;}unset($n); ?>
</div>
</div>
<?php if(defined('IN_ADMIN') && !defined('HTML')) {echo '</div>';}?>
</div>
<div class="bk10"></div>
<div class="box extend">
<div class="col-left">争议</div>
<div class="col-auto">
<?php if(defined('IN_ADMIN') && !defined('HTML')) {echo "<div class=\"admin_piao\" pc_action=\"block\" data=\"op=block&tag_md5=62e5ac893abc3866a6bda2553c0a156a&pos=index_block_1\"><a href=\"javascript:void(0)\" class=\"admin_piao_edit\">添加碎片</a>";}$block_tag = pc_base::load_app_class('block_tag', 'block');echo $block_tag->pc_tag(array('pos'=>'index_block_1',));?><?php if(defined('IN_ADMIN') && !defined('HTML')) {echo '</div>';}?>
</div>
<script language="javascript" src="<?php echo APP_PATH;?>caches/poster_js/10.js"></script>
</div>
</div>
<div class="bk10"></div>
<div class="box">
<h5>图片新闻</h5>
<?php if(defined('IN_ADMIN') && !defined('HTML')) {echo "<div class=\"admin_piao\" pc_action=\"content\" data=\"op=content&tag_md5=2d4b9e3c7c2cc4bd0cec8b1fac9ae764&action=position&posid=12&thumb=1&order=listorder+DESC&num=10\"><a href=\"javascript:void(0)\" class=\"admin_piao_edit\">修改</a>";}$content_tag = pc_base::load_app_class("content_tag", "content");if (method_exists($content_tag, 'position')) {$data = $content_tag->position(array('posid'=>'12','thumb'=>'1','order'=>'listorder DESC','limit'=>'10',));}?>
<ul class="content news-photo picbig">
<?php $n=1;if(is_array($data)) foreach($data AS $r) { ?>
<li>
<div class="img-wrap">
<a href="<?php echo $r['url'];?>" title="<?php echo $r['title'];?>"><img src="<?php echo thumb($r[thumb],110,0);?>" title="<?php echo $r['title'];?>"/></a>
</div>
<a href="<?php echo $r['url'];?>" title="<?php echo $r['title'];?>"><?php echo str_cut($r[title],20);?></a>
</li>
<?php $n++;}unset($n); ?>
</ul>
<?php if(defined('IN_ADMIN') && !defined('HTML')) {echo '</div>';}?>
</div>
<div class="bk10"></div>
<?php $n=1;if(is_array(subcat(0,0,0,$siteid))) foreach(subcat(0,0,0,$siteid) AS $r) { ?>
<?php $num++?>
<div class="box cat-area" <?php if($num%2!=0) { ?>style=" margin-right:10px"<?php } ?>>
<h5 class="title-1"><?php echo $r['catname'];?><a href="<?php echo $r['url'];?>" class="more">更多>></a></h5>
<div class="content">
<?php if(defined('IN_ADMIN') && !defined('HTML')) {echo "<div class=\"admin_piao\" pc_action=\"content\" data=\"op=content&tag_md5=ef41dd2190feee94486d0264e7354ef2&action=lists&catid=%24r%5Bcatid%5D&order=updatetime+DESC&thumb=1&num=1&return=info\"><a href=\"javascript:void(0)\" class=\"admin_piao_edit\">修改</a>";}$content_tag = pc_base::load_app_class("content_tag", "content");if (method_exists($content_tag, 'lists')) {$info = $content_tag->lists(array('catid'=>$r[catid],'order'=>'updatetime DESC','thumb'=>'1','limit'=>'1',));}?>
<?php $n=1;if(is_array($info)) foreach($info AS $v) { ?>
<p>
<img src="<?php echo thumb($v[thumb],90,0);?>" width="90" height="60"/>
<strong><a href="<?php echo $v['url'];?>" target="_blank" title="<?php echo $v['title'];?>"<?php echo title_style($v[style]);?>><?php echo str_cut($v['title'],28);?></a></strong><br /><?php echo str_cut($v['description'],100);?>
</p>
<?php $n++;}unset($n); ?>
<?php if(defined('IN_ADMIN') && !defined('HTML')) {echo '</div>';}?>
<div class="bk15 hr"></div>
<?php if(defined('IN_ADMIN') && !defined('HTML')) {echo "<div class=\"admin_piao\" pc_action=\"content\" data=\"op=content&tag_md5=d9a5a0d61f080dbce4b2774d783edd34&action=lists&catid=%24r%5Bcatid%5D&num=5&order=id+DESC&return=info\"><a href=\"javascript:void(0)\" class=\"admin_piao_edit\">修改</a>";}$content_tag = pc_base::load_app_class("content_tag", "content");if (method_exists($content_tag, 'lists')) {$info = $content_tag->lists(array('catid'=>$r[catid],'order'=>'id DESC','limit'=>'5',));}?>
<ul class="list lh24 f14">
<?php $n=1;if(is_array($info)) foreach($info AS $v) { ?>
<li>·<a href="<?php echo $v['url'];?>" target="_blank" title="<?php echo $v['title'];?>"<?php echo title_style($v[style]);?>><?php echo str_cut($v['title'],40);?></a></li>
<?php $n++;}unset($n); ?>
</ul>
<?php if(defined('IN_ADMIN') && !defined('HTML')) {echo '</div>';}?>
</div>
</div>
<?php if($num%2==0) { ?><div class="bk10"></div><?php } ?>
<?php $n++;}unset($n); ?>
</div>
<div class="col-auto">
<div class="box">
<h5 class="title-2">公告<a href="" class="more"> </a></h5>
<div class="content">
<?php if(defined('IN_ADMIN') && !defined('HTML')) {echo "<div class=\"admin_piao\" pc_action=\"announce\" data=\"op=announce&tag_md5=54b0fffbbaac31bf6b88d6a6b5be8f2c&action=lists&siteid=%24siteid&num=2\"><a href=\"javascript:void(0)\" class=\"admin_piao_edit\">修改</a>";}$announce_tag = pc_base::load_app_class("announce_tag", "announce");if (method_exists($announce_tag, 'lists')) {$data = $announce_tag->lists(array('siteid'=>$siteid,'limit'=>'2',));}?>
<ul class="list lh24 f14">
<?php $n=1;if(is_array($data)) foreach($data AS $r) { ?>
<li> <a href="<?php echo APP_PATH;?>index.php?m=announce&c=index&a=show&aid=<?php echo $r['aid'];?>"><?php echo $r['title'];?></a></li>
<?php $n++;}unset($n); ?>
</ul>
<?php if(defined('IN_ADMIN') && !defined('HTML')) {echo '</div>';}?>
</div>
</div>
<div class="bk10"></div>
<div class="box">
<h5 class="title-2">专题<a href="<?php echo APP_PATH;?>index.php?m=special&c=index&a=special&siteid=<?php echo $siteid;?>" class="more">更多>></a></h5>
<div class="content special">
<?php if(defined('IN_ADMIN') && !defined('HTML')) {echo "<div class=\"admin_piao\" pc_action=\"special\" data=\"op=special&tag_md5=d0da2a95c4fd410d9fde0a59d59f48fc&action=lists&siteid=%24siteid&elite=1&listorder=3&num=2\"><a href=\"javascript:void(0)\" class=\"admin_piao_edit\">修改</a>";}$special_tag = pc_base::load_app_class("special_tag", "special");if (method_exists($special_tag, 'lists')) {$data = $special_tag->lists(array('siteid'=>$siteid,'elite'=>'1','listorder'=>'3','limit'=>'2',));}?>
<?php $n=1;if(is_array($data)) foreach($data AS $r) { ?>
<?php if($n!=1) { ?><div class="hr bk15"></div><?php } ?>
<p style="margin:0">
<a href="<?php echo $r['url'];?>"><img src="<?php echo $r['thumb'];?>" width="90" height="70" /></a>
<strong><a href="<?php echo $r['url'];?>"><?php echo str_cut($r[title],'18');?></a></strong><br /><?php echo str_cut($r['description'],50);?>
</p>
<?php $n++;}unset($n); ?>
<?php if(defined('IN_ADMIN') && !defined('HTML')) {echo '</div>';}?>
</div>
</div>
<div class="bk10"></div>
<div class="box">
<h5 class="title-2"><span class="rt fn f12 tab SwapTab"><span class="fb">热点</span> | <span >评论</span> | <span>关注</span></span>排行</h5>
<div class="tab-content">
<ul class="content digg">
<?php if(defined('IN_ADMIN') && !defined('HTML')) {echo "<div class=\"admin_piao\" pc_action=\"content\" data=\"op=content&tag_md5=97849c6fb7d3e0f9a0891295340b6456&action=hits&catid=6&num=10&order=views+DESC\"><a href=\"javascript:void(0)\" class=\"admin_piao_edit\">修改</a>";}$content_tag = pc_base::load_app_class("content_tag", "content");if (method_exists($content_tag, 'hits')) {$data = $content_tag->hits(array('catid'=>'6','order'=>'views DESC','limit'=>'10',));}?>
<?php $n=1;if(is_array($data)) foreach($data AS $r) { ?>
<li><a href="<?php echo $r['url'];?>" target="_blank" title="<?php echo $r['title'];?>"<?php echo title_style($r[style]);?>><?php echo $r['title'];?></a></li>
<?php $n++;}unset($n); ?>
<?php if(defined('IN_ADMIN') && !defined('HTML')) {echo '</div>';}?>
</ul>
<ul class="content digg hidden">
<?php if(defined('IN_ADMIN') && !defined('HTML')) {echo "<div class=\"admin_piao\" pc_action=\"comment\" data=\"op=comment&tag_md5=55e75bfad540869982aca092575756e4&action=bang&num=10&cache=3600\"><a href=\"javascript:void(0)\" class=\"admin_piao_edit\">修改</a>";}$tag_cache_name = md5(implode('&',array()).'55e75bfad540869982aca092575756e4');if(!$data = tpl_cache($tag_cache_name,3600)){$comment_tag = pc_base::load_app_class("comment_tag", "comment");if (method_exists($comment_tag, 'bang')) {$data = $comment_tag->bang(array('limit'=>'10',));}if(!empty($data)){setcache($tag_cache_name, $data, 'tpl_data');}}?>
<?php $n=1;if(is_array($data)) foreach($data AS $r) { ?>
<li><a href="<?php echo $r['url'];?>" target="_blank"><?php echo $r['title'];?></a></li>
<?php $n++;}unset($n); ?>
<?php if(defined('IN_ADMIN') && !defined('HTML')) {echo '</div>';}?>
</ul>
<ul class="content digg hidden">
<?php if(defined('IN_ADMIN') && !defined('HTML')) {echo "<div class=\"admin_piao\" pc_action=\"content\" data=\"op=content&tag_md5=97849c6fb7d3e0f9a0891295340b6456&action=hits&catid=6&num=10&order=views+DESC\"><a href=\"javascript:void(0)\" class=\"admin_piao_edit\">修改</a>";}$content_tag = pc_base::load_app_class("content_tag", "content");if (method_exists($content_tag, 'hits')) {$data = $content_tag->hits(array('catid'=>'6','order'=>'views DESC','limit'=>'10',));}?>
<?php $n=1;if(is_array($data)) foreach($data AS $r) { ?>
<li><a href="<?php echo $r['url'];?>" target="_blank"><?php echo $r['title'];?></a></li>
<?php $n++;}unset($n); ?>
<?php if(defined('IN_ADMIN') && !defined('HTML')) {echo '</div>';}?>
</ul>
</div>
</div><div class="bk10"></div>
<div class="box">
<h5 class="title-2">调查问卷<a href="<?php echo APP_PATH;?>index.php?m=vote&c=index&siteid=<?php echo $siteid;?>" class="more">更多>></a></h5>
<script language="javascript" src="<?php echo APP_PATH;?>index.php?m=vote&c=index&a=show&action=js&subjectid=1&type=3"></script>
</div>
</div>
<div class="bk10"></div>
<div class="box blogroll ylink">
<h5><a href="<?php echo APP_PATH;?>index.php?m=link&siteid=<?php echo $siteid;?>" hidefocus="true" class="rt">更多>></a>友情链接<a href="<?php echo APP_PATH;?>index.php?m=link&c=index&a=register&siteid=<?php echo $siteid;?>" class="red">申请链接</a></h5>
<div class="bk10"></div>
<ul class="colli imgul">
<?php if(defined('IN_ADMIN') && !defined('HTML')) {echo "<div class=\"admin_piao\" pc_action=\"link\" data=\"op=link&tag_md5=80574ec69aa2a6c10ed30f7c49e0eda7&action=type_list&siteid=%24siteid&linktype=1&order=listorder+DESC&num=8&return=pic_link\"><a href=\"javascript:void(0)\" class=\"admin_piao_edit\">修改</a>";}$link_tag = pc_base::load_app_class("link_tag", "link");if (method_exists($link_tag, 'type_list')) {$pic_link = $link_tag->type_list(array('siteid'=>$siteid,'linktype'=>'1','order'=>'listorder DESC','limit'=>'8',));}?>
<?php $n=1;if(is_array($pic_link)) foreach($pic_link AS $v) { ?>
<li><a href="<?php echo $v['url'];?>" title="<?php echo $v['name'];?>" target="_blank"><img src="<?php echo $v['logo'];?>" width="88" height="31" /></a></li>
<?php $n++;}unset($n); ?>
<?php if(defined('IN_ADMIN') && !defined('HTML')) {echo '</div>';}?>
</ul>
<?php if(defined('IN_ADMIN') && !defined('HTML')) {echo "<div class=\"admin_piao\" pc_action=\"link\" data=\"op=link&tag_md5=99c32cd273c57223c20074bf5196e97a&action=type_list&siteid=%24siteid&order=listorder+DESC&num=10&return=dat\"><a href=\"javascript:void(0)\" class=\"admin_piao_edit\">修改</a>";}$link_tag = pc_base::load_app_class("link_tag", "link");if (method_exists($link_tag, 'type_list')) {$dat = $link_tag->type_list(array('siteid'=>$siteid,'order'=>'listorder DESC','limit'=>'10',));}?>
<div class="bk10"></div>
<div class="linka">
<?php $n=1;if(is_array($dat)) foreach($dat AS $v) { ?>
<?php if($type==0) { ?>
<a href="<?php echo $v['url'];?>" target="_blank"><?php echo $v['name'];?></a> |
<?php } else { ?>
<a href="<?php echo $v['url'];?>" target="_blank"><img src="<?php echo $v['logo'];?>" width="88" height="31" style="border: 1px solid #FFBE7A;"></a>
<?php } ?>
<?php $n++;}unset($n); ?>
</div>
<?php if(defined('IN_ADMIN') && !defined('HTML')) {echo '</div>';}?>
</div>
</div>
<script type="text/javascript">
$(function(){
new slide("#main-slide","cur",310,260,1);//焦点图
new SwapTab(".SwapTab","span",".tab-content","ul","fb");//排行TAB
})
</script>
<?php include template("content","footer"); ?>
- phpcmsv9后台管理生成首页静态模板技术ob系列函数实现
- PHPCMSv9修改后台首页
- PHPCMSV9首页实现滚动
- 使用ob缓冲技术实现页面真静态
- PHP中ob系列函数讲解(浏览器缓存技术)
- PHP中ob系列函数
- php ob系列的函数
- PHP ob系列函数详解
- PHP中的ob系列函数
- PHP中的ob系列函数
- 使用php中ob函数和file_put_contents生成简单静态页的类
- PHP缓存技术OB系统函数--静态缓存与局部缓存
- 用dtree生成后台管理菜单模板
- ob系列函数中常用函数集锦
- 函数模板、类模板生成静态库
- ob缓存函数使用-【页面静态化】
- php真静态缓存 ob系统函数
- ob缓存实现页面静态化
- weblogic输出图片
- 《改善javascript程序的188个建议》摘抄
- Java中的main方法
- illegal zero-length identifier
- 时间都去哪了?—致我在传智的点滴
- phpcmsv9后台管理生成首页静态模板技术ob系列函数实现
- c++ 11 新特性
- 当我们还年轻
- 禁用浏览器缓存
- getRealPath与getContextPath说明
- 怎样从android菜鸟到android大神
- 使用asmlib配置asm
- keil RTX TCP/UDP 报错
- NSString为什么使用copy