转载请注明
作者:张英锋
原文网址:http://zhangyingfeng.com.cn/2007/12/26/discuz-no-picture-error/
最近彻底解决了Discuz 6.0 默认游客不能浏览图片的问题。Discuz默认游客不能浏览图片,是个很恼人的问题。官方的解决办法很麻烦,而且不能彻底解决问题。
这是一个典型的只考虑技术问题,不考虑用户体验的案例,技术人员的通病。他们可能认为默认显示图片的话,会大幅增加网站的流量(特别是他们自己也做托管论坛,就是那个5d6d.com),考虑到这点,他们在论坛设置上故意没有留下设置选项。但是对于大部分论坛来说,吸引人的图片往往是他们的卖点,最终客户的使用体验才是最重要的,看不到图片就大大折扣。
官方的解决办法很被动,必须注册会员自己到控制面板设置:
参见http://www.discuz.net/thread-698141-1-1.html
10.上传的图片只能下载不显示
检查下设置:
后台 基本设置 界面与显示方式 设置图片显示
后台 基本设置 附件设置 设置显示图片附件
前台 控制面板 个人资料修改 设置下图片显示
这个官方的办法可以解决注册会员查看附件的问题,为了开启这个功能,Discuz竟然设了3道关卡,而且不解决根本问题。尤其是第3步,每个会员注册完毕后都要到控制面板里修改个人资料才能看到图片,否则就只能看到下载链接,不能看到图片,用户体验极差。
sdaupp曾提供了一个办法,但只适用于5.5的版本,对6.0好像不管用。参见《一处简单修改完美解决”游客可以查看但不能下载附件”难题》。
现在只能自己动手丰衣足食了。
先解决注册会员默认显示图片问题
修改论坛根目录下的register.php
找到625行,将下面的内容删除或注释掉:
$db->query(”INSERT INTO {$tablepre}members (username, password, secques, gender, adminid, groupid, regip, regdate, lastvisit, lastactivity, posts, credits, extcredits1, extcredits2, extcredits3, extcredits4, extcredits5, extcredits6, extcredits7, extcredits8, email, bday, sigstatus, tpp, ppp, styleid, dateformat, timeformat, pmsound, showemail, newsletter, invisible, timeoffset)
VALUES (’$username’, ‘$password’, ‘$secques’, ‘$gendernew’, ‘0′, ‘$groupinfo[groupid]‘, ‘$onlineip’, ‘$timestamp’, ‘$timestamp’, ‘$timestamp’, ‘0′, $initcredits, ‘$email’, ‘$bday’, ‘$sigstatus’, ‘$tppnew’, ‘$pppnew’, ‘$styleidnew’, ‘$dateformatnew’, ‘$timeformatnew’, ‘$pmsoundnew’, ‘$showemailnew’, ‘$newsletter’, ‘$invisiblenew’, ‘$timeoffsetnew’)”);
替换为
$db->query(”INSERT INTO {$tablepre}members (username, password, secques, gender, adminid, groupid, regip, regdate, lastvisit, lastactivity, posts, credits, extcredits1, extcredits2, extcredits3, extcredits4, extcredits5, extcredits6, extcredits7, extcredits8, email, bday, sigstatus, tpp, ppp, styleid, dateformat, timeformat, pmsound, showemail, newsletter, invisible, timeoffset,customshow)
VALUES (’$username’, ‘$password’, ‘$secques’, ‘$gendernew’, ‘0′, ‘$groupinfo[groupid]‘, ‘$onlineip’, ‘$timestamp’, ‘$timestamp’, ‘$timestamp’, ‘0′, $initcredits, ‘$email’, ‘$bday’, ‘$sigstatus’, ‘$tppnew’, ‘$pppnew’, ‘$styleidnew’, ‘$dateformatnew’, ‘$timeformatnew’, ‘$pmsoundnew’, ‘$showemailnew’, ‘$newsletter’, ‘$invisiblenew’, ‘$timeoffsetnew’ ,25)”);
该方法的关键是增加一个customshow字段,将其默认值设为25,这样注册会员就默认看到图片,省掉第三步,不用再去控制面板里修改自己的设置了。
接下来实现游客默认可以看到图片,但不能下载附件的功能。
官方的设置还是不能彻底解决,给出的方案是到后台 用户管理 用户组 游客组中开启下载查看附件选项。但是注意,游客也是只能看到下载链接,不能看到图片。而且非图片的其他附件还可以自由下载,这是非常恼人的。
解决办法办法是修改论坛根目录下的viewthread.php
找到第182行
$customshow = $discuz_uid ? str_pad(base_convert($customshow, 10, 3), 3, ‘0′, STR_PAD_LEFT) : ‘222′;
替换为
$customshow = $discuz_uid ? str_pad(base_convert($customshow, 10, 3), 3, ‘0′, STR_PAD_LEFT) : ‘221′;
修改的是customshow 的默认参数,将其改为图片可见。
另外不要设置游客可以下载附件,这样游客就可以只看到图片,但是不能下载非图片的附件了。
总结
解决的整体流程如下
- 先查看下面的设置,一般默认不需要修改
后台 基本设置 界面与显示方式 设置图片显示
后台 基本设置 附件设置 设置显示图片附件 - 修改register.php,解决注册会员不能看到图片问题。
- 修改viewthread.php,实现游客只可以看到图片,但是不能下载非图片的附件功能。
- 如果想降低图片预览所增加的网站的流量,可以参考本站的文章《通过图片托管服务,节约建站成本》
参考资料
- Discuz官方论坛
《6.0常见问题整理及解决方法(2007-12-4 更新》 - 《怎么开启游客也能浏览附件图片的功能呢》
01月 5th, 2008 at 13点19分
现在DZ6默认注册后就可以看到图片的,是否还要进行第一步的修改数据字段的设置....如果不需要,是不是直接改viewthread.php就可以了.
01月 7th, 2008 at 15点27分
如果注册会员可以看到图片,就不用改register.php,只需要改viewthread.php,让游客看图片就可以了。