Javascript 构建当前以类别为中心的导航
我想开发一个类似于此网站的导航: 他们在BigCommerce平台上,我喜欢他们的侧导航显示类别和子类别的方式。本质上,我想知道这样显示的逻辑,以及我需要在BigCommerce中使用哪些组件来实现这一点 我想指出关于这个例子的一些事情,它们并不符合我们想要的Javascript 构建当前以类别为中心的导航,javascript,php,jquery,bigcommerce,Javascript,Php,Jquery,Bigcommerce,我想开发一个类似于此网站的导航: 他们在BigCommerce平台上,我喜欢他们的侧导航显示类别和子类别的方式。本质上,我想知道这样显示的逻辑,以及我需要在BigCommerce中使用哪些组件来实现这一点 我想指出关于这个例子的一些事情,它们并不符合我们想要的 此站点似乎受到同一链接的多个位置的影响(如果您 看看源代码,一个链接出现了4次-我的网站正试图避免出现这种情况,因为有超过800个内部链接,还因为生成导航的网站加载时间) 每个子类别都是为所有类别和不同的菜单外观生成的,这就是为什么它们
- 此站点似乎受到同一链接的多个位置的影响(如果您 看看源代码,一个链接出现了4次-我的网站正试图避免出现这种情况,因为有超过800个内部链接,还因为生成导航的网站加载时间)
- 每个子类别都是为所有类别和不同的菜单外观生成的,这就是为什么它们每个出现4次
- 知道我们目前属于哪一类
- 显示当前类别之前的父类别
- 显示当前类别的同级类别
- 将子类别/子类别显示到当前类别
- 单击后向下展开以显示子类别
我知道Category API可以告诉我类别的层次结构,但我觉得在我的网站的每个页面上对PHP文件进行AJAX调用可能会违反直觉,从而使我的网站更加快速。有什么简单的对象可以通过JS访问,并且可以在页面级别进行操作吗?我只是用JS做了一些类似的事情,以确定要显示/隐藏哪些类别以及要打开/关闭哪些类别。首先,在侧边栏中包含类别树并将其隐藏
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();
接下来,将所有面包屑值添加到一个数组中,因为面包屑总是告诉我们在站点上的位置。然后循环导航树,并将一类活动类别
添加到列表项(如果它存在于面包屑数组中)。使用活动类别
类和CSS,可以设置功能的样式
要添加切换功能,我将在函数末尾添加几行,以循环使用活动类别
类的列表项,并检查它们是否有子类
,以确定它们是否有子类,然后从中添加一个类,如有子类
希望这能有所帮助。我只是使用JS做了类似的事情,以确定要显示/隐藏哪些类别以及要打开/关闭哪些类别。首先,在侧边栏中包含类别树并将其隐藏
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();
接下来,将所有面包屑值添加到一个数组中,因为面包屑总是告诉我们在站点上的位置。然后循环导航树,并将一类活动类别
添加到列表项(如果它存在于面包屑数组中)。使用活动类别
类和CSS,可以设置功能的样式
要添加切换功能,我将在函数末尾添加几行,以循环使用活动类别
类的列表项,并检查它们是否有子类
,以确定它们是否有子类,然后从中添加一个类,如有子类
希望这能有所帮助。“在侧边栏中包含类别树”-这是否意味着只需调用“%%SNIPPET\u SideCategoryList%%”或“%%PANEL\u SideCategoryList%%”就可以了?我将使用“%%PANEL\u SideCategor”yList%%”以拉入类别树。将此放置在您希望包含此动态侧边栏列表的任何位置。在您的示例中,它位于侧栏中,在category.html文件中可以找到cat页面的大多数蓝图主题。查找左侧边栏的区域并添加代码。请记住,我的JS是为Stencil编写的,因此您需要调整blueprint主题的类/元素名称。我做了一些调整,基本功能正常运行——谢谢。如果类别名称相同,有什么建议吗?我需要比较每个面包屑,形成一条路径。。例如,如果我有两个“红色”类别,比如“上衣>衬衫>红色”和“下装>裤子>红色”,那么这两个“红色”类别都会显示。我会使用CSS仅显示“.active category”
- 下。这将防止“底部>裤子>红色”显示“底部”和“裤子”是否没有“.active category”类。“在侧边栏中包含类别树”-这是否意味着只需调用“%%SNIPPET_SideCategoryList%%”或“%%PANEL_SideCategoryList%%”,然后将其放置在何处?我将使用“%%PANEL_SideCategory”yList%%”以拉入类别树。将此放置在您希望包含此动态侧边栏列表的任何位置。在您的示例中,它位于侧栏中,在category.html文件中可以找到cat页面的大多数蓝图主题。查找左侧边栏的区域并添加代码。请记住,我的JS是为Stencil编写的,因此您需要调整blueprint主题的类/元素名称。我做了一些调整,基本功能正常运行——谢谢。如果类别名称相同,有什么建议吗?我需要比较每个面包屑,形成一条路径。。例如,如果我有两个“红色”类别,比如“上衣>衬衫>红色”和“下装>裤子>红色”,那么这两个“红色”类别都会显示。我会使用CSS仅显示“.active category”
- ,如果它的父类也有“.active category”,或者直接在
- 下。如果“Bottoms”和“Pants”没有“.active category”类,这将阻止“Bottoms>Pants>Red”显示。