21407787
wecenter侧边栏的推荐内容丢失原因和解决方案
在wecenter详情页的侧边栏,有一个推荐内容,但是升级到3.6以后,很多人发现不见了,
其实不是不见了,是需要登录后才可见,我们可以通过简单的修改代码,让未登录的人也看到
打开/app/question/main.php 大约319行的位置,找到以下代码
if ($question_topics)
{
foreach ($question_topics AS $key => $val)
{
$question_topic_ids[] = $val['topic_id'];
}
}
并把他移出 if 外层,即放在317行的 $this->user_id 上面,这样即使未登录,也可以看到推荐内容了
收起阅读 »wecenter默认模板 认证图标 icon-v 颜色不一致bug
在默认模板中,其中默认皮肤的认证图标icon-v,css颜色是这样的
.icon-v{color: #ffca3f;font-size: 16px;}/* 黄V */
.icon-v.i-ve{color: #a3d700;}/* 绿V */
但是使用换肤功能,切换到绿色时,却是
.icon-v{color: #5bbf5a;font-size: 16px;}/* 绿V */
/* 这里icon-v绿V使用的是#5bbf5a,考虑到其他地方的icon-v还有同个#5bbf5a颜色代码,所以这里就不建议改为#a3d700了*/
.icon-v.i-ve{color: #ffca3f;}/* 黄V */
而把皮肤切换到橙色时,却是
.icon-v{color: #a3d700;font-size: 16px;}/* 绿V */
.icon-v.i-ve{color: #ffca3f;}/* 黄V */
这里面,默认皮肤 和 绿色皮肤、橙色皮肤中,颜色值是相反了。
也就是说,你在默认皮肤里是黄V,
当你切换成绿色皮肤或者橙色皮肤时,你是会变成绿V的,
这样很容易造成误会,所以我们要把颜色值统一一下。
因为wecenter系统中,绿色v代表个人认证,黄色v代表企业机构认证
(因为看到默认模板的static/css/default/img/icon-v.png是绿色的,如果我没搞错的话,应该是绿色v代表个人认证,黄色v代表企业机构认证。)
所以我们需要把static/css/default/common.css的色值对调下,
在大约180行的位置就能找到对应代码修改为以下示例:
.icon-v{color: #a3d700;font-size: 16px;}/* 个人绿V */
.icon-v.i-ve{color: #ffca3f;}/* 企业黄V */
收起阅读 »
WeCenter邮件设置要怎么设置
WeCenter系统的邮件设置要怎么填?
QQ邮箱填写示例
发送方式:通过SOCKET链 连接 SMTP服务器发送
邮件编码:UTF-8
主 SMTP 服务器:smtp.qq.com
使用安全链接(SSL)连接主服务器:是
主 SMTP 端口:465
主 SMTP 帐户:QQ号@qq.com
主 SMTP 密码:这里不是QQ密码,而是进入QQ邮箱后台获取的授权码
QQ邮箱授权码
登录QQ邮箱->设置->账户
拉到底部就会看到 POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务
1.我们要先开启: POP3/SMTP服务
2.获取授权码:这个授权码是用来代替QQ密码的
QQ邮箱失败原因
很多人使用QQ邮箱作为wecenter程序的发信邮箱,但是一直失败的原因,其实就是因为这2个原因:
1、端口号填错了:QQ邮箱发信是改为了使用安全链接(SSL),所以端口号要填465
2、SMTP 密码填错了:为了安全,QQ邮箱改用了授权码代替QQ密码,所以不能填QQ密码,而是要生成一个授权码
3、没有开启POP3/SMTP服务
如果你的QQ邮箱设置不成功,请着重检查这3个设置!!!
收起阅读 »WeCenter在php7环境下,公众号功能无反应、出错解决方案
出错原因
出现这个问题是由于mcrypt_decrypt、等函数已自 PHP 7.1.0 起废弃,并将自 PHP 7.2.0 起移除。
但是由于wecenter3.6.1以及之前的版本还在使用mcrypt_decrypt等函数,所以会导致在php7.2 + 的环境下,wecenter公众号功能会出现错误,导致无法使用公众号回复功能。
解决方案
用openssl_decrypt替换mcrypt_decrypt等函数
打开system/Services/Weixin/Prpcrypt.php,
找到encrypt函数,替换为
/**
* 对明文进行加密
* @param string $text 需要加密的明文
* @return string 加密后的密文
*/
public function encrypt($text, $appid)
{
try {
//获得16位随机字符串,填充到明文之前
$random = $this->getRandomStr();
$text = $random . pack("N", strlen($text)) . $text . $appid;
$iv = substr($this->key, 0, 16);
//使用自定义的填充方式对明文进行补位填充
$pkc_encoder = new Services_Weixin_PKCS7Encoder;
$text = $pkc_encoder->encode($text);
$encrypted = openssl_encrypt($text, 'AES-256-CBC', $this->key, OPENSSL_RAW_DATA | OPENSSL_ZERO_PADDING, $this->hexToStr($iv));
//使用BASE64对加密后的字符串进行编码
return array(Services_Weixin_ErrorCode::$OK, base64_encode($encrypted));
} catch (Exception $e) {
//print $e;
return array(Services_Weixin_ErrorCode::$EncryptAESError, null);
}
}
找到decrypt函数,替换为
/**
* 对密文进行解密
* @param string $encrypted 需要解密的密文
* @return string 解密得到的明文
*/
public function decrypt($encrypted, $appid)
{
try {
//使用BASE64对需要解密的字符串进行解码
$ciphertext_dec = base64_decode($encrypted);
$iv = substr($this->key, 0, 16);
//解密
$decrypted = openssl_decrypt($ciphertext_dec, 'AES-256-CBC', $this->key, OPENSSL_RAW_DATA | OPENSSL_ZERO_PADDING, $this->hexToStr($iv));
} catch (Exception $e) {
return array(Services_Weixin_ErrorCode::$DecryptAESError, null);
}
try {
//去除补位字符
$pkc_encoder = new Services_Weixin_PKCS7Encoder;
$result = $pkc_encoder->decode($decrypted);
//去除16位随机字符串,网络字节序和AppId
if (strlen($result) < 16)
return "";
$content = substr($result, 16, strlen($result));
$len_list = unpack("N", substr($content, 0, 4));
$xml_len = $len_list[1];
$xml_content = substr($content, 4, $xml_len);
$from_appid = substr($content, $xml_len + 4);
if (!$appid)
$appid = $from_appid;
} catch (Exception $e) {
//print $e;
return array(Services_Weixin_ErrorCode::$IllegalBuffer, null);
}
if ($from_appid != $appid)
return array(Services_Weixin_ErrorCode::$ValidateAppidError, null);
return array(0, $xml_content, $appid);
}
同时在下方增加一个自定义函数hexToStr
public function hexToStr($hex)
{
$string='';
for ($i=0; $i < strlen($hex)-1; $i+=2)
{
$string .= chr(hexdec($hex[$i].$hex[$i+1]));
}
return $string;
}
下载修改后的文件
这里给大家整理好了修改后的文件,
可以下载后覆盖到自己网站system/Services/Weixin/Prpcrypt.php即可在php7环境下使用WeCenter的公众号功能了
收起阅读 »