php 微信菜单自定义管理
浏览量:441
微信菜单管理
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;
}
神回复
发表评论:
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。