thinkphp框架下解決商城网站的多个类别多选的方法

2023-03-22    分类: 商城网站

商城面包屑

国内的商城网站在筛选类别的时候,筛选条件大部分都是单选的,像某东某宁那样的网站就是这样子的,如下图所示:

商品分类

但对于国外或中国香港的用户来说,他们在浏览商城网站的时候更习惯类别多选的操作,就是根据自己的爱好选择自己需要的一个或多个分类,这样也能过滤掉自己不需要的分类商品,网页的排版如下图所示:
像上图那样的多个分类,例如我希望找到外套和上衣的类别,其他的类别不想显示,则可以点击这两个类别,品牌分类的原理也是一样。现在要解决的事情是如何用thinkphp框架写出多个分类并多选的功能。
首先要做的是,在当前页面下将所有的分类的以id名称为key值放在同一个数组里,我们将这个数组命名为$url_arr. 例如类别的小类的id名称为cid,品牌的id名称为bid,在URL里显示如“/cid/100/bid/71.html”,即选择小类id为100,品牌id为71的条件,那么可以得到$url_arr[‘cid’]=100;$url_arr[‘bid’]=71;如果是多选,我们用半角逗号来分隔,例如/cid/100%2C87/bid/71%2C73.html,其他URL里的”%2C7”就是半角逗号的字符值。

函数代码

然后我们要让分类中的a链接能很好显示出确定的URL,这里需要引入我写的一个函数,用这个函数可以快速的获取到不同分类名称a链接的URL,如下图所示:

页面分类

分类的页面代码如下图:
现在根据页面代码对参数进行一些说明:$arr_url就是刚才讲的那个值,$id_name也是刚才讲的id名称,也就是cid;$cat_id是当前分类的id值,$url=’’是因为U($url)会等当前页面的不参数的URL值,默认就让$url为空就可以了。
图2里有一个“清除”的功能,就是清除该类的所有条件,同样是调用getParam函数,只要将$cat_id设置成空就可以了,例如要清除分类的条件,代码如下:<a href="{$url_arr|getParam='cid',''}">清除</a>。

数组函数

如何判断该类别是否被选中呢?我们可以用到下图这个函数:
其中页面代码:<span {$vo.cat_id|item_exist_aray=$url_arr['cid']}></span>,默认情况下span的前景为白色,如果加个class=”on”,则span背景为黑色,即该类别被选中了。
要注意的是,在thinkphp的控制器里,需要判断一下页面上显示的各种参数是否空,如果为空就不要将该参数赋于$arr_url了,不然有可能在URL显示上可能会出现错误;在模型里,以前用的条件是category_id=$cid,现在需要用array('in',$cid);需要更改过来

标题名称:thinkphp框架下解決商城网站的多个类别多选的方法
分享网址:https://www.cdcxhl.com/news19/246769.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有商城网站

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

成都网站建设