【吐槽】Discuz 开发中遇到的郁闷问题

这回主要是对插件添加功能,原插件是:http://addon.discuz.com/?@kk_doublecredit.plugin

客户需求:板块设定中的特殊积分规则对VIP用户也翻倍

过程:

首先先找到需要修改的地方:

print_r($_G['forum']);

得$_G['forum']['creditspolicy']数组名;

然后插件加一行:

$_G['forum']['creditspolicy'][$action]["extcredits{$cid}"] *= 2;

却一直无效……


首先怀疑是hooks运行位置不对,后来检查发现在forum.php内就已经加载了钩子,且修改正常。

然后又怀疑$_G['forum']这个数组……print_r显示正常

…………

然后分析updatepostcredits这个函数,一直追溯到source/class/class_credit.php:

http:// 大概是423行的样子:
$forumfield = C::t('forum_forumfield')->fetch($fid);
$policy = dunserialize($forumfield['creditspolicy']);

你妹,又从数据库里取一遍……

我就郁闷了,你这有意义么?
既然你要去数据库取,为啥又要$_G['forum']['creditspolicy']呢?

这里其实根本就没有必要读取数据库……

于是解决方法也很简单,加上

$policy = $_G['forum']['creditspolicy'];

就好了

标签: 插件 Discuz


添加新评论