您正在查看: Discuz! 插件 分类下的文章

让 Discuz 支持 MariaDB

昨晚把博客和论坛搬回国内了;博客在搬的过程中倒还挺轻松,只是 Discuz 搬迁后出现水土不服,提示

Illegal mix of collations (gbk chinese ci,IMPLICIT) and (latin1_swedish_ci,COERCIBLE) for operation '='

搜索后大概意思是说数据库编码不对。
我就郁闷了,数据库是 GBK 的,字段是 GBK 的,程序也是 GBK 的,怎么会编码有问题呢?
绕过计划任务进入论坛,发现论坛中文全部乱码了。
难道是我导入数据的时候有问题?于是乎我又重新用 GB2312 导出一份,上传到服务器,依然不行。
反反复复折腾一个小时之后,一个偶然的机会下发现 Discuz 下数据库被设置为 lantin 编码,这和 phpmyadmin 看到的不一样啊!
然后又研究了许久 Discuz 的数据库类,明明有设置为 GBK 的,难道没设置成功?
在程序中加入 DB::query() 设置编码,发现居然可以了,这是什么道理??表示不服
难道用 mysql_query() 就不行么?可是 DB::query() 又是调用 mysql_query() 的啊
偶然调节代码顺序的时候,发现移动到 if($this->version() > '4.1') 外侧竟然执行成功了
尼玛原来你才是罪魁祸首
可是这句话有问题么?输出下

10.0.9-MariaDB

尼玛我瞬间就明白了,这是一个字符串,“4.1”也是一个字符串,字符串比较是逐一比较各字符,先判断 1 < 4,然后得出 10.0.9-MariaDB < 4.1
我 QNMLGB,害我倒腾两个小时……

解决办法:
修改 version 方法,return '9.9.9';

让 Discuz! 帖子列表支持倒序排序

Discuz! 虽然能够在后台修改帖子的排序方式,但却不能选择是倒序还是顺序排序。
为解决这个问题,可采用以下修改办法:
修改文件 source/module/forum/forum_forumdisplay.php,找到 457 行:

$_GET['ascdesc'] = isset($_G['cache']['forums'][$_G['fid']]['ascdesc']) ? $_G['cache']['forums'][$_G['fid']]['ascdesc'] : 'DESC';

在下方加入:

http:// Modified by kookxiang @ 2014-4-8 13:05:07
if($_GET['forceasc']) $_GET['ascdesc'] = 'ASC';
if($_GET['forcedesc']) $_GET['ascdesc'] = 'DESC';
http:// Ending of modification

这样便能通过 URL 参数 forceasc 和 forcedesc 控制排序了

【吐槽】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'];

就好了

VIP 医生 Beta 1.0

自从【DSU】VIP 发布以来,有很多用户反馈了各种问题,而其中大部分都是由于设置不当造成的。

于是写了“VIP医生”这个插件,可以找出设置中的各种问题,站长朋友们可以自行修正。

下载:VIP医生 Beta 1(自助修复各种VIP插件问题).zip
(解压到插件目录,后台安装,应用中心审核中)

QQ截图20121229182636.jpg

通知:DSU Client中将内置KK Updater 2.0

通知:DSU Client中将内置KK Updater 2.0。
具体请等待客户端内测,谢谢支持!

【DSU】KK VIP意见征集

新版正在开发中,欢迎您提出自己的意见,我会一一回复是否采纳的,谢谢~

最近的任务一览表

Discuz 插件:

1.VIP插件第二代,功能与界面重新设计(核心部分已经完工)
2.Discuz微博墙插件,支持新浪和腾讯,

其中腾讯oAuth部分已经完工,新浪已完成,模板尚未制作

搞定
3.Discuz站点助手(持续跳票,已放弃)

[music1g play=#-13452]

来自Android版 WordPress

关于近两天 KK Updater 无法连接的相关说明

原 KK Updater 所在服务器暂停服务,我们被迫将服务器转移到另一台服务器上。

由于我本地的数据是1.56版的,在离线包的参考下恢复了更新系统。


现在的服务端放在另一台国内的服务器上

请大家帮忙测速:ping update.kookxiang.com

关于 KK Updater 跨站被拦截的说明

简要概述下程序获取新版版本号的流程

创建AJAX请求→获取最新版版本→格式化代码(清除有害代码)→输出

在 Webkit 核心的浏览器(如 Chrome、Safari、搜狗高速模式)下,所有这些操作都能正常的完成。

但是,在某些版本的IE中,访问远程网站的资源会被浏览器拦截,从而导致无法获得最新版本号。

建议:

  • 使用Webkit核心浏览器
  • 修改IE设置

KK Updater 介绍

当插件有最新版时,您的网站上将出现下面的提示:

updater 1.jpg

此时请直接点击右下角的“更新”按钮,输入管理员密码(如果您还没有登陆后台),进入自动更新流程。

注意:此过程均为自动完成,无须人工干预

界面如下:

updater 2.jpg

- 阅读剩余部分 -