分享CMS和会员中心共用导航的方法

发布于 2019-07-11 18:18:57 关联应用 CMS内容管理系统(含小程序)

当我们安装CMS内容管理系统插件以后,默认的会员中心顶部导航和CMS的顶部导航不一致,这是因为CMS和会员中心用的layout(布局)模板不是同一个。
CMS布局模板为:

addons/cms/view/default/common/layout.html

会员中心布局模板为:

application/index/view/layout/default.html

为了让双边的顶部导航一致,我们需要把CMS布局模板中的代码拷贝到会员中心的布局模板中去。

第一步复制顶部导航代码

首先打开addons/cms/view/default/common/layout.html,找到

<div class="collapse navbar-collapse" id="navbar-collapse"> //顶部导航代码省略 </div>

我们把顶部导航代码复制到application/index/view/layout/default.html中的

<div class="collapse navbar-collapse" id="header-navbar"> //顶部导航代码覆盖原有的代码 </div>

第二步引入CMS自定义标签

经过第一步操作后,会员中心导航栏还不能正常操作,因为我们在顶部导航代码中使用channellist自定义标签,我们需要引入CMS自定义标签后才可以。
首先打开application/common/controller/Frontend.php,在_initialize方法内最后面追加以下两行代码

// 加载自定义标签库 $this->view->engine->config('taglib_pre_load', 'addons\cms\taglib\Cms'); $this->view->assign('__CHANNEL__', null);

保存,再后台管理右上角清除缓存。

第三步修改JS代码移除点击事件

此时我们可以到会员中心看到导航已经和CMS同步了,但是一级导航点击却无法跳转,这是由于Boostrap的下拉列表默认点击是弹出下拉列表,而CMS中有做特殊处理,所以会员中心这里也需要做特殊处理。

我们需要打开public/assets/js/frontend/user.js,在var Controller = {之前添加以下代码

    //如果是PC则移除navbar的dropdown点击事件 if (!/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini|Mobi/i.test(navigator.userAgent)) {
        $("#navbar-collapse [data-toggle='dropdown']").removeAttr("data-toggle");
    } else {
        $(".navbar-nav ul li:not(.dropdown-submenu):not(.dropdown) a").removeAttr("data-toggle");
    }

添加后的效果如图:
image.png

至此修改已经完成,此时清空浏览器缓存,JS即可生效,我们的CMS导航和会员中心导航也就一致了。

点赞(0) 打赏

微信小程序

微信扫一扫体验

立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部