目录 |
打通版微社区接口由系统插件 “掌上论坛 1.3.6”版本及“微信登录 1.0.5” 版本提供,此接口我们通过插件形式向 Discuz! X2.5、Discuz! X3.x 版本提供,Discuz! 新版将内置此接口。通过此接口,您可以让你的插件接入打通版微社区,使您的应用通过微社区在微信中成为推广、营销、增强互动等各方面利器。
同时,微社区上的应用均经过了正版验证,通过非法渠道安装的应用不会在微社区中显示。
这 2 个插件已允许被其他插件合并安装,开发者可在插件的版本设置中设置合并安装“mobile.plugin.25962”和“wechat.plugin.35632”即可。
调用本接口前您需要在插件中引用接口文件
require_once DISCUZ_ROOT . './source/plugin/wechat/wechat.lib.class.php';
WeChatHook::updateAPIHook($data)此方法可以将一个方法注册到微社区嵌入点上 $data 格式:
array( 嵌入点ID => 参数 )$data 参数包含以下内容
KEY | 含义 |
plugin | 插件标识 |
include | 含有待注册方法的文件,此文件应位于您所注册的插件的目录下 |
class | 待注册方法的类名 |
method | 待注册方法名 |
$data = array( array('forumdisplay_variables' => array( 'plugin' => 'wechat', 'include' => 'wsqapi.class.php', 'class' => 'WSQAPI', 'method' => 'forumdisplay_variables' )), array('viewthread_variables' => array( 'plugin' => 'wechat', 'include' => 'wsqapi.class.php', 'class' => 'WSQAPI', 'method' => 'viewthread_variables' )), ); WeChatHook::updateAPIHook($data);嵌入点ID 详见下面的《嵌入点列表》
WeChatHook::getAPIHook($getplugin = '')此方法可以获取已注册的嵌入点
参数 | 参数含义 |
$getplugin | 插件标识,留空表示获取所有内容 |
WeChatHook::delAPIHook($getplugin)此方法可以删除指定插件所有注册的嵌入点
参数 | 参数含义 |
$getplugin | 插件标识 |
WeChatHook::getPluginUrl($pluginid, $param = array())此方法可以返回在微社区中独立页面应用的 URL 地址
参数 | 参数含义 |
$pluginid | 插件标识,同 plugin.php 下的 id 参数 可附加“:”后缀用以调用指定的模块,如“test:show”则调用“test/show.inc.php”文件 |
$param | 此页面所包含的 GET 参数数组 |
嵌入点名称 | 嵌入点ID | 返回值类型 | 附加说明 |
列表页 | |||
边栏 | forumdisplay_sideBar | string | |
主题底部 | forumdisplay_threadBottom | array(tid => HTML 内容, ...) | 只显示一个插件 |
用户信息 | forumdisplay_authorInfo | array(uid => HTML 内容, ...) | |
帖子风格模板 | forumdisplay_threadStyleTemplate | array(风格代号 => HTML 模板,...) | HTML 模板可调用 Discuz! 微社区中的 artTemplate 语法,也可以通过自定义变量替换相应的内容(“帖子风格”嵌入点中的 var 参数) |
帖子风格 | forumdisplay_threadStyle | array( tid => array( 'id' => 风格代号, 'var' => array(变量 => 值, ...) ), ... ) |
风格代号建议用英文字母及数字组成,代号在“帖子风格模板”嵌入点中必须已定义。风格输出时替换模板中“{变量}”的内容为相应的值 |
顶部区域 | forumdisplay_topBar | array( array( 'name' => 区块名称, 'html' => HTML 内容, 'more' => 更多链接(可选), 'noheader' => 无顶部(1或0) ) ... ) |
区块名称建议不超过四个汉字。更多链接所指的页面如果是位于微社区的独立页面应用,请用 getPluginUrl 方法获取 URL 链接 |
头部区域 | forumdisplay_headerBar | string | 只显示一个插件 |
内容页 | |||
边栏 | viewthread_sideBar | string | |
帖子底部 | viewthread_postBottom | array(pid => HTML 内容, ...) | 只显示一个插件 |
用户信息 | viewthread_authorInfo | array(uid => HTML 内容, ...) | |
首帖内容上方 | viewthread_threadTop | string | 只显示一个插件 |
首帖内容下方 | viewthread_threadBottom | string | 只显示一个插件 |
顶部区域 | viewthread_topBar | string | 只显示一个插件 |
个人中心 | |||
用户信息 | profile_authorInfo | string | |
扩展信息 | profile_extraInfo | array( array( 'name' => 名称, 'value' => HTML 内容, 'link' => 链接 ), ... ) |
每条扩展信息中 value 和 link 不能共存,当提供 value 参数时 link 参数失效 |
全局 | |||
全局变量 | module_variables | 可修改或者添加 JSON 变量中的内容,module 为模块 ID(可参考 mobile 插件目录下 api/4/ 中的文件名) |
通常,在微社区嵌入点中输出的 HTML 里禁止存放 JS 相关代码。故此我们提供了以下微社区专属的 JS 函数:
介绍: 通过 Ajax GET 方式请求插件脚本
参数: array(URL 参数 , OUTPUT ID)
URL 参数 | http://.../api/mobile/index.php?module=plugin&URL 参数,同 http://.../plugin.php&URL 参数,如等于“id=wsq_demo:get”,即 wsq_demo/get.inc.php 脚本。 脚本中可把待输出的内容赋值到 $variable 变量中,并用 output() 函数输出 JSON 内容。也可以用 showmessage() 弹出 TIPS 信息(WSQ.tip 函数)。 提醒:需要将“掌上论坛”插件升级到 1.4.1 版本才可正常使用此功能 |
OUTPUT ID(可选) | $variable 内容将输出到此 ID 中 |
介绍: 通过 Ajax POST 方式请求插件脚本
参数: array(URL 参数, FORM ID, OUTPUT ID)
URL 参数 | 同 WSQ.ajaxget |
FORM ID | 表单的 ID |
OUTPUT ID(可选) | $variable 内容将输出到此 ID 中 |
介绍: 显示一个元素
参数: array(HTML ID)
HTML ID | 待显示的 HTML 标记 |
介绍: 隐藏一个元素
参数: array(HTML ID)
HTML ID | 待隐藏的 HTML 标记 |
介绍: 弹出一个 TIPS 信息
参数: array(信息文本, 显示时长)
信息文本 | 显示在 TIPS 中的文本内容 |
显示时长(可选) | 信息文本的显示时间长度,默认为 1000(1秒) |
介绍: 弹出一个对话框,对话框中包含“确定”和“取消”按钮
参数: array('id' => '对话框 ID', 'content' => '信息文本', 'ok' => '确定按钮脚本', 'cancel' => '取消按钮脚本', 'mask' => '是否显示遮罩')
对话框 ID | 对话框的 ID,请确保 ID 的唯一性 |
信息文本 | 显示在对话框中的文本内容 |
确定按钮脚本 | 点击确定按钮后执行的微社区 JS 脚本 |
取消按钮脚本(可选) | 点击取消按钮后执行的微社区 JS 脚本 |
是否显示遮罩(可选) | 是否显示遮罩,默认为 true |
介绍: 跳转一个页面
参数: array(URL)
URL | 待跳转页面的 URL |
function module_variables(&$variables) { $variables['function'] = array( '自定义函数名' => array('微社区 JS 函数', 函数参数), ); }
自定义函数名 | 微社区函数调用时将统一通过自定义函数名进行调用 |
微社区 JS 函数 | 上面公布的微社区函数 |
函数参数 | 上面公布的微社区函数的参数 |
function forumdisplay_variables(&$variables) { $variables['function'] = array( 'myajaxget' => array('WSQ.ajaxget', array('id=wsq_demo:get', 'demooutput')), ); }
<a click="myajaxget()">查看</a><span id="demooutput"></span>微社区 script 脚本:<wsqscript>自定义函数1();自定义函数2();</wsqscript>
<wsqscript> myajaxget(); </wsqscript>函数参数中回调:
$variables['function'] = array( 'mydialog' => array( 'WSQ.dialog', array( 'id' => 'dialog001', 'content' => '您确定要报名?', 'ok' => 'myajaxget()' ) ), );
为了有效的保护应用的版权,微社区上的应用只有真正下载、购买的站点才可显示,因此在开发微社区应用时你必须为自己的开发站点手动添加授权。
如何开始设计 Discuz! 版微社区?
独立页面应用可让指定的应用实现帐号的自动登录,并可自定义底栏。独立页面应用的 URL 链接地址必须通过 getPluginUrl 方法获得,获得后的地址,您可以输出到相应的嵌入点里或者添加到微信公众号的菜单中
在顶部区域添加独立页面入口的范例function forumdisplay_topBar() { require_once DISCUZ_ROOT.'./source/plugin/wechat/wechat.lib.class.php'; $return = array(); $return[] = array( 'name' => 'TopBar1', 'html' => '[authorInfo/TopBar1]', 'more' => WeChatHook::getPluginUrl('wsq_demo:view', array('a' => 1, 'b' => 2)), ); return $return; }上面的独立页面 URL 将跳转到 plugin.php?id=wsq_demo:view&a=1&b=2 页面中,即 wsq_demo/view.inc.php 脚本
在微社区的独立页面中,我们提供了一套 openJS 供您调用,首先在的网页中先引入 openJs
<script type="text/javascript" src="http://wsq.discuz.qq.com/cdn/discuz/js/openjs.js"></script>
介绍: 插件初始化,将名称显示在顶栏
参数: obj = {name:插件名称}
范例WSQ.initPlugin({name:'测试插件'});
介绍: 初始化底栏
参数: array[{name:'菜单名称1', pluginid:'插件标识1', param:'参数1'}, {name:'菜单名称2', pluginid:'插件标识2', param:'参数2'}, ...]
name: 菜单名称
pluginid: 插件标识,同 plugin.php 下的 id 参数,可附加“:”后缀用以调用指定的模块,如“test:show”则调用“test/show.inc.php”文件
param: 此页面所包含的 GET 参数数组 http_build_query 后的字串
范例var menu = new Array(); menu.push({name:"menu1", pluginid: 'wsq_demo:a', param: 'a=1&b=2' }); menu.push({name:"menu2", pluginid: 'wsq_demo' }); WSQ.initBtmBar(menu);
介绍: 显示底栏,显示前请先初始化底栏
介绍: 隐藏底栏
介绍: 显示顶栏
介绍: 隐藏顶栏。独立页面的 GET 中添加 _hd 参数可默认隐藏顶栏
介绍: 初始化微信分享参数
参数: obj = {img:'图片地址', desc:'介绍', title:'标题', pluginid:'插件标识', param: '参数'}
范例var opts = { img: 'http://www.discuz.net/static/image/common/logo.png', desc: '插件页面分享时候的描述', title: '插件页面要分享的标题', pluginid: 'wsq_demo:a', param: 'a=1&b=2' }; WSQ.initShareWx(opts);
介绍: 微信下将跳转到帐号切换页面(因微信下通常会自动登录一个帐号),其他浏览器将跳转到帐号登录页面
参数: obj = {pluginid:'插件标识', param: '参数'}
范例var referer = { pluginid: 'wsq_demo:a', param: 'a=1&b=2' }; WSQ.login(referer);