代码: |
<?php require("./template.php"); //由html生成的php文件的前缀,区别使用多种风格. $tpl_prefix = "default"; //模板文件名 $tpl_index = "index"; $tpl = new Template($tpl_prefix); $cats = array( array("forum_id"=>"1","forum_cat_id"=>"0","forum_name"=>"PHP学习"), array("forum_id"=>"2","forum_cat_id"=>"0","forum_name"=>"MYSQL学习") ); $forums = array( array("forum_id"=>"3","forum_cat_id"=>"1","forum_name"=>"PHP高级教程"), array("forum_id"=>"4","forum_cat_id"=>"1","forum_name"=>"PHP初级教程"), array("forum_id"=>"5","forum_cat_id"=>"2","forum_name"=>"MYSQL相关资料") ); if ($cats) { if ($tpl->chk_cache($tpl_index))//检查判断是否需要重新生产PHP模板文件. { $tpl->load_tpl($tpl_index);//加载html模板文件. //替换PHP语句 $tpl->assign_block("{block_cat}","<?foreach($cats as $cat) {?>"); $tpl->assign_block("{/block_cat}","<?}?>"); $tpl->assign_block("{block_forum}","<?foreach($forums as $forum) { if($forum["forum_cat_id"] == $cat["forum_id"]) {?>"); $tpl->assign_block("{/block_forum}","<?} }?>"); //生产PHP模板文件. $tpl->write_cache($tpl_index); } } //包含PHP模板文件. include($tpl->parse_tpl($tpl_index)); ?> |
代码: |
{block_cat} <table width="100%" border="0" cellspacing="1" cellpadding="1" bgcolor="#000000" align="center"> <tr align="{=TR_ALING}" bgcolor="#FFFFFF"> <td colspan="6"><span class="title"><b>{=$cat["forum_name"]}</b></span></td> </tr> {block_forum} <tr bgcolor="#FFFFFF"> <td valign="top">{=$forum["forum_name"]}</td> </tr> {/block_forum} </table> <br> {/block_cat} |
代码: |
<?foreach($cats as $cat) {?> <table width="100%" border="0" cellspacing="1" cellpadding="1" bgcolor="#000000" align="center"> <tr align="<?=TR_ALING?>" bgcolor="#FFFFFF"> <td colspan="6"><span class="title"><b><?=$cat["forum_name"]?></b></span></td> </tr> <?foreach($forums as $forum) { if($forum["forum_cat_id"] == $cat["forum_id"]) {?> <tr bgcolor="#FFFFFF"> <td valign="top"><?=$forum["forum_name"]?></td> </tr> <?} }?> </table> <br> <?}?> |
代码: |
<?php /********************************************************************************* * 模板类(Template) * 最后修改时间:2004.4.07 本论坛使用 * * * **********************************************************************************/ class Template { //$this->$template,储存模板数据. var $template = ""; //模板路径. var $tpl_path = ""; //模板前缀(风格名称). var $tpl_prefix = ""; //cache路径(编译后的路径). var $cache_path = ""; //css文件路径. var $css_path = ""; //header文件路径. var $header_path = ""; //footer文件路径 var $footer_path = ""; /** * 初始化模板路径. */ function Template($root = "default") { //模板前缀(风格名称). $this->tpl_prefix = $root; //模板文件路径. $this->tpl_path = "./templates/" . $root . "/"; //生成的PHP文件存放路径. $this->cache_path = "./template_data/" .$this->tpl_prefix . "_"; return true; } /** * chk_cache,检查"编译"后的模板是否需要更新,判断依据:最后修改时间,"编译"文件是否存在. */ function chk_cache($tpl_index) { $tpl_file = $this->tpl_path . $tpl_index . ".html"; $cache_file = $this->cache_path . $tpl_index . ".php"; //判断是否需要更新. if(!file_exists($cache_file)) { return true; } elseif(filemtime($tpl_file) > filemtime($cache_file)) { return true; } } /** * 输出模板文件. */ function parse_tpl($tpl_index,$message="") { return $this->cache_path . $tpl_index . ".php"; } /** * 加载模板文件. */ function load_tpl($tpl_index) { $tpl_file = $this->tpl_path . $tpl_index . ".html"; $fp = fopen($tpl_file, "r"); $this->template = fread($fp, filesize($tpl_file)); fclose($fp); } /** * 替换变量,并且"编译"模板. */ function write_cache($tpl_index) { $cache_file = $this->cache_path . $tpl_index . ".php"; //变量显示. $this->template = preg_replace("/({=)(.+?)(})/is", "<?=\2?>", $this->template); //界面语言替换. $this->template = preg_replace("/{lang +(.+?)}/ies", "$lang["main"]["\1"]", $this->template); $fp = fopen($cache_file, "w"); flock($fp, 3); fwrite($fp, $this->template); fclose($fp); } /** * 替换block. */ function assign_block($search,$replace) { $this->template = str_replace($search,$replace,$this->template); } } ?> |