Discuz6.0 Bug修正及多国语言版本开发

 Discuz6.0版本在禁用了积分或道具之后发现用户注册过程中出错,注册不了。

临时解决方法:在regist.php文件的第310行加入这个语句就行了。

  1. if($initcredits=='Array'){
  2.     $initcredits="0,0,0,0,0,0,0,0,0";
  3. }

多国语言版本开发

找到include/global.php这个文件找到language这个函数修改如下

  1. function language($file$templateid = 0, $tpldir = '') {
  2.     $tpldir = $tpldir ? $tpldir : TPLDIR;
  3.     $templateid = $templateid ? $templateid : TEMPLATEID;
  4.     //黄建文2008-09-12修改开始,增加语言选择
  5.     if(isset($_COOKIE['language'])){
  6.         switch($_COOKIE['language']){
  7.             case "zh-cn":
  8.                 $languagepack = DISCUZ_ROOT.'./'.$tpldir.'/'.$file.'.lang.php';
  9.                 break;
  10.             case "zh-tw":
  11.                 $languagepack = DISCUZ_ROOT.'./'.$tpldir.'/tw/'.$file.'.lang.php';
  12.                 break;
  13.             case "en":
  14.                 $languagepack = DISCUZ_ROOT.'./'.$tpldir.'/en/'.$file.'.lang.php';
  15.                 break;
  16.             default:
  17.                 $languagepack = DISCUZ_ROOT.'./'.$tpldir.'/'.$file.'.lang.php';
  18.         }
  19.     }else{
  20.         preg_match('/^([a-z-]+)/i'$_SERVER['HTTP_ACCEPT_LANGUAGE'], $matches);
  21.         $lang = $matches[1];
  22.         if($lang=='zh-cn' or $lang=='zh'){
  23.             $languagepack = DISCUZ_ROOT.'./'.$tpldir.'/'.$file.'.lang.php';
  24.         }elseif($lang=='zh-tw' or $lang=='zh-hk' or $lang=='zh-sg'){
  25.             $languagepack = DISCUZ_ROOT.'./'.$tpldir.'/tw/'.$file.'.lang.php';
  26.         }else{
  27.             $languagepack = DISCUZ_ROOT.'./'.$tpldir.'/en/'.$file.'.lang.php';
  28.         }
  29.     }
  30.     //黄建文2008-09-12修改结束 ;增加语言选择
  31.     if(file_exists($languagepack)) {
  32.         return $languagepack;
  33.     } elseif($templateid != 1 && $tpldir != './templates/default') {
  34.         return language($file, 1, './templates/default');
  35.     } else {
  36.         return FALSE;
  37.     }
  38. }

discuz为了减轻服务器的负担,设置了只有当HTML模块有修改时才会更新缓存,所以除了修改语言文件之外还要让他实时的更新缓存。把template修改成下面的语句就可以实现了。

  1. function template($file, $templateid = 0, $tpldir = '') {
  2.     global $tplrefresh, $inajax;
  3.     $file .= $inajax && ($file == 'header' || $file == 'footer') ? '_ajax' : '';
  4.     $tpldir = $tpldir ? $tpldir : TPLDIR;
  5.     $templateid = $templateid ? $templateid : TEMPLATEID;
  6.     $tplfile = DISCUZ_ROOT.'./'.$tpldir.'/'.$file.'.htm';
  7.     $objfile = DISCUZ_ROOT.'./forumdata/templates/'.$templateid.'_'.$file.'.tpl.php';
  8.     if(TEMPLATEID != 1 && $templateid != 1 && !file_exists($tplfile)) {
  9.         return template($file, 1, './templates/default/');
  10.     }
  11.     //黄建文2008-09-12修改,把IF条件注释掉可以实现实时更新数语言包的缓存,这样才可以实现语言之间的切换
  12.     if(!defined('IN_ADMINCP')){
  13.         require_once DISCUZ_ROOT.'./include/template.func.php';
  14.         parse_template($file, $templateid, $tpldir);
  15.     }else{
  16.         if($tplrefresh == 1 || ($tplrefresh > 1 && substr($GLOBALS['timestamp'], -1) > $tplrefresh)) {
  17.             if(@filemtime($tplfile) > @filemtime($objfile)) {
  18.                 require_once DISCUZ_ROOT.'./include/template.func.php';
  19.                 parse_template($file, $templateid, $tpldir);
  20.             }
  21.         }
  22.     }
  23.     return $objfile;
  24. }

 

Discuz v6.0.0 简体中文正式版采用PHP和MySQL/Pgsql构建高效论坛系统。是中国使用最多的论坛系统。Discuz! 5.5.0为最新版本拥有首创的论坛Mini-Space、独家防落陷系统、全新的道具中心、多样的广告位布局、实用的WAP功能等多达几十项的创新和数百处的改进,其代码质量高,运行效率快,负载能力强,安全等级严是目前为止社区软件论坛的最强之作。 Discuz十大创新 创新一:独创的Mini-Space系统,轻松打造个人迷你空间 创新二:全新的论坛道具系统,吸取更多网游元素 创新三:超级全局设置功能,站长工作更加轻松 创新四:完善的JS调用功能,实现网站页面的轻松定制 创新五:智能化限制搜索引擎无效访问,提升网站性能 创新六:变更主题缓存机制 ,有效减轻服务器负载 创新七:增强型验证码、验证问题机制,有效杜绝灌水机 创新八:防御策略全面调整,有效防御CC攻击 创新九:独家防陷落系统,保障论坛数据安全 创新十:实用的文件、数据库校验工具,提高站长工作效率 四大精彩 精彩一:广告位布局多样合理,迎接“站长盈利”时代 精彩二:WAP功能大幅度改进,全力跟随市场时尚步伐 精彩三:升级的远程附件功能,拥有更多新特性 精彩四:强化系统数据库备份功能,MYSQL 各版本自动兼容 四打亮点 亮点一:纯绿色上传机制,支持自由图文混排, 亮点二:自动保存帖子内容,杜绝内容意外丢失 亮点三:后台积分策略向导,简单傻瓜式操作 亮点四:增加特殊主题搜索,精确定位搜寻目标
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值