返回   CHF站长论坛 > 综合讨论区 > 网站开发与设计

网站开发与设计 网页设计、网站开发、网站维护与调试交流区。

双至强仅二千,企商在线,最早租用商 魔兽世界私服 魔兽世界私服 亿恩1元帮您升级服务器! 天龙八部私服 完美世界私服 新开传奇私服
传奇私服 热血江湖私服 仙境私服 天龙八部私服 魔域私服 魔域私服 新开传奇私服 魔域私服 传奇私服
发表新主题 回复
 
主题工具 主题评分 显示模式
旧 2006-05-21, 16:37   #1 (页面定位)
xledoo
 
xledoo 的头像
 
注册日期: 2005-11-15
帖子: 109
xledoo 是普普通通的会员
默认 哪位大哥能说说Discuz的程序和摸版分离是如何实现的?

如题~想学习一下!可我初学,不太懂,怎么实现程序和摸版分离呀?

PHP的程序是如何调用静态摸版的?

请知道的大哥给说一下~感激!

比较笨,尽量清楚一下~谢谢了!


独乐乐不如众乐乐
xledoo 当前离线   回复时引用此帖
旧 2006-05-21, 19:28   #2 (页面定位)
小叶
 
注册日期: 2005-09-04
住址: 火星人
帖子: 17760
小叶 是一位成功的新星小叶 是一位成功的新星小叶 是一位成功的新星小叶 是一位成功的新星小叶 是一位成功的新星小叶 是一位成功的新星小叶 是一位成功的新星小叶 是一位成功的新星小叶 是一位成功的新星小叶 是一位成功的新星小叶 是一位成功的新星
默认

dz自己又独立的模版体系,去看看代码就知道。


匆匆人生中,你做了几件令自己骄傲的事呢?
小叶 当前离线   回复时引用此帖
旧 2006-05-21, 19:29   #3 (页面定位)
小叶
 
注册日期: 2005-09-04
住址: 火星人
帖子: 17760
小叶 是一位成功的新星小叶 是一位成功的新星小叶 是一位成功的新星小叶 是一位成功的新星小叶 是一位成功的新星小叶 是一位成功的新星小叶 是一位成功的新星小叶 是一位成功的新星小叶 是一位成功的新星小叶 是一位成功的新星小叶 是一位成功的新星
默认

php调用模版最简单就用file函数读取进来,
读取数据库替换模版的标签。


匆匆人生中,你做了几件令自己骄傲的事呢?
小叶 当前离线   回复时引用此帖
旧 2006-05-22, 21:55   #4 (页面定位)
zmnet
 
注册日期: 2006-05-03
帖子: 7338
zmnet 有着超越历史的辉煌成就zmnet 有着超越历史的辉煌成就zmnet 有着超越历史的辉煌成就zmnet 有着超越历史的辉煌成就zmnet 有着超越历史的辉煌成就zmnet 有着超越历史的辉煌成就zmnet 有着超越历史的辉煌成就zmnet 有着超越历史的辉煌成就zmnet 有着超越历史的辉煌成就zmnet 有着超越历史的辉煌成就zmnet 有着超越历史的辉煌成就
默认

牛小叶
zmnet 当前在线   回复时引用此帖
旧 2006-05-24, 04:21   #5 (页面定位)
xledoo
 
xledoo 的头像
 
注册日期: 2005-11-15
帖子: 109
xledoo 是普普通通的会员
默认

对高手而言可能很简单~~我初学PHP~在DZ的论坛上问这个问题问了几天都没人回答!唉~还是这里比较热情!

请高手再帮个忙!简单的示范一下吧!
比如列举几个要用到的函数~然后说说注意什么问题!

我还以为摸版可以直接include进来,可试了以后include进来摸版里的函数都不能用!有点笨哈!自学是这样的!所以希望有人指点一下下!


独乐乐不如众乐乐
xledoo 当前离线   回复时引用此帖
旧 2006-05-24, 04:31   #6 (页面定位)
xledoo
 
xledoo 的头像
 
注册日期: 2005-11-15
帖子: 109
xledoo 是普普通通的会员
默认

从最初来到论坛开始对论坛的影象就是”小叶“。。。。
总是不停的在回帖子。。。
每个版块都有。。。
小叶是超人???


独乐乐不如众乐乐
xledoo 当前离线   回复时引用此帖
旧 2006-05-24, 07:55   #7 (页面定位)
dwenlee
 
dwenlee 的头像
 
注册日期: 2005-09-07
帖子: 91
dwenlee 是普普通通的会员
默认

引用:
作者: xledoo
从最初来到论坛开始对论坛的影象就是”小叶“。。。。
总是不停的在回帖子。。。
每个版块都有。。。
小叶是超人???
小叶是超人中的超人
dwenlee 当前离线   回复时引用此帖
旧 2006-05-24, 08:36   #8 (页面定位)
小叶
 
