thinkphp框架下解決商城网站的多个类别多选的方法
像上图那样的多个分类,例如我希望找到外套和上衣的类别,其他的类别不想显示,则可以点击这两个类别,品牌分类的原理也是一样。现在要解决的事情是如何用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);需要更改过来
作者:优加网络技术部陈应信