thinkphp框架下解決商城網(wǎng)站的多個(gè)類(lèi)別多選的方法

2023-03-22    分類(lèi): 商城網(wǎng)站

商城面包屑

國(guó)內(nèi)的商城網(wǎng)站在篩選類(lèi)別的時(shí)候,篩選條件大部分都是單選的,像某東某寧那樣的網(wǎng)站就是這樣子的,如下圖所示:

商品分類(lèi)

但對(duì)于國(guó)外或中國(guó)香港的用戶來(lái)說(shuō),他們?cè)跒g覽商城網(wǎng)站的時(shí)候更習(xí)慣類(lèi)別多選的操作,就是根據(jù)自己的愛(ài)好選擇自己需要的一個(gè)或多個(gè)分類(lèi),這樣也能過(guò)濾掉自己不需要的分類(lèi)商品,網(wǎng)頁(yè)的排版如下圖所示:
像上圖那樣的多個(gè)分類(lèi),例如我希望找到外套和上衣的類(lèi)別,其他的類(lèi)別不想顯示,則可以點(diǎn)擊這兩個(gè)類(lèi)別,品牌分類(lèi)的原理也是一樣。現(xiàn)在要解決的事情是如何用thinkphp框架寫(xiě)出多個(gè)分類(lèi)并多選的功能。
首先要做的是,在當(dāng)前頁(yè)面下將所有的分類(lèi)的以id名稱為key值放在同一個(gè)數(shù)組里,我們將這個(gè)數(shù)組命名為$url_arr. 例如類(lèi)別的小類(lèi)的id名稱為cid,品牌的id名稱為bid,在URL里顯示如“/cid/100/bid/71.html”,即選擇小類(lèi)id為100,品牌id為71的條件,那么可以得到$url_arr[‘cid’]=100;$url_arr[‘bid’]=71;如果是多選,我們用半角逗號(hào)來(lái)分隔,例如/cid/100%2C87/bid/71%2C73.html,其他URL里的”%2C7”就是半角逗號(hào)的字符值。

函數(shù)代碼

然后我們要讓分類(lèi)中的a鏈接能很好顯示出確定的URL,這里需要引入我寫(xiě)的一個(gè)函數(shù),用這個(gè)函數(shù)可以快速的獲取到不同分類(lèi)名稱a鏈接的URL,如下圖所示:

頁(yè)面分類(lèi)

分類(lèi)的頁(yè)面代碼如下圖:
現(xiàn)在根據(jù)頁(yè)面代碼對(duì)參數(shù)進(jìn)行一些說(shuō)明:$arr_url就是剛才講的那個(gè)值,$id_name也是剛才講的id名稱,也就是cid;$cat_id是當(dāng)前分類(lèi)的id值,$url=’’是因?yàn)閁($url)會(huì)等當(dāng)前頁(yè)面的不參數(shù)的URL值,默認(rèn)就讓$url為空就可以了。
圖2里有一個(gè)“清除”的功能,就是清除該類(lèi)的所有條件,同樣是調(diào)用getParam函數(shù),只要將$cat_id設(shè)置成空就可以了,例如要清除分類(lèi)的條件,代碼如下:<a href="{$url_arr|getParam='cid',''}">清除</a>。

數(shù)組函數(shù)

如何判斷該類(lèi)別是否被選中呢?我們可以用到下圖這個(gè)函數(shù):
其中頁(yè)面代碼:<span {$vo.cat_id|item_exist_aray=$url_arr['cid']}></span>,默認(rèn)情況下span的前景為白色,如果加個(gè)class=”on”,則span背景為黑色,即該類(lèi)別被選中了。
要注意的是,在thinkphp的控制器里,需要判斷一下頁(yè)面上顯示的各種參數(shù)是否空,如果為空就不要將該參數(shù)賦于$arr_url了,不然有可能在URL顯示上可能會(huì)出現(xiàn)錯(cuò)誤;在模型里,以前用的條件是category_id=$cid,現(xiàn)在需要用array('in',$cid);需要更改過(guò)來(lái)

標(biāo)題名稱:thinkphp框架下解決商城網(wǎng)站的多個(gè)類(lèi)別多選的方法
分享網(wǎng)址:http://www.bm7419.com/news19/246769.html

網(wǎng)站建設(shè)、網(wǎng)絡(luò)推廣公司-創(chuàng)新互聯(lián),是專(zhuān)注品牌與效果的網(wǎng)站制作,網(wǎng)絡(luò)營(yíng)銷(xiāo)seo公司;服務(wù)項(xiàng)目有商城網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都網(wǎng)站建設(shè)