麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > CMS > PhpCMS > 正文

PHPCMS實現(xiàn)多重篩選實現(xiàn)程序

2024-09-10 07:16:22
字體:
供稿:網(wǎng)友

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

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

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

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

  1. /** 
  2.  * 通過指定keyid形式顯示所有聯(lián)動菜單 
  3.  * @param  $keyid 菜單主id 
  4.  * @param  $linkageid  聯(lián)動菜單id,0調(diào)用頂級 
  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.     //后期增加偽靜態(tài)等其他url規(guī)則管理,apache偽靜態(tài)支持9個參數(shù) 
  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.     //根據(jù)get傳值構(gòu)造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 模式的時候,構(gòu)造排除該字段名稱的正則 
  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可以改成符合你自己網(wǎng)站的樣式, 
  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這個文件里,在前臺調(diào)用的時候需要一點點的改動,調(diào)用代碼如下:

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

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

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

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

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

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 久久精品一区视频 | 成人在线视频在线观看 | 男人天堂新地址 | 视频在线色 | 久草在线免费看 | 日日操操 | 国产午夜亚洲精品午夜鲁丝片 | 午夜视频在线免费观看 | 久久大陆 | 久久亚洲春色中文字幕久久 | 亚洲国产成人久久成人52 | 国产妇女乱码一区二区三区 | 福利在线国产 | 视频一区二区视频 | 国产一级在线观看视频 | 激情在线视频 | 日韩黄色片免费看 | 一级免费特黄视频 | 性 毛片 | 欧美另类激情 | 一级做a爱片久久毛片a高清 | 国产91在线亚洲 | 日本在线播放一区二区三区 | 欧美日本在线视频 | 久久久久久久久久久av | 依人九九宗合九九九 | 国产一极毛片 | 久久久久久久一区 | 国产精品麻豆一区二区三区 | av免费不卡国产观看 | www.91视频com| 中文字幕在线亚洲精品 | 黄色大片网站在线观看 | 宅男噜噜噜66一区二区 | 久久精品亚洲欧美日韩精品中文字幕 | 国产亚洲福利 | 国产亚洲精品久久久久久久久 | 黄色片免费在线 | 亚洲成人免费视频在线 | www.99re1.com| 一区在线免费视频 |