精华内容
下载资源
问答
  • 自定义菜单,可以显示图标,含有源码 程序简单易懂,菜单多种样式可以选择
  • 微信公众号菜单展现

    原因是,最后一个元素有逗号

     

    <?php
    
    $appid = "wx111111111111111";
    $appsecret = "2222222222222222222222222222";
    $url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=$appid&secret=$appsecret";
    
    $output = https_request($url);
    $jsoninfo = json_decode($output, true);
    
    $access_token = $jsoninfo["access_token"];
    
    
    $jsonmenu = '{
          "button":[
          {
                "name":"明星产品",
               "sub_button":[
               {
    	               "type":"view",
    	               "name":"限时抢购",
    	               "url":"http://www.dadangsc.com/wx.php/home/goods/goodsinfo/id/268.html" //注意此处不允许有逗号,否则后面的菜单都展现不出来
    	           },
    	            {
    	               "type":"view",
    	               "name":"每日推荐",
    	               "url":"http://www.dadangsc.com/wx.php/home/goods/goodsinfo/id/243.html"
    	            },
    	            {
    	               "type":"view",
    	               "name":"每周爆款",
    	               "url":"http://www.dadangsc.com/wx.php/home/goods/goodsinfo/id/96.html"
    	            },
    	            {
    	               "type":"view",
    	               "name":"月度明星",
    	               "url":"http://www.dadangsc.com/wx.php/home/goods/goodsinfo/id/27.html"
    	            }]
          
    
           },
           {
               "name":"进入商城",
               "type":"view",
               "url":"http://www.dadangsc.com/wx.php",
               "sub_button": []
           },
           {
               "name":"用户中心",
               "sub_button":
               [
    	            {
    	               "type":"view",
    	               "name":"我的主页",
    	               "url":"http://www.dadangsc.com/wx.php/home/user/userindex/test/four.html"
    	            },
    	            {
    	               "type":"view",
    	               "name":"快递查询",
    	               "url":"http://m.kuaidi100.com/#input"
    	            },
    	            {
    	               "type":"view",
    	               "name":"在线客服",
    	               "url":"http://chat8.live800.com/live800/chatClient/chatbox.jsp?companyID=820706&configID=151385&jid=5530154684"
    	            }
               ]
           }]
     }';
    
    
    $url = "https://api.weixin.qq.com/cgi-bin/menu/create?access_token=".$access_token;
    $result = https_request($url, $jsonmenu);
    var_dump($result);
    
    function https_request($url,$data = null){
        $curl = curl_init();
        curl_setopt($curl, CURLOPT_URL, $url);
        curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
        curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);
        if (!empty($data)){
            curl_setopt($curl, CURLOPT_POST, 1);
            curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
        }
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
        $output = curl_exec($curl);
        curl_close($curl);
        return $output;
    }
    ?>
    

     

    欢迎关注

    硕士茂哥
    硕士茂哥

     

     

     

    展开全文
  • 前段时间,开发特别着急,所以对于自定义菜单的设置是以代码为基准编写的在,能实现高可用。现在我将自定义菜单制作成数据表中,通过读取数据库表来进行创建自定义菜单 1、数据库表 package ...

    前段时间,开发特别着急,所以对于自定义菜单的设置是以代码为基准编写的在,不能实现高可用。现在我将自定义菜单制作成数据表中,通过读取数据库表来进行创建自定义菜单

    1、数据库表

    package com.ihaidou.entity.db.wechat;
    
    import io.swagger.annotations.ApiModelProperty;
    import lombok.Data;
    import lombok.experimental.Accessors;
    import org.hibernate.annotations.UpdateTimestamp;
    
    import javax.persistence.*;
    import java.util.Date;
    
    /**
     * @Desc: 子菜单Url
     * @Author HealerJean
     * @Date 2018/6/1  下午5:45.
     */
    @Entity
    @Table(name="wechat_menu_url")
    @Data
    @Accessors(chain = true)
    public class WeChatMenu {
    
    
        @Id
        @GeneratedValue(strategy = GenerationType.IDENTITY)
        private Long id;
    
        @ApiModelProperty(value = "微信公众号 主键")
        private Long wechatBusinessNoId ;
    
        @ApiModelProperty(value = "菜单对应的eventkey")
        private String eventkey ;
    
        @ApiModelProperty(value = "view菜单对应的url或者是图片对应的url")
        private String url;
    
        @ApiModelProperty("菜单的名字")
        private String name; //菜单名字
    
        @ApiModelProperty(value = "包含图片和media以及返回菜单的文字内容")
        private String value ; //菜单内容
    
        @Temporal(TemporalType.TIMESTAMP)
        @Column(columnDefinition="TIMESTAMP DEFAULT CURRENT_TIMESTAMP",insertable = true,updatable = false)
        private Date cdate;
    
        @UpdateTimestamp
        @Temporal(TemporalType.TIMESTAMP)
        private Date udate;
    
        @ApiModelProperty(value = "从左到右顺序 , 1 2 3")
        private Integer wOrder;
    
        @ApiModelProperty(value = "从上到下顺序")
        private Integer hOrder;
    
        @ApiModelProperty(value = "是否底部菜单")
        private boolean footMenu;
    
        @ApiModelProperty(value = "菜单类型 1 url类型  ,2 回复文字类型,3 回复图片类型")
        private Integer type ;
    
        @ApiModelProperty(value = "1表示作为子菜单,2表示作为其他选项")
        private Integer useType ;
    
        @ApiModelProperty(value = "菜单是否删除")
        private Integer status ;
    
    
    }
    
    
    /**
     
    
     create table wechat_menu(
     id BIGINT(20) not null auto_increment,
     wechatBusinessNoId BIGINT(20) default null ,
     url varchar(500) default null,
     eventkey varchar(100) default null,
     name varchar(50) default null,
     value varchar(1000) default '',
     wOrder int(11) default 0,
     hOrder int(11) default 0,
     footMenu int(11) default 0 ,
     status int(11) default 0,
     type int(11) default 0,
     useType int(11) default  1 comment '1表示作为子菜单,2表示作为其他选项',
     cdate timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
     udate timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    
     PRIMARY key (id));
    
    
    
     */
    
    
    

    2、开始创建自定义菜单

    
    @Slf4j
    @Service
    public class MenuServiceImpl  implements MenuService{
    
        @Resource
        private WeChatMenuRepository weChatMenuRepository;
    
        @Override
        public String byControllerSetMenu(WeChatBusinessNo weChatBusinessNo) {
    
    
            List<WeChatMenu> weChatMenus = weChatMenuRepository.findByWechatBusinessNoIdAndStatusAndUseType(weChatBusinessNo.getId(),1, 1);
    
            Menu menu = new Menu();
            List<BasicButton> menuBasicButton = new ArrayList<>(); //底部菜单
    
            Map<Integer, List<WeChatMenu>> weightMenu = weChatMenus.stream().sorted(Comparator.comparing(WeChatMenu::getWOrder)).collect(Collectors.groupingBy(WeChatMenu::getWOrder));
            for(Integer wOrder:weightMenu.keySet()){
    
    
                BasicButton basicButton = new BasicButton(); //纵向菜单
                List<BasicButton> basicButtons = new ArrayList<>();
    
                boolean isOnlyOne = false ; //底部菜单是不是只有一个,false表示不是只有一个 true表示底部菜单只有一个
                if(weightMenu.get(wOrder).size()==1){
                    isOnlyOne = true ;
                }
    
                boolean finalIsOnlyOne = isOnlyOne;
                weightMenu.get(wOrder).stream().sorted(Comparator.comparing(WeChatMenu::getHOrder)).forEach(
                        weChatMenu -> {
                            switch (weChatMenu.getType()){
                                case 1://1 url类型
                                    ViewButton viewButton = new ViewButton();
                                    viewButton.setName(weChatMenu.getName());
                                    viewButton.setUrl(weChatMenu.getUrl());
                                    viewButton.setType(WechatMenuParams.VIEW);
                                    if(finalIsOnlyOne ==false){
                                        basicButtons.add(viewButton);
                                    }else {
                                        menuBasicButton.add(viewButton);
                                        break; //直接进入下一个
                                    }
                                    break;
                                case 2://2 回复文字类型
                                case 3://3 回复图片类型
                                    ClickButton clickButton = new ClickButton();
                                    clickButton.setName(weChatMenu.getName());
                                    clickButton.setKey(weChatMenu.getEventkey());
                                    clickButton.setType(WechatMenuParams.CLICK);
                                    if(finalIsOnlyOne ==false){
                                        basicButtons.add(clickButton);
                                    }else {
                                        menuBasicButton.add(clickButton);
                                        break; //直接进入下一个
                                    }                                 break;
                                default:
                                    break;
                            }
                            //必须保证底部菜单是多个的情况
                            if(weChatMenu.isFootMenu()==true){
                                basicButton.setName(weChatMenu.getName());
                            }
    
                        }
                );
    
                if(finalIsOnlyOne==false){
                    basicButton.setSub_button( basicButtons.stream().toArray(BasicButton[]::new));
                    menuBasicButton.add(basicButton);
                }
            }
            menu.setButton(menuBasicButton.stream().toArray(BasicButton[]::new));
    
    
            String menuJson = JSONObject.fromObject(menu).toString();
            log.info(menuJson);
    
            //此处改为自己想要的结构体,替换即可
    
            String access_token= AccessToakeUtil.getAccessToaken(weChatBusinessNo);
            String createMenuUrl = WechatMenuParams.CREATE_MENU_URL+access_token;
    
            String body =    SdkHttpHelper.doJsonPost(createMenuUrl,menuJson);
            log.info("创建自定义菜单 返回结果"+body);
    
            String result = JSONObject.fromObject(body).getString("errmsg");
            if(StringUtils.equals(result,"ok")){
                log.info("创建自定义菜单成功");
                return  result;
            }else{
                log.error("创建创建自定义菜单失败自定义菜单失败");
            }
    
            return "创建失败";
    	}
    }
    
    

    ContactAuthor

    展开全文
  • 添加自定义菜单后左侧菜单不显示。解决方法如下: 在子菜单里再添加一次主导航菜单, 例如你新增了一个顶级菜单 会员管理 user/index 在会员管理下 继续添加一条 会员管理 user/index 子菜单就显示正常了、 ...
    添加自定义菜单后左侧菜单不显示。解决方法如下:
    

    在子菜单里再添加一次主导航菜单,
    例如你新增了一个顶级菜单 会员管理 user/index
    在会员管理下 继续添加一条 会员管理 user/index 子菜单就显示正常了、

    否则不显示
    展开全文
  • 自定义菜单

    2013-09-24 23:15:05
    不错的自定义菜单源码。编译显示后,点击菜单键,屏幕中间显示3X4的菜单项,点击更多显示后一页内容。 十分实用!!
  • magento 自定义菜单插件,自定义菜单显示行和列,显示层级。
  • 支持自定义菜单

    2021-04-05 03:52:48
    作者DecembeGrirl,源码YSHYSlidController,在Appdelegate中只需要简单的设置就可以实现 侧滑菜单功能,支持点击更多按钮显示/关闭菜单栏, 支持滑动显示/关闭菜单栏,支持自定义菜单
  • 添加自定义菜单后左侧菜单不显示。解决方法如下: 在子菜单里再添加一次主导航菜单, 例如你新增了一个顶级菜单 会员管理 user/index 在会员管理下 继续添加一条 会员管理 user/index 子菜单就显示正常了、 ...
    添加自定义菜单后左侧菜单不显示。解决方法如下:
    

    在子菜单里再添加一次主导航菜单,
    例如你新增了一个顶级菜单 会员管理 user/index
    在会员管理下 继续添加一条 会员管理 user/index 子菜单就显示正常了、

    否则不显示
    展开全文
  • Kotlin自定义菜单控件

    2021-01-20 10:19:21
    本文实例为大家分享了Kotlin自定义菜单控件的具体代码,供大家参考,具体内容如下 首先贴一下效果图 思路:菜单控件分两部分,一是点击的子按钮(RecordButton),二是包裹着子按钮的容器(RecordMenu)。 子按钮...
  • 6.18 在没有ondraw() 绘画之前如何获取view 的大小。 可以在其父类,或View类的 onlayout()方法中getHeight(),getWidth()获取。...动画结束后位置还原。 6.19 eclipse中如何查询一个类的继承关系。
  • 创建自定义菜单,得到相应码是0,说明添加成功,使用get请求https://api.weixin.qq.com/cgi-bin/menu/get?access_token=MY_ACCESS_TOKEN 也能得到自己创建菜单的相应,但是在手机界面却看到菜单。然后我就停用了...
  • Flutter 实现长按显示上下文自定义菜单 很多场景需要我们点击或长按显示操作菜单,如点击gridview中的一项显示上下文菜单,本博就以gridview来作为例子,具体效果如下 要在指定的位置显示上下文菜单,需要解决以下...
  • excel 自定义菜单 自定义Excel右键菜单 (Customize Excel Right-Click Menus)Do you ever right-click on something in Excel, and the command that you wanted to use isn't on that pop-up menu? For example, ...
  • 一、自定义菜单创建接口说明 自定义菜单能够帮助公众号丰富界面,让用户更好更快地理解公众号的功能。开启自定义菜单后,公众号界面如图所示: 请注意: ①自定义菜单最多包括3个一级菜单,每个一级菜单最多...
  • Android Studio 底部自定义菜单,菜单上有消息数提醒,很实用
  • 自定义菜单显示函数 register_nav_menu () 自定义菜单注册函数 – 单数 register_nav_menus () 自定义菜单注册函数 – 复数 (很蛋疼的一个复数形式) 以下举例均用 register_nav_menus () 这个复数形式,以免混淆。...
  • Delphi Edit右键系统菜单加自定义菜单项,注意是添加,不是用新菜单替换系统菜单!
  • 本文实例讲述了Android编程自定义菜单实现方法。分享给大家供大家参考,具体如下: 在android开发的过程中系统自带的菜单往往满足了开发中的一些需求,比如说一排最多只能放置三个菜单,坐多只能放置6个,再多的话...
  • 为什么自定义菜单创建成功了,在微信客户端的公众账号上却不显示? 由于微信客户端缓存的原因,自定义菜单创建成功后,需要24小时以后才能显示出来。开发者在测试时,可以尝试取消关注公众账号后再次关注,这样能...
  • WinForm程序中表单的列可自定义显示及隐藏,是一种常见的功能,对于用户体验来说是非常好的。这篇文章主要介绍了DataGridView右键菜单自定义显示及隐藏列功能,需要的朋友可以参考下
  • QT 自定义菜单

    万次阅读 2018-10-10 10:28:04
    dialog却没有,因此mainwindow可以直接在ui文件中进行添加,而dialog只能通过代码进行自定义菜单设置 本文主要介绍menubar和statusbar的自定义添加 mainwindow的UI界面 自定义menubar和statusbar 什么...
  • 本文主要总结QMenu的三种常用用法,分别为常规用法、继承QWidgetAction自定义菜单项用法、将QMenu当QWidget挂载一个布局用法。 下面对每种用法进行原理讲解和代码总结。 一、常规用法 1.1原理讲解 QMenuBar是...
  • vue 树形菜单事件 右击自定义菜单

    千次阅读 2019-05-03 20:14:06
    效果图: 精髓代码: 父组件: 树形结构加自定义菜单 <div class="treesclass"> <my-tree :data="theData" :name="menuName" ...
  • 问题:自定义菜单图标时收起菜单文字隐藏问题 代码: <a-menu-item v-for="item in memberMenu" :key="item.path"> <i :class="['iconfont', item.icon]" style="marginRight: 10px;fontSize:20px;"&...
  • VBA自定义菜单和菜单栏

    千次阅读 2013-11-15 16:38:42
    在EXCEL中,我们的操作都是通过“工具栏、菜单栏、快捷菜”单实现。EXCEL通过菜单给我们提供基本...中管理和自定义菜单栏、菜单、命令、子菜单和快捷菜单,我将通过代码实例分步说明。 与大家分享关于VBA实现菜单栏管
  • 2)服务号可以申请自定义菜单; 3)使用QQ登录的公众号,可以升级为邮箱登录; 4)使用邮箱登录的公众号,可以修改登录邮箱; 5)编辑图文消息可选填作者; 6)群发消息可以同步到腾讯微博。 其中,大家议论...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 200,176
精华内容 80,070
关键字:

自定义菜单显示不完整