一、网站面包屑导航有哪几种类型?
1、路径型:路径型面包屑是一个动态显示用户到达页面经过的途径;
2、位置型:位置型面包屑是固定的,显示了页面在网站结构中的位置;
3、属性型:属性型面包屑给出的当前页面的分类信息。
面包屑导航一般都在导航的下面,形式一般为 首页 > 一级目录名称 > 二级目录名称 > 目前位置,尽量要把面包
屑导航的层次控制在四层以内,这样也有利与搜索引擎蜘蛛一层层往下爬,到了四层以下就很难爬到了。
二、作用分别是什么?
1、让用户了解目前所处位置,以及当前页面在整个网站中的位置。(路径型)
2、提供返回各个层级的快速入口,方便用户操作。(位置型)
3、体现了网站的架构层级,能够帮助用户快速学习和了解网站内容和组织方式(属性型)。
三、后端的面包屑导航代码;
对于属性的面包屑导航:
if(param.getAttrs() != null && param.getAttrs().size() > 0){
//6、构建面包屑导航功能
List<SearchResult.NavVo> collect = param.getAttrs().stream().map(attr -> {
//1、分析每个attrs传过来的查询参数值
SearchResult.NavVo navVo = new SearchResult.NavVo();
String[] s = attr.split("_");
navVo.setNavValue(s[1]);
R r = productFeignService.attrInfo(Long.parseLong(s[0]));
result.getAttrIds().add(Long.parseLong(s[0]));
if(r.getCode() == 0){
AttrResponseVo data = r.getData("attr", new TypeReference<AttrResponseVo>() {
});
navVo.setNavName(data.getAttrName());
} else {
navVo.setNavName(s[0]);
}
//2、取消了这个面包屑以后,我们要跳转到那个地方,将请求地址的url替换
//拿到所有的查询条件,去掉当前
String replace = replaceQueryString(param, attr, "attrs");
navVo.setLink("http://search.greymall.com/list.html?"+replace);
return navVo;
}).collect(Collectors.toList());
result.setNavs(collect);
}
private String replaceQueryString(SearchParam param, String value, String key) {
String encode = null;
//对于URL地址有空格的特殊处理
try {
encode = URLEncoder.encode(value, "UTF-8");
encode = encode.replace("+", "%20"); //浏览器对空格的编码与java不一样
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return param.get_queryString().replace("&"+key+"=" + encode, "");
}
对于品牌的面包屑导航:
//品牌;分类
if(param.getBrandId() != null && param.getBrandId().size() > 0){
List<SearchResult.NavVo> navs = result.getNavs();
SearchResult.NavVo navVo = new SearchResult.NavVo();
navVo.setNavName("品牌");
//TODO 远程查询所有品牌
R r = productFeignService.brandsInfo(param.getBrandId());
if(r.getCode() == 0){
List<BrandVo> brand = r.getData("brand", new TypeReference<List<BrandVo>>() {
});
StringBuffer buffer = new StringBuffer();
String replace = "";
for (BrandVo brandVo : brand) {
buffer.append(brandVo.getBrandName()+";");
replace = replaceQueryString(param,brandVo.getBrandId()+"","brandId");
}
navVo.setNavValue(buffer.toString());
navVo.setLink("http://search.greymall.com/list.html?"+replace);
}
navs.add(navVo);
}
//TODO 分类;不需要导航取消