Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >我的第一个小程序(Discuz! + 微信小程序)

我的第一个小程序(Discuz! + 微信小程序)

作者头像
极乐君
发布于 2018-02-03 07:15:41
发布于 2018-02-03 07:15:41
5.8K10
代码可运行
举报
文章被收录于专栏:极乐技术社区极乐技术社区
运行总次数:0
代码可运行

关于这个小程序

Github : https://github.com/DowneyL/di...

这个小程序是公司针对一个自家产品的需求,而这个产品就是 Discuz (我知道没啥人用了,就不要吐槽了),版本是 X3.2 ,还是 GBK 编码!

在公司给了需求,稍微学习了一下小程序,就直接开干了,网上找到一个基础版本(可耻的不全是自己写的),修复了一些 BUG,新增了一部分功能,也砍掉了一部分功能,兼容了 GBK 版本的 Discuz,简单设计了一下小程序的样式,产品也就基本成型了。

之所以分享出来,是因为关于 Discuz 相关的文档、产品之类真的是太少了,想在一个平台上记录下来,如果碰见有缘人,没准能给他一些收获。 0.0\

我的收获

  1. 关于 API 的开发有了一些理解(正好 Summer 大神出新书了,买了等更完再看)
  2. 微信公众号开发(原生 PHP 开发微信公众号,以及超神的 Easywechat) 也成功让公司论坛关联了 公众号,实现在公众号上,领取论坛金钱红包。
  3. 微信小程序开发(官方文档,正在开发的小程序的源码,都给了我不少启发)
  4. HTTP 到 HTTPS
  5. 小程序上富文本的解析 (一个优秀的开源项目:wxParse-微信小程序富文本解析组件 ) 作用在于:解析你论坛上的帖子内容,你论坛上加粗的文字,加了颜色的文字,图片等等,都可以原原本本的展示在小程序中。
  6. Flex 布局 这里分享阮老师的两篇文章 Flex 布局教程:语法篇Flex 布局教程:实例篇
  7. 两个 UI 组件 weuizanui
  8. .....

部分细节

主要有以下几点功能,需要记录

第一节

  1. file_get_content() 函数,在论坛上有可能无法使用,已经在 inc.php 文件中实现相同功能的
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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;
} 
  1. 由于论坛整体格式为 GBK,而和微信服务端交互,必须为 UTF-8 编码,所以对接口编码进行了一部分的优化。

输出的情况下,有 error.php 下的 array_iconv() 函数,来对输出数组进行编码的转换。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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() 函数来整合接受编码。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
function getDataForCharset($data) {
    return (CHARSET != 'UTF-8') ? dhtmlspecialchars(WmApiError::array_iconv($data)) : dhtmlspecialchars($data);
} 
  1. 关闭了微信登陆的功能。
  2. 获取帖子时新增了帖子的具体内容,message。
  3. 优化了其他一些细节部分的内容。

第二节

wxParse 做的事情

  1. 输出帖子时,对 Discuz Code 进行解码,同时,获取图片附件,以及表情图片。
  2. 接受时,解析文本的加粗、高亮、斜体、字体等。让帖子呈原样输出。
  3. 以上功能,重点在 wmapi/get_post_detail.phpwmapi/get_self_post.php 两个脚本中重点突出。

第三节

  1. 部分获取小程序的数据的方式为 get_url_content() 部分为 file_get_content() (生产环境可能由于设置问题,导致如此怪异,请结合自身服务器来看)
  2. 首页新增加载状态 (加载中... 没有更多... 暂无数据...)
  3. 群组帖子,无法显示群组的名称
  4. 在小程序向服务器传递中文字符串的时候,先 encodeURI() 再到论坛服务器上 urldecode() 最后进行 UTF8 -> GBK 的转码,当然,是有必要的情况下。

基础展示

