在nopCommerce 3.70中引导Maga菜单

索尔·斯坦

我正在nopCommerce 3.70网站上工作,并且正在制作自定义MagaMenu下拉菜单,

我这样做的方法是创建一个TopMenu.cshtml文件,并将其放置在主题文件夹下,因此它覆盖了默认文件夹,并基于bootstrap的Maga Menu创建了一些自定义帮助程序和CSS,对于移动设备,我仍在使用DefaultClean的标准,但是我的整个想法只能在主页上使用,所有其他页面都弄乱了菜单,我不知道为什么它不能在其他页面上使用,这是我的代码。

        $(document).ready(function () {
            $(".dropdown").hover(
                function () {
                    $('.dropdown-menu', this).stop().fadeIn("fast");
                },
                function () {
                    $('.dropdown-menu', this).stop().fadeOut("fast");
                });
          
            $('.menu-toggle').click(function () {
                $(this).siblings('.top-menu.mobile').slideToggle('slow');
            });
            $('.top-menu.mobile .sublist-toggle').click(function () {
                $(this).siblings('.sublist').slideToggle('slow');
            });
        });
         .navbar-default {
             color: #fff;
             background-color: #4ab2f1;
             border-color: #4ab2f1;
         }

        .navbar-default .navbar-nav > li > a { color: #fff; }

        .navbar-default .navbar-nav > .dropdown > a .caret {
            border-top-color: #fff;
            border-bottom-color: #fff;
        }

        .navbar-default .navbar-brand { color: #fff; }

        .menu-large { position: static !important; }

        .megamenu {
            padding: 20px 0px;
            width: 100%;
        }

        .megamenu > li > ul {
            padding: 0;
            margin: 0;
        }

        .megamenu > li > ul > li { list-style: none; }

        .megamenu > li > ul > li > a {
            display: block;
            padding: 3px 20px;
            clear: both;
            font-weight: normal;
            line-height: 1.428571429;
            color: #333333;
            white-space: normal;
        }

        .megamenu > li ul > li > a:hover,
        .megamenu > li ul > li > a:focus {
            text-decoration: none;
            color: #262626;
            background-color: #f5f5f5;
        }

        .megamenu.disabled > a,
        .megamenu.disabled > a:hover,
        .megamenu.disabled > a:focus { color: #999999; }

        .megamenu.disabled > a:hover,
        .megamenu.disabled > a:focus {
            text-decoration: none;
            background-color: transparent;
            background-image: none;
            filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
            cursor: not-allowed;
        }

        .megamenu.dropdown-header {
            color: #4ab2f1;
            font-size: 18px;
        }

        @media (max-width: 768px) {
            .megamenu {
                margin-left: 0;
                margin-right: 0;
            }

            .megamenu > li { margin-bottom: 30px; }

            .megamenu > li:last-child { margin-bottom: 0; }

            .megamenu.dropdown-header { padding: 3px 15px !important; }

            .navbar-nav .open .dropdown-menu .dropdown-header { color: #fff; }
        }
  
@model TopMenuModel
@using Nop.Web.Models.Catalog;

@helper RenderMegaMenuCategoryLine(CategorySimpleModel category, int level)
{
    <li class="dropdown menu-large">
        <a class="dropdown-toggle" data-toggle="dropdown" href="@Url.RouteUrl("Category", new {SeName = category.SeName})">

            @category.Name
            @if (category.NumberOfProducts.HasValue)
            {
                <text> </text>@T("Categories.TotalProducts", category.NumberOfProducts.Value)
            }
        </a>

        @{
            //subcategories
            var subCategories = category.SubCategories.Where(x => x.IncludeInTopMenu).OrderBy(m => m.Name).ToList();

            if (subCategories.Count > 0)
            {
                var itemsPerColumn = subCategories.Count();

                while (itemsPerColumn % 4 != 0)
                {
                    itemsPerColumn = itemsPerColumn + 1;
                }

                itemsPerColumn = itemsPerColumn / 4;

                var subCategoryColumn = new List<CategorySimpleModel>();
                var lastItem = subCategories.Last();

                
                <ul class="dropdown-menu megamenu row">
                    @foreach (var subCategory in subCategories)
                    {
                        subCategoryColumn.Add(subCategory);

                        if (subCategoryColumn.Count() == itemsPerColumn || subCategory.Equals(lastItem))
                        {
                            @RenderMegaMenuSubCategories(subCategoryColumn)

                            subCategoryColumn = new List<CategorySimpleModel>();
                        }
                    }
                </ul>
            }
        }
    </li>
}

@helper RenderMegaMenuSubCategories(List<CategorySimpleModel> categories)
{
    <li class="col-sm-3">
        <ul>
            @foreach (var category in categories)
            {
                <li>
                    <a href="@Url.RouteUrl("Category", new {SeName = category.SeName})">

                        @category.Name
                        @if (category.NumberOfProducts.HasValue)
                        {
                            <text> </text>@T("Categories.TotalProducts", category.NumberOfProducts.Value)
                        }

                    </a>
                </li>
            }
        </ul>
    </li>
}

@helper RenderResponsiveCategoryLine(CategorySimpleModel category, int level)
{
    <li>
        <a href="@Url.RouteUrl("Category", new { SeName = category.SeName })">
            @category.Name
            @if (category.NumberOfProducts.HasValue)
            {
                <text> </text>@T("Categories.TotalProducts", category.NumberOfProducts.Value)

            }
        </a>
        @{
            //subcategories
            var subCategories = category.SubCategories;

            var levelClass = "";
            if (level == 0)
            {
                levelClass = "first-level";
            }
            if (subCategories.Count > 0)
            {
                <div class="sublist-toggle"></div>
                    <ul class="sublist @levelClass">
                        @foreach (var subCategory in subCategories)
                        {
                            @RenderResponsiveCategoryLine(subCategory, level + 1)
                        }
                    </ul>
            }
        }
    </li>
}


@{

    <div class="navbar navbar-default navbar-static-top hidden-sm hidden-xs">
        <div class="container">
            <div class="navbar-collapse collapse">
                <ul class="nav navbar-nav">
                    @Html.Widget("header_menu_before")
                    @{
                        var rootCategories = Model.Categories.Where(x => x.IncludeInTopMenu).ToList();
                    }
                    @foreach (var category in rootCategories)
                    {
                        @RenderMegaMenuCategoryLine(category, 0)
                    }
                    @foreach (var topic in Model.Topics)
                    {
                        <li>
                            <a href="@Url.RouteUrl(" Topic", new {SeName = topic.SeName})">@topic.Name</a>
                        </li>
                    }

                    @Html.Widget("header_menu_after")
                </ul>
            </div>
        </div>
    </div>


}

@{
    //mobile menu responsive

    var rootCategoriesResponsive = Model.Categories.ToList();
    //name it "Categories" if we have only categories. Otherwise, "Menu"
    var responsiveMenuTitle = (rootCategoriesResponsive.Count > 0 && Model.Topics.Count == 0) ? T("Categories") : T("Menu");
    <div class="hidden-lg hidden-md  menu-toggle">@responsiveMenuTitle</div>
    <ul class="hidden-lg hidden-md  top-menu mobile">
        @Html.Widget("mob_header_menu_before")
        @foreach (var category in rootCategoriesResponsive)
        {
            @RenderResponsiveCategoryLine(category, 0)
        }
        @foreach (var topic in Model.Topics)
        {
            <li><a href="@Url.RouteUrl(" Topic", new { SeName=topic.SeName })">@topic.Name</a></li>
        }
        @Html.Widget("mob_header_menu_after")
    </ul>

}

代码全部在TopMenu.cshtml页面中,js包围着脚本标签,而css包围着脚本标签,当然我在CSS中为@media做转义字符。

有人对此有意见吗?

nopCommerce 3.70 Maga菜单

丹·奥尔洛夫斯基

菜单的问题是您不包括Bootstrap

默认情况下nopCommerce的任何版本都不使用Bootstrap,这就是为什么每发布一个新版本时,开发人员都会发布启用引导程序的主题,如下所示:

默认的Clean Theme Bootstrap版本(免费)

您可以抓住上面的主题并在其中合并菜单,也可以自己将其包含在主题中。如果选择后一种方法,则将引导程序解压缩到主题的内容文件夹中。

然后,从主题的Shared文件夹中的_Root.Head.cshtml文件中,添加对引导文件的引用,如下所示:

Html.AddScriptParts(ResourceLocation.Head, "~/Themes/THEMENAME/Content/BOOTSTRAPFOLDER/dist/js/bootstrap.min.js");
Html.AddCssFileParts(ResourceLocation.Head, "~/Themes/THEMENAME/Content/BOOTSTRAPFOLDER/dist/css/bootstrap.min.css");

我目前正在亲自处理3.70 Bootstrap主题-这是我用来合并Bootstrap的方法。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

nopCommerce中的相关产品属性

来自分类Dev

根据nopcommerce中的访问控制,在管理端隐藏插件菜单

来自分类Dev

如何在Nopcommerce中覆盖视图?

来自分类Dev

如何在NopCommerce中添加新表?

来自分类Dev

在nopcommerce3.3中获取当前客户

来自分类Dev

未在Nopcommerce中插入活动日志

来自分类Dev

nopCommerce 3.40中的“ TypeError:$(...)。magnificPopup不是函数”

来自分类Dev

新表的服务注册中的Nopcommerce错误

来自分类Dev

在NopCommerce中创建自定义任务

来自分类Dev

在nopcommerce3.3中获取当前客户

来自分类Dev

SSL 在 nopcommerce 中不起作用

来自分类Dev

nopcommerce中的插件和小部件之间的区别

来自分类Dev

抱歉-您最后的操作无法在Nopcommerce的Paypal中完成

来自分类Dev

如何检测adblock是否在nopcommerce中阻止“使用Facebook登录”?

来自分类Dev

在购物车nopCommerce中添加其他按钮

来自分类Dev

如何在NopCommerce中获得产品视图计数?

来自分类Dev

nopcommerce中的插件和小部件之间的区别

来自分类Dev

如何覆盖控制器或其在NopCommerce插件中的方法?

来自分类Dev

无法在 nopcommerce 的 UrlRecord 表中插入客户 SeName

来自分类Dev

忽略 nopcommerce 中语言字符串的提示

来自分类Dev

NopCommerce PCI

来自分类Dev

引导程序3中的手风琴菜单

来自分类Dev

单击nopCommerce中的复选框时,在表td中创建了不需要的html

来自分类Dev

nopcommerce 从操作中的批量产品编辑表单中获取值

来自分类Dev

如果页面标题等于特定标题,请在NopCommerce中显示内容

来自分类Dev

nopCommerce:如何在购物车中预装2种产品?

来自分类Dev

在NopCommerce中添加自定义任务,返回每日畅销书列表

来自分类Dev

如果页面标题等于特定标题,请在NopCommerce中显示内容

来自分类Dev

我无法在NopCommerce中为新的管理插件调用窗口小部件

Related 相关文章

  1. 1

    nopCommerce中的相关产品属性

  2. 2

    根据nopcommerce中的访问控制,在管理端隐藏插件菜单

  3. 3

    如何在Nopcommerce中覆盖视图?

  4. 4

    如何在NopCommerce中添加新表?

  5. 5

    在nopcommerce3.3中获取当前客户

  6. 6

    未在Nopcommerce中插入活动日志

  7. 7

    nopCommerce 3.40中的“ TypeError:$(...)。magnificPopup不是函数”

  8. 8

    新表的服务注册中的Nopcommerce错误

  9. 9

    在NopCommerce中创建自定义任务

  10. 10

    在nopcommerce3.3中获取当前客户

  11. 11

    SSL 在 nopcommerce 中不起作用

  12. 12

    nopcommerce中的插件和小部件之间的区别

  13. 13

    抱歉-您最后的操作无法在Nopcommerce的Paypal中完成

  14. 14

    如何检测adblock是否在nopcommerce中阻止“使用Facebook登录”?

  15. 15

    在购物车nopCommerce中添加其他按钮

  16. 16

    如何在NopCommerce中获得产品视图计数?

  17. 17

    nopcommerce中的插件和小部件之间的区别

  18. 18

    如何覆盖控制器或其在NopCommerce插件中的方法?

  19. 19

    无法在 nopcommerce 的 UrlRecord 表中插入客户 SeName

  20. 20

    忽略 nopcommerce 中语言字符串的提示

  21. 21

    NopCommerce PCI

  22. 22

    引导程序3中的手风琴菜单

  23. 23

    单击nopCommerce中的复选框时,在表td中创建了不需要的html

  24. 24

    nopcommerce 从操作中的批量产品编辑表单中获取值

  25. 25

    如果页面标题等于特定标题,请在NopCommerce中显示内容

  26. 26

    nopCommerce:如何在购物车中预装2种产品?

  27. 27

    在NopCommerce中添加自定义任务,返回每日畅销书列表

  28. 28

    如果页面标题等于特定标题,请在NopCommerce中显示内容

  29. 29

    我无法在NopCommerce中为新的管理插件调用窗口小部件

热门标签

归档