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














