一个经得起时间考验的人
discuz
解决Discuz编辑器在Chrome/Opera/Firefox下的使用问题
四 20th
在Chrome中使用Discuz编辑器(Discuz6.0,Discuz6.1,Discuz7.0都存在这样的问题)的过程中可能遇到以下两个错误:
1.直接使用Discuz编辑器的所见即所得模式时:
Uncaught TypeError: Cannot call method ‘appendChild’ of /include/javascript/editor.js:129 undefined
2.将Discuz编辑器从代码模式切换到所见即所得模式时(无法切换):
Uncaught TypeError: Cannot call method ‘replace’ of /include/javascript/bbcode.js:387 undefined
第一个错误的出现在editor.js文件中的function setEditorStyle()函数中,解决办法是在
var headNode = editdoc.getElementsByTagName("head")[0];
headNode.appendChild(editcss);
中间加入:
if(!headNode){headNode = editdoc.getElementsByTagName("body")[0];}//by ZZR
第二个错误实际是出现在bbcode.js文件中的function bbcode2html(str)函数中,原因是Chrome、Firefox中对函数的处理有点不一样,函数的最后一个元素是push。解决办法是在:
re = new RegExp(addslashes(smilies[id]['code']), "g");
的前面加入:
if(isNaN(parseInt(id))) continue; //by ZZR
想偷懒的朋友,并且Discuz论坛版本为6.0的朋友可以直接下载www.zxlm.cn/fh/中对应的JS文件。
PS:BS一下Discuz的JS开发人员!
最后传一个第一个错误的效果图。
Discuz NT论坛日志引起的无法访问
八 11th
由Discuz NT构建的论坛,出现无法访问的情况,页面提示“与SQL Server 2000 的连接超时”
重启IIS,SQL Server都不起作用,检查数据库后发现论坛所使用的数据库 Discuz_NT 的日志文件的体积居然达到 23.5GB
将SQL Server的日志清理后,论坛恢复正常。
随后简单分析了一下SQL Server产生如此大日志的原因:
1.因为数据库Discuz_NT的故障还原模型为“完全”,从而在用户访问论坛、访问版块、访问帖子时都会有日志生成(在dnt_online中记录访问者的位置)
2.用户每访问一个帖子都会更改数据库中dnt_posts1中记录的帖子被访问的次数
综合以上的原因,从而使数据库的日志迅速增大。因此对于 Discuz NT 构建的论坛有必要经常清理日志、备份数据。
当然将数据库的故障还原模型(如何记录日志)设置为简单能够防止产生如此大量的日志,但是无法保证数据的安全。
如果在数据库中限制了日志的大小,那么出来的提示如下:
数据库 ‘Discuz_NT ‘ 的日志已满。请备份该数据库的事务日志以释放一些日志空间。
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.
Exception Details: System.Data.SqlClient.SqlException: 数据库 ‘Discuz_NT ‘ 的日志已满。请备份该数据库的事务日志以释放一些日志空间。
解决支付宝与Discuz!论坛接口问题HAS_NO_PRIVILEGE
七 1st
在Discuz!论坛使用支付宝求购时出现如下提示:
调试错误,请回到请求来源地,重新发起请求.
错误代码HAS_NO_PRIVILEGE
说明:如果您不是因为本接口集成调试而看见该错误提醒,请联系本次请求来源网站,本错误属于网站集成接口的错误。
具体的原因可以参考:支付宝关上网站集成服务的免费之门
通过修改Discuz!支付宝的API终于将此问题解决.
主要原因是Discuz!的API中原来集成的信息无法免费使用:
交易安全校验码(key):gh0bis45h89m5mwcoe85us4qrwispes0
合作者身份(partnerID):2088002052150939
所以通过修改解密的支付宝API(Discuz6支付宝API解密版)(alipayapi.php)中的这两个参数:
define( "DISCUZ_PARTNER", "2088002052150939" );
define( "DISCUZ_SECURITYCODE", "gh0bis45h89m5mwcoe85us4qrwispes0" );
即可解决"错误代码HAS_NO_PRIVILEGE"的问题,如:解决支付宝与Discuz!论坛接口问题HAS_NO_PRIVILEGE
或者使用Discuz!官方发布的Discuz!支付宝API补丁:6.0的支付宝接口升级文件
支付宝关上网站集成服务的免费之门
六 26th
Discuz论坛的积分充值功能突然无法使用,提示如下错误:不能充值 有错误提示
调试错误,请回到请求来源地,重新发起请求。
错误代码HAS_NO_PRIVILEGE
说明:如果您不是因为本接口集成调试而看见该错误提醒,请联系本次请求来源网站,本错误属于网站集成接口的错误.
查找相关资料后发现错误代码HASH_NO_PRIVILEGE 表示交易服务没有申请,如:只申请了“实物商品交易服务”,但订单中的商品是虚拟物品,这时必须申请“虚拟商品交易服务".
登录支付宝后发现"网站集成支付宝"中增加了一个"销售型网站",申请后发现接口已经不再免费了:
支付宝在免费集成到 Discuz 论坛取得大量用户后,终于按捺不住圈钱的诱惑放绝招了.
不过现在支付宝的"网上赠与服务"仍旧免费,考虑替换Discuz原有的积分充值功能.
为Discuz6中未设置Tag的主题自动生成Tag
一 17th
从Discuz论坛程序6.0开始,论坛主题开支持Tag,使得论坛帖子之间的相关性和用户之间的交互性大大增强。
但是我们论坛中以前的帖子怎么办呢?
所以我想到写这样一个脚本,来为Discuz6中未设置Tag的主题自动生成Tag。
2007-01-17日更新内容,增加帖子最大Tag的数量控制及随机Tag
下载最新版本:
附件:2008-01-17-tagcreate.zip(2811 Byte)
更新内容:
//允许每个帖子的最大Tag个数,最大为5个。
$tagmax = 5;
//随机生成帖子的最多Tag个数
//false 表示为每个帖子生成 $tagmax 个标签。
//true 表示为每个帖子生成小于$tagmax 大于0 个标签。
$tagradom = false;
//用于生成Tag的内容,是否随机截取。
//false表示每个帖子都是取标题和帖子的前512个字符生成Tag
//true 表示取帖子标题和帖子内容中的随机的512个字符生成Tag
$contentradom = false;
$tpp = 15; //允许程序每次处理的主题数目。
先让我们了解一下什么是Tag?
Tag(中文叫做“标签”) 是一种新的组织和管理在线信息的方式。它不同于传统的、针对文件本身的关键字检索,而是一种模糊化、智能化的分类。 Tag是一种更为灵活、有趣的分类方式,您可以为每篇日志、每个帖子或者每张图片等添加一个或多个Tag(标签),你可以看到网站上所有和您使用了相同 Tag的内容,由此和他人产生更多的联系。Tag体现了群体的力量,使得内容之间的相关性和用户之间的交互性大大增强。
脚本见附件。
只需要把tagcreate.php放到论坛的根上好,然后在浏览器中打开就可以了。
脚本默认为每次设置15个主题的帖子。所以运行的时间会比较长。
$tpp = 15; //允许程序每次处理的主题数目。
脚本未对权限进行判断,所以大家最好在生成Tags后,删除此文件。
附件:tagcreate.zip(2550 Byte)