自定义菜单能够帮助公众号丰富界面,让用户更好更快地理解公众号的功能。
、自定义菜单最多包括3个一级菜单,每个一级菜单最多包含5个二级菜单。
2、一级菜单最多4个汉字,二级菜单最多7个汉字,多出来的部分将会以“...”代替。
3、创建自定义菜单后,菜单的刷新策略是,在用户进入公众号会话页或公众号profile页时,如果发现上一次拉取菜单的请求在5分钟以前,就会拉取一下菜单,如果菜单有更新,就会刷新客户端的菜单。测试时可以尝试取消关注公众账号后再次关注,则可以看到创建后的效果。
代码如下:
public function index(){
$mp = getCurrentMp();
if (empty($mp)) {
$this->error('无此使用的公众号',U('mp/index'));
}
$data =M('mp_menu')->where("mp_id={$mp['id']}")->order('id')->select();
// dump($data);
// exit;
$data2=$data;
foreach ($data as $k => $v) {
foreach ($data2 as $k2 => $v2) {
if ($v['index']==$v2['pindex']) {
$data[$k]['sub'][]=$v2;
unset($data[$k2]);
}
}
}
// print_r($data);
// exit;
$this->assign('mpInfo',$mp);
$this->assign('list',$data);
$this->display();
}
//发布公众号自定义菜单
public function menuedit(){
//获取当前使用的公众号
$this->mp=$mp;
$mp =getCurrentMp();
if (empty($mp)) {
$this->ajaxReturn(array('error'=>true,'msg'=>'无使用的公众号','url'=>U('mp/index')));
exit;
}
//写入数据库
$data1 = I('post.data');
foreach ($data1 as &$value) {
$value['mp_id'] = $mp['id'];
}
$model=M('mp_menu');
$model->where("mp_id={$mp['id']}")->delete();
$model->addAll($data1);
//创建微信公众号的菜单
include APP_PATH .'LaneWeChat/lanewechat.php';
$ret = Menu::setMenu($data1);
file_put_contents('menu.txt', $ret);
// print($ret);
if ($ret === true) {
$this->ajaxReturn(array('msg'=>'创建菜单成功'));
}else{
$this->ajaxReturn(array('msg'=>$ret));
}
}