您當前位置>首頁 » 新聞資(zī)訊 » 小程序相關(guān) >
Discuz! + 微信小程序
發表時間:2021-3-31
發布人:葵宇科技
浏覽次數:67
關(guān)于這個(gè)小程序
Github : https://github.com/DowneyL/di...‘
這個(gè)小程序是公司針對一個(gè)自家産品的需求,而這個(gè)産品就是 Discuz (我知道沒啥人用了,就不要吐槽了),版本是 X3.2 ,還是 GBK 編碼!
在公司給了需求,稍微學習了一下(xià)小程序,就直接開幹了,網上找到一個(gè)基礎版本(可(kě)恥的不全是自己寫的),修複了一些 BUG,新增了一部分功能,也砍掉了一部分功能,兼容了 GBK 版本的 Discuz,簡單設計了一下(xià)小程序的樣式,産品也就基本成型了。
之所以分享出來,是因為關(guān)于 Discuz 相關(guān)的文(wén)檔、産品之類真的是太少(shǎo)了,想在一個(gè)平台上記錄下(xià)來,如(rú)果碰見有緣人,沒準能給他一些收獲。 0.0\
我的收獲
- 關(guān)于 API 的開發有了一些理解(正好 Summer 大神出新書了,買了等更完再看)
- 微信公衆号開發(原生 PHP 開發微信公衆号,以及超神的 Easywechat)
也成功讓公司論壇關(guān)聯了 公衆号,實現在公衆号上,領取論壇金錢紅包。 - 微信小程序開發(官方文(wén)檔,正在開發的小程序的源碼,都給了我不少(shǎo)啟發)
- HTTP 到 HTTPS
- 小程序上富文(wén)本的解析 (一個(gè)優秀的開源項目:wxParse-微信小程序富文(wén)本解析組件 )
作用在于:解析你(nǐ)論壇上的帖子(zǐ)内容,你(nǐ)論壇上加粗的文(wén)字,加了顔色的文(wén)字,圖片等等,都可(kě)以原原本本的展示在小程序中(zhōng)。 - Flex 布局
這裡分享阮老師(shī)的兩篇文(wén)章 Flex 布局教程:語法篇 、Flex 布局教程:實例篇 - 兩個(gè) UI 組件 weui、zanui
- .....
部分細節
主要有以下(xià)幾點功能,需要記錄
第一節
file_get_content()
函數,在論壇上有可(kě)能無法使用,已經在 inc.php 文(wén)件中(zhōng)實現相同功能的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 = https://www.wxapp-union.com/''; } else { $data = https://www.wxapp-union.com/curl_multi_getcontent($ch); } curl_close($ch); return $data; }
由于論壇整體格式為 GBK,而和(hé)微信服務端交互,必須為 UTF-8 編碼,所以對接口編碼進行了一部分的優化。
輸出的情況下(xià),有 error.php 下(xià)的
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; } }
接受的情況下(xià), 有 inc.php 下(xià)的
getDataForCharset()
函數來整合接受編碼。function getDataForCharset($data) { return (CHARSET != 'UTF-8') ? dhtmlspecialchars(WmApiError::array_iconv($data)) : dhtmlspecialchars($data); }
- 關(guān)閉了微信登陸的功能。
- 獲取帖子(zǐ)時新增了帖子(zǐ)的具體内容,message。
- 優化了其他一些細節部分的内容。
第二節
wxParse 做的事情
- 輸出帖子(zǐ)時,對 Discuz Code 進行解碼,同時,獲取圖片附件,以及表情圖片。
- 接受時,解析文(wén)本的加粗、高亮(liàng)、斜體、字體等。讓帖子(zǐ)呈原樣輸出。
- 以上功能,重點在 wmapi/get_post_detail.php 、 wmapi/get_self_post.php 兩個(gè)腳本中(zhōng)重點突出。
第三節
- 部分獲取小程序的數據的方式為
get_url_content()
部分為file_get_content()
(生産環境可(kě)能由于設置問(wèn)題,導緻如(rú)此怪異,請結合自身服務器(qì)來看) - 首頁新增加載狀态 (加載中(zhōng)... 沒有更多... 暫無數據...)
- 群組帖子(zǐ),無法顯示群組的名稱
- 在小程序向服務器(qì)傳遞中(zhōng)文(wén)字符串的時候,先
encodeURI()
再到論壇服務器(qì)上urldecode()
最後進行 UTF8 -> GBK 的轉碼,當然,是有必要的情況下(xià)。