php 微信菜单自定义管理
浏览量:436
微信菜单管理
CREATE TABLE `hhs_weixin_menu` ( `id` smallint(5) NOT NULL DEFAULT '' AUTO_INCREMENT, `cat_name` varchar(255) NOT NULL DEFAULT '' COMMENT '菜单栏名称', `cat_type` tinyint(1) unsigned NOT NULL DEFAULT '1' COMMENT '菜单动作类型 0:click 1:view', `keywords` varchar(255) NOT NULL DEFAULT '' COMMENT '关键描述', `weixin_key` varchar(255) NOT NULL DEFAULT '' COMMENT '微信keys地址', `links` varchar(255) NOT NULL DEFAULT '' COMMENT '链接地址', `sort_order` tinyint(3) unsigned NOT NULL DEFAULT '50' COMMENT '位置排序', `weixin_type` tinyint(1) unsigned NOT NULL DEFAULT '0', `parent_id` smallint(5) unsigned NOT NULL DEFAULT '0' COMMENT '类目级别', PRIMARY KEY (`id`), KEY `cat_type` (`cat_type`), KEY `sort_order` (`sort_order`), KEY `parent_id` (`parent_id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8
新增菜单:
菜单列表:
创建菜单
<?php /** * 生成菜单 * @Author: lianghuiju@chuchujie.com * @param: [type] * @DateTime 2017-01-22T17:28:32+0800 */ public function makeMenu() { $this->load->model('WechatMenu'); $this->load->model('WechatCurl'); $menu_info = $this->WechatMenu->selectMenu(); $menu = $this->sort($menu_info,0); foreach ($menu as $key => $val) { if($val['parent_id'] == 0 && $val['cat_type'] == 1) { $arr[$val['cat_id']] = array( 'type' => 'view', 'name' => $val['cat_name'], 'url' => $val['links'], 'sub_button' => array(), 'sort_order' => $val['sort_order'] ); } if($val['parent_id'] == 0 && $val['cat_type'] == 0) { $arr[$val['cat_id']] = array( 'name' => $val['cat_name'], 'sub_button' => array(), 'sort_order' => $val['sort_order'] ); } if($val['parent_id'] != 0 && $val['cat_type'] == 1) { $arr[$val['parent_id']]['sub_button'][] = array( 'type' => 'view', 'name' => $val['cat_name'], 'url' => $val['links'], 'sub_button' => array(), 'sort_order' => $val['sort_order'] ); } if($val['parent_id'] != 0 && $val['cat_type'] == 0) { $arr[$val['parent_id']]['sub_button'][] = array( 'type' => 'click', 'name' => $val['cat_name'], 'url' => $val['links'], 'sub_button' => array(), 'sort_order' => $val['sort_order'] ); } } uasort($arr,array(&$this,'compare')); if(count($arr) > 3) { $arr = array_slice($arr,0,3,true); } $i = 0; foreach ($arr as $key => $val) { if(!isset($val['type'])) { uasort($arr[$key]['sub_button'],array(&$this,'compare')); if(count($arr[$key]['sub_button']) > 5) { $arr[$key]['sub_button'] = array_slice($arr[$key]['sub_button'],0,5,true); } $j =0; $resort = array(); foreach ($arr[$key]['sub_button'] as $k => $v) { unset($arr[$key]['sub_button'][$k]['sort_order']); $resort[$j] = $v; $j++; } $arr[$key]['sub_button'] = $resort; } unset($arr[$key]['sort_order']); $res[$i] = $arr[$key]; $i++; } $token = $this->get_access_token(); $data['button'] = $res; $data = json_encode($data, JSON_UNESCAPED_UNICODE); $result = $this->createMenu($token, $data); if ($result['errmsg'] == 'ok') { echo '<script>alert("创建自定义菜单成功");</script>'; echo '<script>window.location.href = "wechat.php?c=menu&m=menuList";</script>'; exit(); } else { if(!isset($result['errcode'])) { log_message('error',$result); } $msg = "wx_makemenu_fail==========={$result['errcode']}=================={$result['errmsg']}"; log_message('error',$msg); echo '<script>alert("创建自定义菜单失败");</script>'; echo '<script>window.location.href = "wechat.php?c=menu&m=menuList";</script>'; exit(); } } /** * 获取token * @Author: lianghuiju@chuchujie.com * @param: [type] * @DateTime 2017-04-03 T09:58:25+0800 * @return [type] *grant_type 、appid 、 secret 根据自己的微信账号查询并填写真实的信息 * */ public function get_access_token() { $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, "https://api.weixin.qq.com/cgi-bin/token?grant_type=#####&appid=#####&secret=####"); curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET"); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE); curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (compatible; MSIE 5.01; Windows NT 5.0)'); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); curl_setopt($ch, CURLOPT_AUTOREFERER, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, array()); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $tmpInfo = json_decode(curl_exec($ch),true); if (curl_errno($ch)) { return curl_error($ch); } curl_close($ch); return $tmpInfo['access_token']; } /** * 生成菜单 * @Author: lianghuiju@chuchujie.com * @param: [type] * @DateTime 2017-02-03T09:58:44+0800 * @param [type] $token [description] * @param [type] $data [description] * @return [type] */ public function createMenu($token, $data) { $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, "https://api.weixin.qq.com/cgi-bin/menu/create?access_token=" . $token); curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST"); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE); curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (compatible; MSIE 5.01; Windows NT 5.0)'); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); curl_setopt($ch, CURLOPT_AUTOREFERER, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $data); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $tmpInfo = curl_exec($ch); if (curl_errno($ch)) { return curl_error($ch); } curl_close($ch); $arr = json_decode($tmpInfo, true); return $arr; }
神回复
发表评论:
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。