極致CMS自定義字段內容篩選[包括單選和多選]的實現方法
最近群里很多人問極致CMS如何實現自定義字段內容篩選包括單選和多選,今天小郭就來分享一下實現方法和具體的代碼。
效果如下圖:
先看一下單選內容篩選的代碼,用screen標簽:
{screen molds="product" orderby="orders desc" as="s"} 自定義字段名字:{$s["fieldname"]} 自定義字段選項輸出: 默認全部/全選: 對應鏈接:{$s["url"]} 判斷選中:{if(!isset($filters[$s["field"]]))}選中全部{/if} 對應值為:0 {foreach $s["list"] as $ss} *每個選項鏈接:{$ss["url"]} 每個選項字段:{$s["field"]} 每個選項名稱:{$ss["value"]} 每個選項對應的值:{$ss["key"]} 判斷是否已選: {if(isset($filters[$s["field"]]) && strpos(",".$filters[$s["field"]].",",",".$ss["key"].",")!==false)} 這里寫選中時的標識 {/if} {/foreach} {/screen}
前面提到過,選項鏈接的缺省值,都講的是單選篩選,也就是說,一個選擇字段,只能選擇一個參數,不能選擇多個參數。 比如:顏色colors:紅色,白色,黃色,只能選擇一種顏色進行篩選。
現在我就要講解如何支持同時選擇紅色、白色兩個選項的篩選 (官方DEMO就是多選篩選) ? 多選篩選關鍵一個地方在于,如何把多個選項同時傳給后端處理,我用官方demo中的篩選鏈接講解。
http://demo.jizhicms.cn/screen-product-1-categories-1,2-brands-1-os-.html
screen:標識這個鏈接請求的是screen篩選控制器
product:產品模塊的標識
1:對應的欄目ID值
categories-1,2-brands-1-os-:傳遞的篩選參數
很容易看出上面傳遞的篩選參數用-拼接兩個參數,用,拼接多個參數值,而空值則代表缺省,
下面看ajax請求多選篩選:
function get_tpl(jz_screen){ var tid = {$type["id"]}; var molds = "{$type["molds"]}"; //Screen/index/molds/$1/tid/$2/jz_screen/$3 //screen-molds-tid-jz_screen var gourl = "{fun get_domain()}/screen-"+molds+"-"+tid+"-"+jz_screen+".html"; $("#gourl").val(gourl); $.ajax({ url:"{fun U("screen/index")}",//請求的url地址 // dataType:"json",//返回格式為json async:true,//請求是否異步,默認為異步,這也是ajax重要特性 data:{tid:tid,molds:molds,jz_screen:jz_screen,ajax:1,ajax_tpl:1},//參數值 type:"GET",//請求方式 beforeSend:function(){ //請求前的處理 }, success:function(r){ if(r==1){ $(".products").html("暫無數據~");return false; } $(".products").html(r); }, complete:function(){ //請求完成的處理 }, error:function(){ //請求出錯處理 alert("網絡錯誤"); } ? }) }
用jz_screen作為篩選字段的拼接的參數傳遞,篩選控制器處理這個字段內拼接的參數及參數值 ?。
以上就是極致CMS自定義字段多選和單選內容篩選的具體方法和代碼了,更多極致CMS教程請關注小郭博客極致CMS建站教程專欄。