构建当前的以类别为中心的导航

Building a Current Category-Focused Navigation

我想开发一个与这个网站类似的导航:http://www.enjukuracing.com/categories/nissan

他们在 BigCommerce 平台上,我喜欢他们侧边导航显示类别和子类别的方式。本质上,我想知道显示类似内容的逻辑以及我需要在 BigCommerce 中执行此操作的哪些组件。

我想指出关于这个示例的一些不符合我们要求的地方。

所以最终,我们想要一个可以做这些事情的导航:

我知道类别 API 可以告诉我类别的层次结构,但我觉得 AJAX 调用我网站每个页面上的 PHP 文件可能会产生反作用- 使我的网站更快的直观。是否有任何我可以使用 JS 访问并可以在页面级别操作的简单对象?

我刚刚使用 JS 做了类似的事情来确定哪些类别 show/hide 以及哪些类别 open/closed。首先,在侧边栏中包含类别树并将其隐藏。

    function formatCustomSideBar(){
        var cats = [];
        $("ul.breadcrumbs > li").each(function(){
            if($(this).hasClass("is-active")){
                var name = $(this).find("span").text();
                cats.push(name);
            } else {
                var name = $(this).find("a").text();
                cats.push(name);
            }
        });
        console.log(cats);

        $(".custom-nav li a").each(function(){
            var subCat = $(this).text();
            if( $.inArray(subCat, cats) !== -1 ){
                $(this).parent("li").addClass("active-category");
            }
        });
    };
    formatCustomSideBar();

接下来,将所有面包屑值添加到一个数组中,因为面包屑总是告诉我们我们在网站上的位置。然后循环导航树,如果列表项存在于面包屑数组中,则将 class 或 active-category 添加到列表项。使用 active-category class 和 CSS,您可以设置特征的样式。

要添加切换功能,我会在我的函数末尾添加额外的几行,以使用 active-category class 循环列表项,并检查它们是否有子项 <ul> 以查明他们是否有子类别,并从那里添加 class 之类的 has-children

希望对您有所帮助。