注册日期: 2005-09-04
住址: 火星人
帖子: 17760
小叶 是一位成功的新星小叶 是一位成功的新星小叶 是一位成功的新星小叶 是一位成功的新星小叶 是一位成功的新星小叶 是一位成功的新星小叶 是一位成功的新星小叶 是一位成功的新星小叶 是一位成功的新星小叶 是一位成功的新星小叶 是一位成功的新星
默认

引用:
作者: xledoo
对高手而言可能很简单~~我初学PHP~在DZ的论坛上问这个问题问了几天都没人回答!唉~还是这里比较热情!

请高手再帮个忙!简单的示范一下吧!
比如列举几个要用到的函数~然后说说注意什么问题!

我还以为摸版可以直接include进来,可试了以后include进来摸版里的函数都不能用!有点...
偶也不太懂,只是发贴比较多,还是去官方混吧。。这里技术太菜鸟。


匆匆人生中,你做了几件令自己骄傲的事呢?
小叶 当前离线   回复时引用此帖
旧 2006-05-24, 13:42   #9 (页面定位)
web95
 
注册日期: 2006-05-23
帖子: 14
web95 是普普通通的会员
默认

应该是通过函数提取值
.....................................................................................................................


http://www.volit.com/images/zhengjian/icp.jpg
1G 才100块!可分10个不同的空间.
有需要的朋友可以联系
QQ:504745210 515951150
web95 当前离线   回复时引用此帖
旧 2006-05-24, 16:11   #10 (页面定位)
xledoo
 
xledoo 的头像
 
注册日期: 2005-11-15
帖子: 109
xledoo 是普普通通的会员
默认

官方的人不厚道!!!高手不愿意帮别人,菜鸟又不懂!哎!自己研究~

有人提过MVC来实现,不过MVC不属于初学范围!!


独乐乐不如众乐乐
xledoo 当前离线   回复时引用此帖
旧 2006-05-24, 17:03   #11 (页面定位)
著名混混
 
注册日期: 2006-03-22
帖子: 290
著名混混 正向着好的方向发展著名混混 正向着好的方向发展
默认

asp里是写类,将标签生成写成类,大致也就是些替换了,比如

aa=replace(aa,"<title>bb</title>","{bb}")

,以上是个比较简单得,替换页面标题得,这样就程序和代码分离了。。

php也是如此
著名混混 当前离线   回复时引用此帖
旧 2006-05-25, 20:23   #12 (页面定位)
yeshou
 
yeshou 的头像
 
注册日期: 2005-09-06
帖子: 7033
yeshou 有着人尽皆知的贡献和荣耀yeshou 有着人尽皆知的贡献和荣耀yeshou 有着人尽皆知的贡献和荣耀yeshou 有着人尽皆知的贡献和荣耀yeshou 有着人尽皆知的贡献和荣耀yeshou 有着人尽皆知的贡献和荣耀yeshou 有着人尽皆知的贡献和荣耀yeshou 有着人尽皆知的贡献和荣耀yeshou 有着人尽皆知的贡献和荣耀yeshou 有着人尽皆知的贡献和荣耀yeshou 有着人尽皆知的贡献和荣耀
默认

includes/template.func.php里的function parse_template


这家伙太懒,什么也没留下
yeshou 当前离线   回复时引用此帖
旧 2006-05-26, 15:29   #13 (页面定位)
tetra
 
tetra 的头像
 
注册日期: 2006-03-22
帖子: 50
tetra 是普普通通的会员
默认

tetra 当前离线   回复时引用此帖
旧 2006-05-27, 00:06   #14 (页面定位)
xledoo
 
xledoo 的头像
 
注册日期: 2005-11-15
帖子: 109
xledoo 是普普通通的会员
默认

PHP 代码:
<?php

/*
    [Discuz!] (C)2001-2006 Comsenz Inc.
    This is NOT a freeware, use is subject to license terms

    $RCSfile: template.func.php,v $
    $Revision: 1.3 $
    $Date: 2006/02/23 13:44:02 $
*/

if(!defined('IN_DISCUZ')) {
    exit(
'Access Denied');
}