本文作者: 八月第五天 原文地址:Discuz! + 微信小程序-实战教程-小程序社区-微信小程序-微信小程序开发社区-小程序开发论坛-微信小程序联盟 声明:本文来源于网络,版权归作者所有,不代表本专栏观点,有什么问题请联系我,谢谢!

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
1 条评论
热度
最新
现在的SaaS小程序,零售和服务业较多,而且开发的较深,各家功能都差不多,像这个论坛小程序还是比较少的,请问可以SaaS嘛、?或者源码
现在的SaaS小程序,零售和服务业较多,而且开发的较深,各家功能都差不多,像这个论坛小程序还是比较少的,请问可以SaaS嘛、?或者源码
回复回复点赞举报
推荐阅读
编辑精选文章
换一批
PHP中一些可用的方法
在自然算法中,数字 2 小于数字 10。在计算机排序中,10 小于 2,这是因为 10 中的第一个数字小于 2。
用户7657330
2020/08/14
3470
文库系统是如何在windows环境中将office文件转换成pdf或图片的?
最近在做一个文库网站项目,需要让文档能在网页中预览。 在网页上能预览,需要实现word文件转pdf, ppt文件转图片。
用户4707279
2023/12/07
4490
文库系统是如何在windows环境中将office文件转换成pdf或图片的?
PHP代理实现用老人机看小说
为了应对当前HTML格式和js脚本对老人机的不友好,我们需要处理一下某些小说网站,让它回到十几年前的样子,剔除大量CSS和JS,精简HTML标签,这样就能够让老人机快速、友好地看小说了。
猿哥
2020/03/04
1.1K0
10个 ThinkPHP 开发常用代码片段
在编写代码的时候有个神奇的汇总是好的!下面这里收集了 10+ PHP 代码片段,可以帮助你开发 PHP 项目。这些 PHP 片段对于 PHP 初学者也非常有帮助,非常容易学习,让我们开始学习吧~
php007
2019/11/18
8090
微信小程序之生成指定页面的太阳码
最近的项目中也是需要生成小程序的邀请太阳码.一开始生成的是个二维码.但是小程序的客户扫了之后总不能让人家跳到H5页面.所以也是研究了一下.一路上也是坎坎坷坷.这里总结下.顺当分享下自己写的代码.哪里写的不好.多多指教下.
桑先生
2019/12/18
8.7K0
小程序如何使用订阅消息(PHP代码+小程序js代码)
本次开发时又再次用到,结合之前的摸爬滚打的经验,我给大家整理下,做到一文就能让你明白[什么是订阅消息?]、[如何使用订阅消息]、[开发订阅消息],还在等什么?小程序学习订阅本专栏不香嘛?!,顺便关注走一走[滑稽]
德宏大魔王
2023/08/08
9680
小程序如何使用订阅消息(PHP代码+小程序js代码)
PHP 生成微信小程序码,并存储图片
泥豆芽儿 MT
2023/10/22
5090
PHP 生成微信小程序码,并存储图片
PHP实现生成小程序二维码带参数进入指定页面、小程序URL scheme实现携带数据跳转小程序
德宏大魔王
2023/08/08
6190
PHP实现生成小程序二维码带参数进入指定页面、小程序URL scheme实现携带数据跳转小程序
URL scheme实现携带数据打开小程序
我这里做一个快速的整理思路: 1、鉴权调用接口凭证(access_token) 2、 HTTPS 调用 POST 请求地址:
德宏大魔王
2023/08/08
6110
URL scheme实现携带数据打开小程序
【黄啊码】微信小程序登录怎么做?如何获取open_id
getOpenid:function(){ var that = this; return new Promise(function (resolve, reject){ wx.login({ success: function (res) { if (res.code) { //发起网络请求 wx.request({ url: conf
黄啊码
2022/01/09
8270
PHP完成微信小程序在线支付功能
微信支付现在用到的地方越来越多,从公众号支付,扫码支付一直到现在的小程序支付等等六种快捷支付方式,公司要求开发小程序商城,就只能我上手处理接口支付问题了,使用最常规的第三方模式,第三方帮特约商户申请商户号并为他进行支付开发,第三方本身不经手资金,支付成功后资金直接进入特约商户商户号。
黄啊码
2021/09/26
1.4K0
uniapp小程序订阅消息推送+Thinkphp5后端代码教程示例
记录一下通过uniapp开发小程序消息推送的实例,配合后端tp推送,之前写的项目是微信小程序而且后端是原生php,这次通过项目记录一下
德宏大魔王
2023/08/08
6620
uniapp小程序订阅消息推送+Thinkphp5后端代码教程示例
php实现微信小程序消息通知「建议收藏」
接入消息通知指引地址:https://mp.weixin.qq.com/debug/wxadoc/dev/api/custommsg/callback_help.html
全栈程序员站长
2022/09/29
2.1K0
php实现微信小程序消息通知「建议收藏」
PHP完成微信小程序在线支付功能
微信支付现在用到的地方越来越多,从公众号支付,扫码支付一直到现在的小程序支付等等六种快捷支付方式,公司要求开发小程序商城,就只能我上手处理接口支付问题了,使用最常规的第三方模式,第三方帮特约商户申请商户号并为他进行支付开发,第三方本身不经手资金,支付成功后资金直接进入特约商户商户号。 废话不多说直接上代码。 小程序访问地址:payfee.php 如果使用 TP 框架处理后台的话,写成方法即可 include 'WeixinPay.php'; $appid=''; //小程序 appid $openid= $
沈唁
2018/05/24
4.5K5
【黄啊码】用原生PHP对接微信小程序支付
基础库 2.22.1 开始支持,低版本需做兼容处理。 以 Promise 风格 调用:不支持 小程序插件:支持,需要小程序基础库版本不低于 2.22.1 插件中发起支付。
黄啊码
2022/06/15
1.2K0
【黄啊码】用原生PHP对接微信小程序支付
浅谈 php 采用curl 函数库获取网页 cookie 和 带着cookie去访问 网页的方法!!!!
由于近段时间帮朋友开发一个能够查询正方教务系统的微信公众平台号。有所收获。这里总结下个人经验。 开讲前,先吐槽一下新浪云服务器,一个程序里的   同一个函数  在PC测试可以正常运行,在它那里就会挂的
林冠宏-指尖下的幽灵
2018/01/02
6K0
微信扫码登录详解 - 可做登录授权等
可用作微信扫码登录,扫码授权等,自行使用。 <?php header('Access-Control-Allow-Origin:*'); header('Content-type:applicatio
骤雨重山
2022/01/17
1.9K1
PHPiconv函数
今天在修改论文在线的时候,遇到了iconv这个函数。学习一下 header('Content-Type: application/vnd.ms-excel;charset=UTF-8"'); $name=iconv('utf-8', 'gb2312', $data['year'].'年,第'.$data['period'].'期通信录'); header('Content-Disposition: attachment;filename="' . $name . '.xls"'); header('Cach
wangxl
2018/03/07
1K0
微信开发之小程序发送订阅消息
微信小程序在年初也是进行了升级.将原来的模板消息升级为订阅消息.也是在这几天研究了下.发现和公众号的模板消息有一种异曲同工的感觉.
桑先生
2020/02/13
7930
微信群发sdk「建议收藏」
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/135884.html原文链接:https://javaforall.cn
全栈程序员站长
2022/08/19
1.3K0
推荐阅读
相关推荐
PHP中一些可用的方法
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验