教程:如何在帝国CMS中设置微信分享带缩略图
帝国CMS微信分享带缩略图教程:首先,确保你的网站已经安装了帝国CMS系统。然后,登录后台管理界面,找到“模板”选项卡,点击“模板标签管理”。在这里,你可以为文章添加自定义的标签,例如“微信分享缩略图”。接下来,在文章编辑页面,将这个标签添加到你想要显示缩略图的文章标题中。最后,发布文章并生成静态页面。现在,当你分享这篇文章到微信时,缩略图将会显示出来。这样,你就可以通过帝国CMS实现微信分享带缩略图的功能了。
前提是必须有公众号,且公众号中需要填写你的域名为安全域名才能成功。以下分享接口已采用微信开发文档中最新的接口,网上很多人使用的原接口即将失效了。
第一步:部署jssdk.php到根目录
第二步:微信公众号中设置JS安全域
公众号设置--功能设置--JS接口安全域名
第三步:增加模版变量,填入代码,appid和appsecret填入你的微信公众号相关的信息(模版变量紧挨着</body>,放在它前面):
帝国CMS微信分享代码
<?//开始微信分享代码require'../../jssdk.php';$appid='******';$appsecret='******';$jssdk=newJSSDK($appid,$appsecret);$signPackage=$jssdk->GetSignPackage();//结束微信分享代码?><scriptsrc="http://res.wx.qq.com/open/js/jweixin-1.4.0.js"></script><script>//注意:所有的JS接口只能在公众号绑定的域名下调用,公众号开发者需要先登录微信公众平台进入“公众号设置”的“功能设置”里填写“JS接口安全域名”。//如果发现在Android不能分享自定义内容,请到官网下载最新的包覆盖安装,Android自定义分享接口需升级至6.0.2.58版本及以上。//完整JS-SDK文档地址:http://mp.weixin.qq.com/wiki/7/aaa137b55fb2e0456bf8dd9148dd613f.htmlwx.config({debug:!1,appId:'<?phpecho$signPackage["appId"];?>',timestamp:<?phpecho$signPackage["timestamp"];?>,nonceStr:'<?phpecho$signPackage["nonceStr"];?>',signature:'<?phpecho$signPackage["signature"];?>',jsApiList:["updateAppMessageShareData","updateTimelineShareData","onMenuShareWeibo","onMenuShareQZone"]});wx.ready(function(){//在这里调用APIwx.checkJsApi({jsApiList:["updateAppMessageShareData","updateTimelineShareData","onMenuShareWeibo","onMenuShareQZone"],//需要检测的JS接口列表,所有JS接口列表见附录2,success:function(res){//alert(JSON.stringify(res));if(res.errMsg!='checkJsApi:ok'){alert('请升级您的微信版本');return;}}});//分享Demo//获取“分享给朋友”按钮点击状态及自定义分享内容接口wx.updateAppMessageShareData({title:'<?=$navinfor[title]?>',//分享标题desc:'<?=$navinfor[smalltext]?>',//分享描述link:'http://www.xxx.com<?=$navinfor[titleurl]?>',//分享链接imgUrl:'<?=$navinfor[titlepic]?>',//分享图标success:function(){//设置成功}});//获取“分享到朋友圈”按钮点击状态及自定义分享内容接口wx.updateTimelineShareData({title:'<?=$navinfor[title]?>',//分享标题link:'http://www.xxx.com<?=$navinfor[titleurl]?>',//分享链接imgUrl:'<?=$navinfor[titlepic]?>',//分享图标success:function(){//设置成功}});wx.onMenuShareWeibo({title:'<?=$navinfor[title]?>',//分享标题desc:'<?=$navinfor[smalltext]?>',//分享描述link:'http://www.xxx.com<?=$navinfor[titleurl]?>',//分享链接imgUrl:'<?=$navinfor[titlepic]?>',//分享图标success:function(){//用户确认分享后执行的回调函数},cancel:function(){//用户取消分享后执行的回调函数}});});</script>
帝国CMS微信分享jssdk.php代码
<?phpclassJSSDK{private$appId;private$appSecret;publicfunction__construct($appId,$appSecret){$this->appId=$appId;$this->appSecret=$appSecret;}publicfunctiongetSignPackage(){$jsapiTicket=$this->getJsApiTicket();$url="http://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";$timestamp=time();$nonceStr=$this->createNonceStr();//这里参数的顺序要按照key值ASCII码升序排序$string="jsapi_ticket=$jsapiTicket&noncestr=$nonceStr×tamp=$timestamp&url=$url";$signature=sha1($string);$signPackage=array("appId"=>$this->appId,"nonceStr"=>$nonceStr,"timestamp"=>$timestamp,"url"=>$url,"signature"=>$signature,"rawString"=>$string);return$signPackage;}privatefunctioncreateNonceStr($length=16){$chars="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";$str="";for($i=0;$i<$length;$i++){$str.=substr($chars,mt_rand(0,strlen($chars)-1),1);}return$str;}privatefunctiongetJsApiTicket(){//jsapi_ticket应该全局存储与更新,以下代码以写入到文件中做示例$data=json_decode(file_get_contents("jsapi_ticket.json"));if($data->expire_time<time()){$accessToken=$this->getAccessToken();$url="https://api.weixin.qq.com/cgi-bin/ticket/getticket?type=jsapi&access_token=$accessToken";$res=json_decode($this->httpGet($url));$ticket=$res->ticket;if($ticket){$data->expire_time=time()+7000;$data->jsapi_ticket=$ticket;$fp=fopen("jsapi_ticket.json","w");fwrite($fp,json_encode($data));fclose($fp);}}else{$ticket=$data->jsapi_ticket;}return$ticket;}privatefunctiongetAccessToken(){//access_token应该全局存储与更新,以下代码以写入到文件中做示例$data=json_decode(file_get_contents("access_token.json"));if($data->expire_time<time()){$url="https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={$this->appId}&secret={$this->appSecret}";$res=json_decode($this->httpGet($url));$access_token=$res->access_token;if($access_token){$data->expire_time=time()+7000;$data->access_token=$access_token;$fp=fopen("access_token.json","w");fwrite($fp,json_encode($data));fclose($fp);}}else{$access_token=$data->access_token;}return$access_token;}privatefunctionhttpGet($url){$curl=curl_init();curl_setopt($curl,CURLOPT_RETURNTRANSFER,true);curl_setopt($curl,CURLOPT_TIMEOUT,500);curl_setopt($curl,CURLOPT_URL,$url);$res=curl_exec($curl);curl_close($curl);return$res;}}?>