亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > CMS > PhpCMS > 正文

PHPCMS實現多重篩選實現程序

2024-09-10 07:16:22
字體:
來源:轉載
供稿:網友

多重篩選其實對于php程序員開發者來講是非常的簡單了,下面來介紹在PHPCMS實現多重篩選實現例子,有需要了解的朋友一起來看看吧.

在我們使用PHPCMS開發一些產品展示類網站的時候,由于分類的多樣化,我們需要客戶在簡短的時間內尋找到自己需要的產品,這樣我們就會用到分類的多重篩選,也就是類似京東,淘寶等這么電商網站里面的產品篩選的功能,PHPCMS本身并沒有這樣的功能,需要我們進行二次開發,當然網上也出現了很多這樣的功能,但不知道為什么,按照上面的步驟能實現的時候并不多,在經過一系列的查找和自己測試之后,我自己總結了以下的方法,希望后來者看到之后可以省去很多不必要的麻煩,我會盡可能的詳細寫出是怎么實現的,實現的效果在這里就不貼圖片了,淘寶,京東上比我做的還好。

首先,要實現這個功能,在建立字段的時候字段的類型必須選擇box類型,在是否作為篩選字段的項目里勾選“是”,是否作為搜索條件勾選“是”。

這建立好字段之后,剩下的就是怎么實現這個功能了。咱們需要在PHPCMS的自定義函數庫這個文件里編寫相應的分類篩選函數,代碼如下:

  1. /** 
  2.  * 通過指定keyid形式顯示所有聯動菜單 
  3.  * @param  $keyid 菜單主id 
  4.  * @param  $linkageid  聯動菜單id,0調用頂級 
  5.  * @param  $modelid 模型id 
  6.  * @param  $fieldname  字段名稱 
  7.  */ 
  8. function show_linkage($keyid$linkageid = 0, $modelid = ''$fieldname='zone') { 
  9.     $datas = $infos = $array = array(); 
  10.     $keyid = intval($keyid); 
  11.     $linkageid = intval($linkageid); 
  12.     //當前菜單id 
  13.     $field_value = intval($_GET[$fieldname]); 
  14.     $urlrule = structure_filters_url($fieldname,$array,1,$modelid); 
  15.     if($keyid == 0) return false; 
  16.     $datas = getcache($keyid,'linkage'); 
  17.     $infos = $datas['data']; 
  18.     foreach($infos as $k=>$v){ 
  19.         if($v['parentid']==$field_value){ 
  20.             $array[$k]['name'] = $v['name']; 
  21.             $array[$k]['value'] = $k
  22.             $array[$k]['url'] = str_replace('{$'.$fieldname.'}',$k,$urlrule); 
  23.             $array[$k]['menu'] = $field_value == $k ? '<a class="click" style="color:#fff;">'.$v['name'].'</a>' : '<a href='.$array[$k]['url'].'>'.$v['name'].'</a>' ; 
  24.         } 
  25.     } 
  26.     return $array
  27.  function structure_filters_url($fieldname,$array=array(),$type = 1,$modelid) { 
  28.     if(emptyempty($array)) { 
  29.         $array = $_GET
  30.     } else { 
  31.         $array = array_merge($_GET,$array); 
  32.     } 
  33.     //TODO 
  34.     $fields = getcache('model_field_'.$modelid,'model'); 
  35.     if(is_array($fields) && !emptyempty($fields)) { 
  36.         ksort($fields); 
  37.         foreach ($fields as $_v=>$_k) { 
  38.             if($_k['filtertype'] || $_k['rangetype']) { 
  39.                 if(strpos(URLRULE,'.html') === FALSE) $urlpars .= '&'.$_v.'={$'.$_v.'}'
  40.                 else $urlpars .= '-{$'.$_v.'}'
  41.             } 
  42.         } 
  43.     } 
  44.     //后期增加偽靜態等其他url規則管理,apache偽靜態支持9個參數 
  45.     if(strpos(URLRULE,'.html') === FALSE) $urlrule =APP_PATH.'index.php?m=content&c=index&a=lists&catid={$catid}'.$urlpars.'&page={$page}' ; 
  46.     else $urlrule =APP_PATH.'list-{$catid}'.$urlpars.'-{$page}.html#wrap'
  47.     //根據get傳值構造URL 
  48.     if (is_array($array)) foreach ($array as $_k=>$_v) { 
  49.         if($_k=='page'$_v=1; 
  50.         if($type == 1) if($_k==$fieldnamecontinue
  51.         $_findme[] = '/{\$'.$_k.'}/'
  52.         $_replaceme[] = $_v
  53.     } 
  54.      //type 模式的時候,構造排除該字段名稱的正則 
  55.     if($type==1) $filter = '(?!'.$fieldname.'.)'
  56.     $_findme[] = '/{\$'.$filter.'([a-z0-9_]+)}/'
  57.     $_replaceme[] = '0';         
  58.     $urlrule = preg_replace($_findme$_replaceme$urlrule);    
  59.     return  $urlrule
  60. /** 
  61.  * 生成分類信息中的篩選菜單 
  62.  * @param $field   字段名稱 
  63.  * @param $modelid  模型ID 
  64.  */ 
  65. function filters($field,$modelid,$diyarr = array()) { 
  66.     $fields = getcache('model_field_'.$modelid,'model'); 
  67.     $options = emptyempty($diyarr) ?  explode("\n",$fields[$field]['options']) : $diyarr
  68.     $field_value = intval($_GET[$field]); 
  69.     foreach($options as $_k) { 
  70.         $v = explode("|",$_k); 
  71.         $k = trim($v[1]); 
  72.         $option[$k]['name'] = $v[0]; 
  73.         $option[$k]['value'] = $k
  74.         $option[$k]['url'] = structure_filters_url($field,array($field=>$k),2,$modelid); 
  75.         $option[$k]['menu'] = $field_value == $k ? '<a class="click" style="color:#fff;">'.$v[0].'</a>' : '<a href='.$option[$k]['url'].'>'.$v[0].'</a>' ; //這個地方的a標簽的class可以改成符合你自己網站的樣式, 
  76.     }  //開源軟件:Vevb.com 
  77.     $all['name'] = '全部';//'全部'; 
  78.     $all['url'] = structure_filters_url($field,array($field=>'0'),2,$modelid); 
  79.     $all['menu'] = $field_value == '' ? '<a class="click" style="color:#fff;">'.$all['name'].'</a>' : '<a href='.$all['url'].'>'.$all['name'].'</a>'
  80.     array_push($option,$all);    
  81.     return $option

把上面的這段代碼復制到:extention.func.php這個文件里,在前臺調用的時候需要一點點的改動,調用代碼如下:

  1. {php $sql = structure_filters_sql($modelid);} 
  2. {pc:content action="lists" where="$sql" catid="$catid" modelid="$modelid" num="12" page="$page"

再調用的時候一定不要忽略了catid和modelid,二者缺其一無法調用。產品分類怎么調用呢?相信大家也看到了,在剛剛添加的函數里面有一個fliters函數,我們使用這個函數來調用已添加的box類型的字段,讀取出我們需要進行篩選的分類。代碼如下:

  1. {loop filters('fengge',$modelid$r//filters('需要調用的字段','字段所在的模型ID') 
  2. <li>{$r[menu]}</li> 
  3. {/loop} 

好了,在進行了如上幾個步驟之后,你就會發現前臺的分類篩選功能已經可以使用了,這時你是否是發現URL太長太不美觀?沒關系,假如你的空間支持偽靜態的話,就可以把網站的URL調的簡單美觀。PHPCMS安裝包里自帶了一個.htaccess文件,直接復制到根目錄里就好了。如果是IIS服務器的話,需要httpd.ini文件,轉化一下就可以了,現在的IIS7有一個導入規則的功能,可以直接把.htaccess文件轉化成web.config文件,這樣就實現了偽靜態。

一定要注意,把你自己添加的box篩選字段也加入到偽靜態的規則里,否則是出現一些不必要的錯誤。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
色噜噜狠狠狠综合曰曰曰| 欧美成人激情图片网| 国产精品福利网| 久久国产精品影视| 亚洲人成免费电影| 久久精品国产69国产精品亚洲| 在线看日韩欧美| 欧洲成人午夜免费大片| 精品久久久久久久久久久久久| 精品国内自产拍在线观看| 日本亚洲欧洲色| 中文字幕欧美精品在线| 欧美激情女人20p| 最近2019中文字幕一页二页| 亚洲国产精品人久久电影| 国产精品精品国产| 午夜剧场成人观在线视频免费观看| 日韩精品视频免费专区在线播放| 亚洲精品影视在线观看| 国产成人午夜视频网址| 亚洲自拍欧美色图| 欧美激情性做爰免费视频| 精品亚洲一区二区三区四区五区| 91精品视频免费看| 久久综合久中文字幕青草| 日韩女优人人人人射在线视频| 国产亚洲欧美日韩精品| 日韩欧美亚洲成人| 欧美国产欧美亚洲国产日韩mv天天看完整| 国产精品黄色影片导航在线观看| 福利二区91精品bt7086| 日本韩国欧美精品大片卡二| 日韩精品视频免费专区在线播放| 日本国产一区二区三区| 成人免费淫片视频软件| 亚洲自拍偷拍在线| 国产精品成人一区二区| 亚洲视频在线视频| 国产精品福利片| 欧美劲爆第一页| 日韩激情av在线免费观看| 欧美在线视频一二三| 91在线视频精品| 精品国产欧美一区二区五十路| 国产a∨精品一区二区三区不卡| 午夜精品福利电影| 成人精品在线观看| 91亚洲精品久久久| 国内外成人免费激情在线视频| 日本精品一区二区三区在线播放视频| 亚洲欧美日韩久久久久久| 亚洲福利视频免费观看| 欧美高清自拍一区| 亚洲国产中文字幕久久网| 欧美日韩福利在线观看| 亚洲人av在线影院| 日本欧美爱爱爱| 在线播放国产一区二区三区| 欧美在线一级va免费观看| 91欧美精品午夜性色福利在线| 精品视频在线播放色网色视频| 国产亚洲成av人片在线观看桃| 欧美电影在线观看网站| 成人国产精品久久久久久亚洲| 亚洲激情免费观看| 亚洲毛茸茸少妇高潮呻吟| 国产免费观看久久黄| 欧美国产激情18| 91探花福利精品国产自产在线| 国产婷婷色综合av蜜臀av| 亚洲在线免费视频| 伊是香蕉大人久久| 亚洲欧洲av一区二区| 亚洲一区二区免费在线| 77777亚洲午夜久久多人| 亚洲精品日韩av| 91成人在线观看国产| 国产福利成人在线| 亚洲色图欧美制服丝袜另类第一页| 亚洲精品永久免费精品| 欧美大片免费看| 久久综合亚洲社区| 日韩精品极品在线观看| 国产成人91久久精品| 精品久久久久久久中文字幕| 亚州av一区二区| 久久99国产综合精品女同| 午夜精品一区二区三区视频免费看| 久久久国产一区二区三区| 国产色视频一区| 精品人伦一区二区三区蜜桃网站| 色婷婷av一区二区三区久久| 欧美大片在线看免费观看| 国产亚洲精品久久久久久777| 欧美激情精品久久久久久变态| 成人精品久久一区二区三区| 国产精品欧美在线| 九九视频直播综合网| 日韩av大片免费看| 国产精品网站视频| 国产男人精品视频| 亚洲天堂开心观看| 日韩精品免费综合视频在线播放| 欧美成人午夜影院| 97香蕉久久超级碰碰高清版| 日韩电影在线观看中文字幕| 日韩中文字幕视频| 亚洲欧美中文字幕| 国产999精品久久久影片官网| 中文字幕亚洲无线码在线一区| 久久国产色av| 国产免费一区二区三区在线能观看| 亚洲精品av在线播放| 岛国av一区二区三区| 国产精品久久色| 亚洲精品久久久久中文字幕欢迎你| 国产精品入口福利| 一本色道久久综合狠狠躁篇的优点| 欧美精品videosex极品1| 粉嫩老牛aⅴ一区二区三区| 亚洲欧洲日本专区| 亚洲永久在线观看| 国产经典一区二区| 久久精彩免费视频| 久久色在线播放| 欧美在线视频播放| 久久久久久久久久久亚洲| 色噜噜狠狠狠综合曰曰曰88av| 日韩欧美精品免费在线| 日韩欧美a级成人黄色| 精品久久久一区二区| 日韩中文字幕国产精品| 欧美放荡办公室videos4k| 国产成人精彩在线视频九色| 亚洲精品456在线播放狼人| 91免费人成网站在线观看18| 亚洲成人网av| 91久久精品国产91久久性色| 国产在线观看不卡| 日韩电影中文字幕在线| 亚洲视频一区二区| 久久久精品电影| 国产91热爆ts人妖在线| 亚洲乱码国产乱码精品精天堂| 国产亚洲视频中文字幕视频| 国产精品黄色av| 久久久精品亚洲| 日韩av在线免费| 欧美第一淫aaasss性| 欧美一区二区三区精品电影| 欧美性xxxx极品hd欧美风情| 国产欧美在线观看| 久久精品亚洲国产| 久久这里只有精品99| 亚洲xxxx3d| 91深夜福利视频| 久久久www成人免费精品张筱雨| 国产精品直播网红| 一本大道亚洲视频| 97成人在线视频| 这里只有精品在线播放| 国产日韩精品在线播放| 国产视频在线观看一区二区| 欧美乱人伦中文字幕在线|