开放平台
首页
我的应用
我的分销
开发文档
技术社区
魔方加密
WitFrame
注册
登录
资料设置
消息提醒
财务管理
密码安全
身份认证
退出
打通版微社区接口
[TOCM] ## 接口概述 打通版微社区接口由系统插件 “掌上论坛”及“微信登录” 版本提供,此接口我们通过插件形式向 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|待注册方法名| >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`|插件标识| ### 获取独立页面应用的 URL 地址 `WeChatHook::getPluginUrl($pluginid, $param = array())` > 此方法可以返回在微社区中独立页面应用的 URL 地址 |参数|参数含义| |----|----| |`$pluginid`|插件标识,同 plugin.php 下的 id 参数<br />可附加“:”后缀用以调用指定的模块,如`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/ 中的文件名)| > 注意事项 1. 如果多个应用使用同一个嵌入点,部分嵌入点将优先显示第一个返回内容不为空的插件,请告知站长自行到“微信登录”的“接口”设置中调整接口显示顺序</li> 2. 嵌入点如有更新时“掌上论坛”及“微信登录”无需更新,请直接更新您的插件即可 3. 微社区针对嵌入点中的 HTML 内容进行了过滤,不允许输出 `<script>` 等不安全的代码,开发时请注意 ## 嵌入点 JS 函数 通常,在微社区嵌入点中输出的 HTML 里禁止存放 JS 相关代码。故此我们提供了以下微社区专属的 JS 函数: ### WSQ.ajaxget 介绍: 通过 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` 脚本。<br />脚本中可把待输出的内容赋值到 `$variable` 变量中,并用 `output()` 函数输出 JSON 内容。也可以用 `showmessage()` 弹出 TIPS 信息(WSQ.tip 函数)。<br /><span class="xi1">提醒:需要将“掌上论坛”插件升级到 1.4.1 版本才可正常使用此功能</span>| |OUTPUT ID(可选)|`$variable` 内容将输出到此 ID 中| ### WSQ.ajaxpost 介绍: 通过 Ajax POST 方式请求插件脚本 参数: array(URL 参数, FORM ID, OUTPUT ID) |URL 参数|同 WSQ.ajaxget| |----|----| |FORM ID|表单的 ID| |OUTPUT ID(可选)|`$variable` 内容将输出到此 ID 中| ### WSQ.show 介绍: 显示一个元素 参数: array(HTML ID) |----|----| |----|----| |HTML ID|待显示的 HTML 标记| ### WSQ.hide 介绍: 隐藏一个元素 参数: array(HTML ID) |----|----| |----|----| |HTML ID|待隐藏的 HTML 标记| ### WSQ.tip 介绍: 弹出一个 TIPS 信息 参数: array(信息文本, 显示时长) |----|----| |----|----| |信息文本|显示在 TIPS 中的文本内容| |显示时长(可选)|信息文本的显示时间长度,默认为 1000(1秒)| ### WSQ.dialog 介绍: 弹出一个对话框,对话框中包含“确定”和“取消”按钮 参数: ``` array('id' => '对话框 ID', 'content' => '信息文本', 'ok' => '确定按钮脚本', 'cancel' => '取消按钮脚本', 'mask' => '是否显示遮罩') ``` |----|----| |----|----| |对话框 ID|对话框的 ID,请确保 ID 的唯一性| |信息文本|显示在对话框中的文本内容| |确定按钮脚本|点击确定按钮后执行的微社区 JS 脚本| |取消按钮脚本(可选)|点击取消按钮后执行的微社区 JS 脚本| |是否显示遮罩(可选)|是否显示遮罩,默认为 true| ### WSQ.location 介绍: 跳转一个页面 参数: array(URL) |----|----| |----|----| |URL|待跳转页面的 URL| >微社区函数的声明 微社区函数需要在 `module_variables` 嵌入点中进行声明,格式如下: ``` 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')), ); } ``` ### 微社区函数的调用 触摸点击事件:HTML 标记属性 click="自定义函数1();自定义函数2();..." ``` <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! 版微社区? 1. 在“应用管理”菜单选择“发布应用”,选择“插件”,填写相关资料 2. 进入“添加版本”步骤,填写相关资料,无需上传文件包,点击“提交”按钮 3. 选择“统计记录”中的“安装记录”,选择您刚才创建的版本,点击下方的“[添加授权]”链接 4. 填写您的开发站点的 URL 和 网站 ID,如看到“授权微社区访问”请勾选 5. 如您的开发站点已成功开通了 Discuz! 微社区,可在“微信登录”插件的“微社区设置”中看到您的微社区的 URL。建议在 Chrome 浏览器开发模式的 Emulation 模式下模拟手机访问此 URL 6. 开始开发您的第一个 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> ``` ### WSQ.initPlugin(obj) 介绍: 插件初始化,将名称显示在顶栏 参数: obj = {name:插件名称} #### 范例 ``` WSQ.initPlugin({name:'测试插件'}); ``` ### WSQ.initBtmBar(array) 介绍: 初始化底栏 参数: array[{name:'菜单名称1', pluginid:'插件标识1', param:'参数1'}, {name:'菜单名称2', pluginid:'插件标识2', param:'参数2'}, ...] name: 菜单名称 pluginid: 插件标识,同 plugin.php 下的 id 参数,可附加“:”后缀用以调用指定的模块,如`test:show`则调用`test/show.inc.php`文件</p> 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); ``` ### WSQ.showBtmBar() 介绍: 显示底栏,显示前请先初始化底栏 ### WSQ.hideBtmBar() 介绍: 隐藏底栏 ### WSQ.showHeadBar() 介绍: 显示顶栏 ### WSQ.hideHeadBar() 介绍: 隐藏顶栏。独立页面的 GET 中添加 _hd 参数可默认隐藏顶栏 ### WSQ.initShareWx(obj) 介绍: 初始化微信分享参数 参数: 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); ``` ### WSQ.login(obj) <span class="xi1">New!</span> 介绍: 微信下将跳转到帐号切换页面(因微信下通常会自动登录一个帐号),其他浏览器将跳转到帐号登录页面 参数: obj = {pluginid:'插件标识', param: '参数'} #### 范例 ``` var referer = { pluginid: 'wsq_demo:a', param: 'a=1&b=2' }; WSQ.login(referer); ``` ## 范例插件 我们提供了一个完整的范例插件供您更方便快速的了解以上内容,请点击此处安装“[微社区应用开发范例](https://addon.dismall.com/plugins/wsq_demo.html)” ## 常见问题 **Q:为何微社区插件安装后无法在微社区中显示?** >分以下两种情况: 1. 开发中的应用,请参考“开发与测试”中的步骤进行。 2. 已发布的应用,首先请确认站点是否正常开通了微社区。如果已开通微社区,那么是由于当时站点开通微社区时使用的站点ID和安装插件时使用的站点ID不同导致的,可进入“微信登录”插件的“微社区设置”处直接点击下面的保存同步下新的站点ID。 <p class="xg1 y">更新时间:2014-12-04</p>
开发文档
平台介绍
技术文档