🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
[TOC] # 分享 ## 一:相关说明 在 [文章页](http://http://hongweizhiyuan.oschina.io/newthink_tpl/tpl/AUI/AUI2.1/module_article/article2.html) 这个链接中,我们可以看到,里边即有分享的代码页,其关键代码如下: ``` <!--分享--> <div class="aui-bar-tab-item" id="share" tapmode style="width: 2.2rem;" onclick="openSharebox()"> <i class="aui-iconfont aui-icon-share"></i> </div> <!--分享--> <div class="aui-bar-tab-item" id="share" tapmode style="width: 2.2rem;" onclick="openSharebox()"> <i class="aui-iconfont aui-icon-share"></i> </div> <script> //打开分享 var sharebox = new auiSharebox(); function openSharebox(){ sharebox.init({ frameBounces:true,//当前页面是否弹动,(主要针对安卓端) buttons:[{ image:'images/share/wx.png', text:'微信', value:'wx'//可选 },{ image:'images/share/wx-circle.png', text:'朋友圈', value:'wx-circle' },{ image:'images/share/qq.png', text:'QQ好友', value:'qq' },{ image:'images/share/qzone.png', text:'QQ空间', value:'qq-qzone' },{ image:'images/share/qq-weibo.png', text:'QQ微博' },{ image:'images/share/sina-weibo.png', text:'新浪微博' },{ image:'images/share/message.png', text:'短信' }], col:5, cancelTitle:'关闭'//可选,当然也可以采用下面的方式使用图标 // cancelTitle:'<i class="aui-iconfont aui-icon-close aui-font-size-16"></i>'//可选 },function(ret){ if(ret){ //回调的使用 //document.getElementById("button-index").textContent = ret.buttonIndex; //document.getElementById("button-value").textContent = ret.buttonValue; } }) } </script> ``` 因为我们这里只讲到 `微信会话分享,朋友圈分享`,故相关代码做一下修改,以下代码修改为: ``` <!--分享--> <div class="aui-bar-tab-item" id="share" tapmode style="width: 2.2rem;" onclick="openSharebox()"> <i class="aui-iconfont aui-icon-share"></i> </div> <!--分享--> <div class="aui-bar-tab-item" id="share" tapmode style="width: 2.2rem;" onclick="openSharebox()"> <i class="aui-iconfont aui-icon-share"></i> </div> <script> //打开分享 var sharebox = new auiSharebox(); function openSharebox(){ sharebox.init({ frameBounces:true,//当前页面是否弹动,(主要针对安卓端) buttons:[{ image:'../../image/share/wx.png', text:'微信', value:'wx'//可选 },{ image:'images/share/wx-circle.png', text:'朋友圈', value:'wx-circle' }], col:5, cancelTitle:'关闭'//可选,当然也可以采用下面的方式使用图标 // cancelTitle:'<i class="aui-iconfont aui-icon-close aui-font-size-16"></i>'//可选 },function(ret){ if(ret){ //回调的使用 //document.getElementById("button-index").textContent = ret.buttonIndex; //document.getElementById("button-value").textContent = ret.buttonValue; } }) } </script> ``` ## 二:分享朋友圈相关操作 接下来,我们就开始操作,包括以下几个步骤: >1、在config.xml引入分享模块儿 2、进行分享的JS操作并加入分享的相关代码 3、加入 shareWebpage 函数 4、分享文章模板里加入相关代码 ### 步骤一:在config.xml引入分享模块儿 在根目录下的`config.xml`下加入如下代码: ``` <feature name="wx"> <param name="urlScheme" value="wx4489f0b8009731e9"/> <param name="apiKey" value="wx4489f0b8009731e9"/> <param name="apiSecret" value="4ef1c72c37b414dd82f31ec12c3833f3"/> </feature> ``` 注意: 1、首先这三个参数是从微信开放平台获取这里的信息; 2、这里的 `urlScheme` 和 `apiKey` 代码是一样的,`apiSecret` 查看的话需要重置!如图: ![mark](http://qiniu.newthink.cc/blog/20170329/123505995.png) 3、分享后的作者就是“微信开放平台”的作者,所以起名儿也是很重要的!如图: ![mark](http://qiniu.newthink.cc/blog/20170329/123625521.png) ### 步骤二:进行分享的JS操作并加入分享的相关代码 对上边的一些静态页面做修改,如: ``` <script> //打开分享 var sharebox = new auiSharebox(); function openSharebox(){ sharebox.init({ frameBounces:true,//当前页面是否弹动,(主要针对安卓端) buttons:[{ image:'../../image/share/wx.png', text:'微信', value:'wx'//可选 },{ image:'../../image/share/wx-circle.png', text:'朋友圈', value:'wx-circle' }], col:5, cancelTitle:'关闭'//可选,当然也可以采用下面的方式使用图标 },function(ret){ if(ret){ //朋友圈分享,注:描述不起作用(由于微信平台限制,对不同平台部分场景本参数无效) //缩略图有要求,暂时以本地路径为限 if (ret.buttonIndex == 1){ shareWebpage('session','啤咔聚聚:'+wx_title,wx_description,'widget://icon/logo.jpg',wx_url) } if (ret.buttonIndex == 2){ shareWebpage('timeline','啤咔聚聚:'+wx_title,wx_description,'widget://icon/logo.jpg',wx_url) } } }) } ``` 注:以上的 `wx_title`、`wx_description`、`wx_url` 几个参数,需要我们在文章函数加入相关代码,如下: ``` //文章内容 function portalArticle(){ let object_id = api.pageParam.object_id; let term_id = api.pageParam.term_id; let serverURL = Config.api.Portal_Article; let data = {values:{id:object_id}}; let callback = function(ret){ if(ret.data.info){ set_doT(ret.data.info, 'portal_article_script', 'portal_article_html',true); //微信分享-全局变量 wx_title = ret.data.info.post_title; wx_description = ret.data.info.post_excerpt; wx_thumb = serverUrl + 'data/upload/' + ret.data.info.smeta.thumb; wx_url = serverUrl + 'index.php?g=Portal&m=article&a=index&id='+object_id+'&cid='+term_id; } else { showToast('文章内容暂时没有数据!', 2, 'bottom'); } }; runAjax(serverURL, data,callback); } ``` 仔细看上边的代码,以下代码片断就是我们新加的: ``` //微信分享-全局变量 wx_title = ret.data.info.post_title; wx_description = ret.data.info.post_excerpt; wx_thumb = serverUrl + 'data/upload/' + ret.data.info.smeta.thumb; wx_url = serverUrl + 'index.php?g=Portal&m=article&a=index&id='+object_id+'&cid='+term_id; ``` 这里是全局变量,不用加 `var wx_title` 之类的! ### 步骤三:加入 shareWebpage 函数 我在 weixin.js 已经封装了关于微信的很多函数,这里贴出这里用的函数即可! ``` /** * 分享网页 * * @param Vscene 场景,session 会话、timeline 朋友圈、favorite 收藏 * @param title string (可选项)分享网页的标题 * @param description string (可选项)分享网页的描述。由于微信平台限制,对不同平台部分场景本参数无效 * @param thumb string (可选项)分享网页的缩略图地址,要求本地路径(fs://、widget://)大小不能超过32K,需要路径包含图片格式后缀,否则如果原图片为非png格式,会分享失败 * @param contentUrl string 分享网页的 url 地址,长度不能超过10k。 * * @example <span tapmode onclick="shareWebpage('session')"> shareWebpage('session') </span> * @example <span tapmode onclick="shareWebpage('timeline')"> shareWebpage('timeline') </span> * @example <span tapmode onclick="shareWebpage('favorite')"> shareWebpage('favorite') </span> */ function shareWebpage(Vscene,title,description,thumb,contentUrl) { let wx = api.require('wx'); wx.shareWebpage({ apiKey : '', scene : Vscene, title : title, description : description, thumb : thumb, contentUrl : contentUrl }, function(ret, err) { if (ret.status) { showToast('分享成功!', 2, 'bottom'); //alert(JSON.stringify(ret)) } else { showToast('分享失败!', 2, 'bottom'); //alert(JSON.stringify(err)) } }); } ``` ### 步骤四:分享文章模板里加入相关代码 在我们的模块儿 portal 的 templets 加入相关代码,因为我们分享的时候,不需要更多的操作,只要看到我们分享的内容即可!什么收藏、查看、分享、评论都不需要,所以这里的代码就很精简,我的目录是`themes/default/Portal/article.html` ,具体相关代码如下 ``` <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="viewport" content="maximum-scale=1.0,minimum-scale=1.0,user-scalable=0,width=device-width,initial-scale=1.0"/> <meta name="format-detection" content="telephone=no,email=no,date=no,address=no"> <title>网站标题- {$post_title}</title> <meta name="keywords" content="{$post_keywords}" /> <meta name="description" content="{$post_excerpt}"> <link rel="stylesheet" type="text/css" href="__TMPL__Public/css/aui.css" /> <style type="text/css"> body{background: #FFFFFF;font-family: "微软雅黑";} /*文章*/ .aui-content-padded h2{line-height: 36px; border-bottom: 1px solid #dddddd;padding-bottom: 10px;} .aui-content-padded img{margin-bottom: 15px;margin-top: 15px;} .aui-content-padded p{line-height: 24px;} </style> </head> <body> <!--文章/start--> <div class="aui-content-padded" id="portal_article_html"> <h2>{$post_title}</h2> <div class="aui-font-size-14" style="color:#999999;padding-top:10px;">{$post_date}</div> <div> {$post_content} </div> </div> <!--文章/end--> </body> </html> ``` 是不是很精简呢!这样我们就可以进行分享操作了! ## 问答