Discuz! + 微信小程序 - 新聞資(zī)訊 - 雲南小程序開發|雲南軟件開發|雲南網站(zhàn)建設-西山區知普網絡科技工作室

159-8711-8523

雲南網建設/小程序開發/軟件開發

知識

不管是網站(zhàn),軟件還是小程序,都要直接或間接能為您産生價值,我們在追求其視覺表現的同時,更側重于功能的便捷,營銷的便利,運營的高效,讓網站(zhàn)成為營銷工具,讓軟件能切實提升企業(yè)内部管理水平和(hé)效率。優秀的程序為後期升級提供便捷的支持!

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\

我的收獲

  1. 關(guān)于 API 的開發有了一些理解(正好 Summer 大神出新書了,買了等更完再看)
  2. 微信公衆号開發(原生 PHP 開發微信公衆号,以及超神的 Easywechat)
    也成功讓公司論壇關(guān)聯了 公衆号,實現在公衆号上,領取論壇金錢紅包。
  3. 微信小程序開發(官方文(wén)檔,正在開發的小程序的源碼,都給了我不少(shǎo)啟發)
  4. HTTP 到 HTTPS
  5. 小程序上富文(wén)本的解析 (一個(gè)優秀的開源項目:wxParse-微信小程序富文(wén)本解析組件 )
    作用在于:解析你(nǐ)論壇上的帖子(zǐ)内容,你(nǐ)論壇上加粗的文(wén)字,加了顔色的文(wén)字,圖片等等,都可(kě)以原原本本的展示在小程序中(zhōng)。
  6. Flex 布局
    這裡分享阮老師(shī)的兩篇文(wén)章 Flex 布局教程:語法篇 、Flex 布局教程:實例篇
  7. 兩個(gè) UI 組件 weui、zanui
  8. .....

部分細節

主要有以下(xià)幾點功能,需要記錄

第一節

  1. 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;
    }
  2. 由于論壇整體格式為 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);
    }
  3. 關(guān)閉了微信登陸的功能。
  4. 獲取帖子(zǐ)時新增了帖子(zǐ)的具體内容,message。
  5. 優化了其他一些細節部分的内容。

第二節

wxParse 做的事情
  1. 輸出帖子(zǐ)時,對 Discuz Code 進行解碼,同時,獲取圖片附件,以及表情圖片。
  2. 接受時,解析文(wén)本的加粗、高亮(liàng)、斜體、字體等。讓帖子(zǐ)呈原樣輸出。
  3. 以上功能,重點在 wmapi/get_post_detail.php 、 wmapi/get_self_post.php 兩個(gè)腳本中(zhōng)重點突出。

第三節

  1. 部分獲取小程序的數據的方式為 get_url_content() 部分為 file_get_content() (生産環境可(kě)能由于設置問(wèn)題,導緻如(rú)此怪異,請結合自身服務器(qì)來看)
  2. 首頁新增加載狀态 (加載中(zhōng)... 沒有更多... 暫無數據...)
  3. 群組帖子(zǐ),無法顯示群組的名稱
  4. 在小程序向服務器(qì)傳遞中(zhōng)文(wén)字符串的時候,先 encodeURI() 再到論壇服務器(qì)上 urldecode() 最後進行 UTF8 -> GBK 的轉碼,當然,是有必要的情況下(xià)。

基礎展示

相關(guān)案例查看更多