这个小程序是公司针对一个自家产品的需求, 而这个产品就是 Discuz (我知道没啥人用了, 就不要吐槽了), 版本是 X3.2 , 还是 GBK 编码!
在公司给了需求, 稍微学习了一下小程序, 就直接开干了, 网上找到一个基础版本 (可耻的不全是自己写的), 修复了一些 BUG, 新增了一部分功能, 也砍掉了一部分功能, 兼容了 GBK 版本的 Discuz, 简单设计了一下小程序的样式, 产品也就基本成型了.
之所以分享出来, 是因为关于 Discuz 相关的文档, 产品之类真的是太少了, 想在一个平台上记录下来, 如果碰见有缘人, 没准能给他一些收获. 0.0\
我的收获
关于 API 的开发有了一些理解 (正好 Summer 大神出新书了, 买了等更完再看)
微信公众号开发 (原生 PHP 开发微信公众号, 以及超神的 Easywechat)
也成功让公司论坛关联了 公众号, 实现在公众号上, 领取论坛金钱红包.
微信小程序开发 (官方文档, 正在开发的小程序的源码, 都给了我不少启发)
HTTP 到 HTTPS
小程序上富文本的解析 (一个优秀的开源项目: wxParse - 微信小程序富文本解析组件 )
作用在于: 解析你论坛上的帖子内容, 你论坛上加粗的文字, 加了颜色的文字, 图片等等, 都可以原原本本的展示在小程序中.
Flex 布局
这里分享阮老师的两篇文章 Flex 布局教程: 语法篇 , Flex 布局教程: 实例篇
两个 UI 组件 weui , zanui
.....
部分细节
主要有以下几点功能, 需要记录
第一节
file_get_content() 函数, 在论坛上有可能无法使用, 已经在 inc.php 文件中实现相同功能的
get_url_content() 函数.
function get_url_content($url) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
# curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
if (!curl_exec($ch)) {
error_log(curl_error($ch));
$data = '';
} else {
$data = curl_multi_getcontent($ch);
}
curl_close($ch);
return $data;
}
由于论坛整体格式为 GBK, 而和微信服务端交互, 必须为 UTF-8 编码, 所以对接口编码进行了一部分的优化.
输出的情况下, 有 error.php 下的 array_iconv() 函数, 来对输出数组进行编码的转换.
static function array_iconv($str, $in_charset = "UTF-8", $out_charset = CHARSET) {
if (is_array($str)) {
foreach ($str as $k => $v) {
$str[$k] = WmApiError::array_iconv($v, $in_charset, $out_charset);
}
return $str;
} else {
if (is_string($str)) {
// return iconv('UTF-8', 'GBK//IGNORE', $str); return mb_convert_encoding($str, $out_charset, $in_charset);
} else {
return $str;
}
}
接受的情况下, 有 inc.php 下的 getDataForCharset() 函数来整合接受编码.
function getDataForCharset($data) {
return (CHARSET != 'UTF-8') ? dhtmlspecialchars(WmApiError::array_iconv($data)) : dhtmlspecialchars($data);
}
关闭了微信登陆的功能.
获取帖子时新增了帖子的具体内容, message.
优化了其他一些细节部分的内容.
第二节
wxParse 做的事情
输出帖子时, 对 Discuz Code 进行解码, 同时, 获取图片附件, 以及表情图片.
接受时, 解析文本的加粗, 高亮, 斜体, 字体等. 让帖子呈原样输出.
以上功能, 重点在 wmapi/get_post_detail.php , wmapi/get_self_post.php 两个脚本中重点突出.
第三节
部分获取小程序的数据的方式为 get_url_content() 部分为 file_get_content() (生产环境可能由于设置问题, 导致如此怪异, 请结合自身服务器来看)
首页新增加载状态 (加载中... 没有更多... 暂无数据...)
群组帖子, 无法显示群组的名称
在小程序向服务器传递中文字符串的时候, 先 encodeURI() 再到论坛服务器上 urldecode() 最后进行 UTF8 -> GBK 的转码, 当然, 是有必要的情况下.
基础展示
来源: http://blog.csdn.net/rolan1993/article/details/79247309