再次麻烦各位了~ 照别人的样子,自己写了一段程序与模版分离的code可是并没有多大效果,似乎和直接require_once 的效果差不多!贴出来请大家看看~ 主要问题:看别人的*.htm的模版里 $???? 有效果,比如在index.htm里的<title>$title</title> 到index.php里require_once template('index');一下就可以把模版装进来,但进来以后 我的IE头部显示的是“$title”,而不是$title的值!所以请大家帮一下看看! 自学是比较痛苦的,知其然而不知其所以然,走了不少弯路,高手帮下吧! 下面贴一下code: 代码: function template($template,$EXT='htm'){ global $options; if (!$template) { $template = 'none'; } $path = EDOO_ROOT."./templates/".$options['templatename']."/".$template.".".$EXT; if (!file_exists($path)) { $path = EDOO_ROOT.'./templates/default/'.$template.'.'.$EXT; } return $path; } 请大家看一下哈~怎么实现我上面说的功能!让require_once 进来的静态模版里的函数显示其值! :lovely:
没看出啥问题。。。不过看样式好像是phpwind的模板风格。 PHP: <!-- <?php print <<<EOT --> <title>$title</title> <!-- EOT; ?> 模板做成这个样子看看。
上面的是sablog里的! 用print <<<EOT 似乎可以的吧~~ sablog的模版也是用的print <<<EOT 不过我不会! 再请教一下哈! 我从Discuz里抠出了它用于分离模版的部分!并放到了我的common.php里!可遇到了以下问题: 代码: Warning: main(C:\Documents and Settings\XLEdoo\My Documents\wwwroot\./forumdata/templates/1_index.tpl.php): failed to open stream: No such file or directory in C:\Documents and Settings\XLEdoo\My Documents\wwwroot\index.php on line 14 Fatal error: main(): Failed opening required 'C:\Documents and Settings\XLEdoo\My Documents\wwwroot\./forumdata/templates/1_index.tpl.php' (include_path='.;c:\php4\pear') in C:\Documents and Settings\XLEdoo\My Documents\wwwroot\index.php on line 14 查了一下资料,据说是权限的问题!不过我用的是XP的系统FAT32的分区,应该不存在权限问题的啊!而且我马上安装了DZ进行测试,DZ就能成功生成*.tpl.php的文件!而我抠出来的就不行! 而且我按照它的错误提示建立了./forumdata/templates/1_index.tpl.php 这个文件,建立以后错误没有了!可是文件还是空的,打开IE也是一片空白,模版根本没有写进去!不知道为什么!但估计不是权限的问题,因为DZ正常工作,难道我抠出来的东西还缺少什么?DZ里有没有设置写入权限的code呢? 下面是我抠出来的code: 代码: function language($file, $templateid = 0, $tpldir = '') { $tpldir = $tpldir ? $tpldir : TPLDIR; $templateid = $templateid ? $templateid : TEMPLATEID; $languagepack = DISCUZ_ROOT.'./'.$tpldir.'/'.$file.'.lang.php'; if(file_exists($languagepack)) { return $languagepack; } elseif($templateid != 1 && $tpldir != './templates/default') { return language($file, 1, './templates/default'); } else { return FALSE; } } function template($file, $templateid = 0, $tpldir = '') { global $tplrefresh; $tpldir = $tpldir ? $tpldir : TPLDIR; $templateid = $templateid ? $templateid : TEMPLATEID; $tplfile = DISCUZ_ROOT.'./'.$tpldir.'/'.$file.'.htm'; $objfile = DISCUZ_ROOT.'./forumdata/templates/'.$templateid.'_'.$file.'.tpl.php'; if(TEMPLATEID != 1 && $templateid != 1 && !file_exists($tplfile)) { return template($file, 1, './templates/default/'); } if($tplrefresh == 1 || ($tplrefresh > 1 && substr($GLOBALS['timestamp'], -1) > $tplrefresh)) { if(@filemtime($tplfile) > @filemtime($objfile)) { require_once DISCUZ_ROOT.'./include/template.func.php'; parse_template($file, $templateid, $tpldir); } } return $objfile; } 上面的code再加上template.func.php ,应该就是DZ的分离模版的系统了~还缺什么吗? 大家请帮看一下!
有进展了! 大家看一下 index.html 代码: <html> <head> <title>{title}</title> </head> <body> {main} </body> </html> index.php 代码: <?php function template($skin){ $data=file_get_contents($skin); $str = preg_replace('/{([a-zA-Z]+)}/','<?php echo $GLOBALS[\'\\1\']; ?>',"\r\n?>\r\n".$data."\r\n<?php\r\n"); return eval($str); } $title='标题'; $main='内容'; template('index.html'); ?>