这回主要是对插件添加功能,原插件是: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'];
就好了