存档
【Discuz 7.2】使用手记(头像上传出错、不显示头像等)
新装了一把Discuz 7.2,没有安装测试数据,发现各种问题,来记一记。
1、头像上传出错,提示“Access denied for agent changed”
解决办法:进后台管理》Ucenter》应用管理》Discuz应用提示“通信失败”》编辑》删除应用IP的内容(默认为127.0.0.1)》保存》回到应用管理界面,显示通信成功;测试头像上传功能,正常了
如仍有问题,参见Access denied for agent changed 的参考解决方法
2、帖子内容页面上,头像没有显示,如下图所示
Discuz X1.5和jQuery冲突的解决办法
主要是Discuz X1.5使用了$(id)作为dom节点的获取方法,而$符号刚好与jQuery的默认符号相冲突,一个是优秀的社区系统,一个是出色的js框架,自然希望做到兼容。
以下是基于之前的Discuz和jQuery冲突的解决办法在Discuz X1.5上应用,提供给大家做个参考,至于原理请参见前面的文章。
将jQuery的js文件jquery-1.4.min.js放到/static/js目录下,以下两个方法共用此文件,如不是放在该目录下,后面的代码请对应修改。
解决方法1:
Discuz和jQuery冲突的解决办法
Discuz和jQuery有两个冲突的地方。
冲突一、Array.prototype.push函数冲突
Discuz 7.0版本为了兼容低版本的IE,重写了Array的push方法,代码位于include/common.js中,如下:
Array.prototype.push = function(value) {
this[this.length] = value;
return this.length;
}
但以上代码没有做任何检测直接进行了覆盖导致冲突,解决办法是修改为如下代码:
【Discuz】发送短消息的源码实例
发送短消息在Discuz的开发中也算是个常用的功能需求,实现代码也很简单,向一组人发送短消息的代码如下:
include_once language('messages');
include_once DISCUZ_ROOT.'./uc_client/client.php';
foreach ($usernamelist as $u){
$u = trim($u);
uc_pm_send($discuz_uid, $u, sprintf($language['invitation_pm_subject'], $subject), sprintf($language['invitation_pm_message'], $subject,$siteurl, $tid), 1, 0, 1);
}
发送短消息的uc_pm_send函数用法可以参考UCenter开发手册,从http://www.discuz.net/thread-879237-1-1.html下载。代码中的第二行是为了引入uc_pm_send函数的定义。
【Discuz】积分机制实现解析
1、积分设置
在论坛 管理界面》全局》积分设置 里进行积分项目和积分规则的设置。可以用扩展积分来实现诸如热情、威望、贡献、论坛币等论坛激励机制,可设定扩展积分之间的兑换比例,可设置发帖、回复、加精、上传附件等操作需要增加的积分及下载附件等操作需要扣除的积分,并可对不同版面设定不同的积分规则,可谓是灵活自由。
如下图所示,有八个扩展积分可供设置,可用积分名称来命名你希望的名字,如热情、威望、贡献、论坛币等。
禁止游客访问Discuz 7.2搭建的论坛
找了一圈没发现DZ后台有哪儿可以设置禁止游客访问的,查了一下可以简单改代码实现这个功能,具体为:
修改include/common.inc.php文件,在417行
if(isset($allowvisit) && $allowvisit == 0 && !(CURSCRIPT == 'member' && ($action == 'groupexpiry' || $action == 'activate'))) {
showmessage('user_banned', NULL, 'HALTED');
} elseif(!(in_array(CURSCRIPT, array('logging', 'wap', 'seccode', 'ajax')) || $adminid == 1)) {
if($bbclosed) {
clearcookies();
$closedreason = $db->result_first("SELECT value FROM {$tablepre}settings WHERE variable='closedreason'");
showmessage($closedreason ? $closedreason : 'board_closed', NULL, 'NOPERM');
}
periodscheck('visitbanperiods');
}
Discuz、UCHome同步注册、免激活同步登录
现在的Discuz和UCHome是在一个地方注册,在另一个地方也能用同一账户,但稍显麻烦的是第一次登陆需要激活一下,显然多此一举。
究其原因是:在一个地方注册只是在UCenter和注册的地方建立了账户,在另一个地方并没有账户信息;激活是为了讲账户注册到过去。
下载Discuz、UCHome同步注册补丁,解压后对应覆盖到Discuz和UCHome目录,对应为Disucz 7.2/UCHome 2.0/UCenter 1.5版本。
【Discuz】“未结束的字符串常量”的解决办法
无意中发现在用的Discuz有个错误提示,打开来看IE6/IE7下提示“未结束的字符串常量”,IE8下提示“Unterminated string constant”。
去Discuz论坛上看看,有个帖子说是在/templates/default/viewthread.htm文件中查找
<a href="javascript:;" onclick="setCopy('{$thread[subject]}\n{$boardurl}viewthread.php?tid=$tid$fromuid', '{lang post_copylink}')" class="lightlink" />[{lang share_im}]</a><br /><br />
替换为
【Discuz】设定指定板块的默认帖子阅读权限
希望做到的对特定的论坛板块只允许高于阅读权限的用户才能查看其他人发的帖子,这里如果用板块权限管理的浏览权限或是审核权限进行设定的话,会导致用户无法查看和编辑自己的帖子。DZ本身未提供这项功能设置,来简单修改代码实现一下。
打开include\newthread.inc.php
替换


近期评论