function 
parse_template($file$templateid$tpldir) {
    global 
$language;

    
$nest 5;
    
$tplfile DISCUZ_ROOT."./$tpldir/$file.htm";
    
$objfile DISCUZ_ROOT."./forumdata/templates/{$templateid}_$file.tpl.php";

    if(!@
$fp fopen($tplfile'r')) {
        
dexit("Current template file './$tpldir/$file.htm' not found or have no access!");
    } elseif(!include_once 
language('templates'$templateid$tpldir)) {
        
dexit("<br>Current template pack do not have a necessary language file 'templates.lang.php' or have syntax error!");
    }

    
$template fread($fpfilesize($tplfile));
    
fclose($fp);

    
$var_regexp "((\\\$[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*)(\[[a-zA-Z0-9_\-\.\"\'\[\]\$\x7f-\xff]+\])*)";
    
$const_regexp "([a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*)";

    
$template preg_replace("/([\n\r]+)\t+/s""\\1"$template);
    
$template preg_replace("/\<\!\-\-\{(.+?)\}\-\-\>/s""{\\1}"$template);
    
$template preg_replace("/\{lang\s+(.+?)\}/ies""languagevar('\\1')"$template);
    
$template str_replace("{LF}""<?=\"\\n\"?>"$template);

    
$template preg_replace("/\{(\\\$[a-zA-Z0-9_\[\]\'\"\$\.\x7f-\xff]+)\}/s""<?=\\1?>"$template);
    
$template preg_replace("/$var_regexp/es""addquote('<?=\\1?>')"$template);
    
$template preg_replace("/\<\?\=\<\?\=$var_regexp\?\>\?\>/es""addquote('<?=\\1?>')"$template);

    
$template "<? if(!defined('IN_DISCUZ')) exit('Access Denied'); ?>\n\n$template";
    
$template preg_replace("/[\n\r\t]*\{template\s+([a-z0-9_]+)\}[\n\r\t]*/is""\n<? include template('\\1'); ?>\n"$template);
    
$template preg_replace("/[\n\r\t]*\{template\s+(.+?)\}[\n\r\t]*/is""\n<? include template(\\1); ?>\n"$template);
    
$template preg_replace("/[\n\r\t]*\{eval\s+(.+?)\}[\n\r\t]*/ies""stripvtags('\n<? \\1 ?>\n','')"$template);
    
$template preg_replace("/[\n\r\t]*\{echo\s+(.+?)\}[\n\r\t]*/ies""stripvtags('\n<? echo \\1; ?>\n','')"$template);
    
$template preg_replace("/[\n\r\t]*\{elseif\s+(.+?)\}[\n\r\t]*/ies""stripvtags('\n<? } elseif(\\1) { ?>\n','')"$template);
    
$template preg_replace("/[\n\r\t]*\{else\}[\n\r\t]*/is""\n<? } else { ?>\n"$template);

    for(
$i 0$i $nest$i++) {
        
$template preg_replace("/[\n\r\t]*\{loop\s+(\S+)\s+(\S+)\}[\n\r]*(.+?)[\n\r]*\{\/loop\}[\n\r\t]*/ies""stripvtags('\n<? if(is_array(\\1)) { foreach(\\1 as \\2) { ?>','\n\\3\n<? } } ?>\n')"$template);
        
$template preg_replace("/[\n\r\t]*\{loop\s+(\S+)\s+(\S+)\s+(\S+)\}[\n\r\t]*(.+?)[\n\r\t]*\{\/loop\}[\n\r\t]*/ies""stripvtags('\n<? if(is_array(\\1)) { foreach(\\1 as \\2 => \\3) { ?>','\n\\4\n<? } } ?>\n')"$template);
        
$template preg_replace("/[\n\r\t]*\{if\s+(.+?)\}[\n\r]*(.+?)[\n\r]*\{\/if\}[\n\r\t]*/ies""stripvtags('\n<? if(\\1) { ?>','\n\\2\n<? } ?>\n')"$template);
    }

    
$template preg_replace("/\{$const_regexp\}/s""<?=\\1?>"$template);
    
$template preg_replace("/ \?\>[\n\r]*\<\? /s"" "$template);

    if(!@
$fp fopen($objfile'w')) {
        
dexit("Directory './forumdata/templates/' not found or have no access!");
    }

    
flock($fp2);
    
fwrite($fp$template);
    
fclose($fp);
}

function 
addquote($var) {
    return 
str_replace("\\\"""\""preg_replace("/\[([a-zA-Z0-9_\-\.\x7f-\xff]+)\]/s""['\\1']"$var));
}

function 
languagevar($var) {
    if(isset(
$GLOBALS['language'][$var])) {
        return 
$GLOBALS['language'][$var];
    } else {
        return 
"!$var!";
    }
}

function 
stripvtags($expr$statement) {
    
//$expr = str_replace("\\\"", "\"", preg_replace("/\<\?\=(\\\$[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\"\'\[\]\$\x7f-\xff]*)\?\>/s", "\\1", $expr));
    
$expr str_replace("\\\"""\""preg_replace("/\<\?\=(\\\$.+?)\?\>/s""\\1"$expr));
    
$statement str_replace("\\\"""\""$statement);
    return 
$expr.$statement;
}

?>

高手能帮我注释一下吗?


独乐乐不如众乐乐
xledoo 当前离线   回复时引用此帖
旧 2006-05-27, 06:26   #15 (页面定位)
小四
 
小四 的头像
 
注册日期: 2005-09-08
帖子: 82
小四 是普普通通的会员
默认

你忽略了最重要的部分,sql那里....

dz就是在程序里搞出数据,然后替换模版里的东东啊.


引用:
zForums论坛程序v5.0发布咯....(Asp.NET+SQL):http://www.zFans.net 招美工入伙。
ZFORUMS团队成员:小四……
小四 当前离线   回复时引用此帖
回复

书签

标签

主题工具
显示模式 对此主题评分
对此主题评分:



所有时间均为北京时间。现在的时间是 17:39