织梦DEDECMS5.7实现联动筛选(支持多条件多级选项)_织梦插件


 很多织梦建站的站长在做产品列表页的时候,产品分类多而且都是关联的,用户不能快速的找到自己需要的东西,很多情况下都需要用到筛选功能,织梦后台列表页默认是没有联动筛选功能,实现这个联动筛选功能需要对织梦进行二次开发,接下来教大家如何实现这个联动筛选功能,如下图所示:

注:因为织梦默认是禁止使用php标签,所以需要在后台模板引擎禁用标签里面解除这个标签的禁用,具体方法: 后台——系统——系统基本参数——其它选项——模板引擎禁用标签:php 将这个PHP去掉后保存就可以了!
*步:修改include目录下arc.listview.class.php,修改地方很多,下载地址为:http://pan.baidu.com/s/1ge5BEoV

第二步:打开include目录下extend.func.php文件在底部加入以下代码:

  
//dedecms联动筛选功能 By
function wwwcms_filter($str,$stype="inject") {
  if ($stype=="inject")  {
   $str = str_replace(
          array( "select", "insert", "update", "delete", "alter", "cas", "union", "into", "load_file", "outfile", "create", "join", "where", "like", "drop", "modify", "rename", "'", "/*", "*", "../", "./"),
       array("","","","","","","","","","","","","","","","","","","","","",""),
       $str);
  } else if ($stype=="xss") {
   $farr = array("/\s+/" ,
                 "/<(\/?)(script|META|STYLE|HTML|HEAD|BODY|STYLE |i?frame|b|strong|style|html|img|P|o:p|iframe|u |em|strike|BR|div|a|TABLE|TBODY|object|tr|td |st1:chsdate|FONT|span|MARQUEE|body|title |\r\n|link |meta|\?|\%)([^>]*?)>/isU",
        "/(<[^>]*)on[a-zA-Z]+\s*=([^>]*>)/isU",
        );
   $tarr = array(" ",
                 "",
        "\\1\\2",
        );
   $str = preg_replace($farr, $tarr, $str);
   $str = str_replace(
          array( "<", ">", "'", "\"", ";", "/*", "*", "../", "./"),
       array("&lt;","&gt;","","","","","","",""),
       $str);
  }
  return $str;
 }

/**
  *  载入自定义表单(用于发布)
  *
  * @access    public
  * @param     string  $fieldset  字段列表
 * @param     string  $loadtype  载入类型
 * @return    string
  */
 
 function AddFilter($channelid, $type=1, $fieldsnamef, $defaulttid, $loadtype='autofield')
 {
  global $tid,$dsql,$id;
  $tid = $defaulttid ? $defaulttid : $tid;
  if ($id!="")
  {
   $tidsq = $dsql->GetOne(" Select typeid From `dede_archives` where id='$id' ");
   $tid = $tidsq["typeid"];
  }
  $nofilter = (isset($_REQUEST['TotalResult']) ? "&TotalResult=".$_REQUEST['TotalResult'] : '').(isset($_REQUEST['PageNo']) ? "&PageNo=".$_REQUEST['PageNo'] : '');
  $filterarr = wwwcms_filter(stripos($_SERVER['REQUEST_URI'], "list.php?tid=") ? str_replace($nofilter, '', $_SERVER['REQUEST_URI']) : $GLOBALS['cfg_cmsurl']."/plus/list.php?tid=".$tid);
     $cInfos = $dsql->GetOne(" Select * From  `dede_channeltype` where id='$channelid' ");
  $fieldset=$cInfos['fieldset'];
  $dtp = new DedeTagParse();
     $dtp->SetNameSpace('field','<','>');
     $dtp->LoadSource($fieldset);
     $dede_addonfields = '';
     if(is_array($dtp->CTags))
     {
         foreach($dtp->CTags as $tid=>$ctag)
         {
             $fieldsname = $fieldsnamef ? explode(",", $fieldsnamef) : explode(",", $ctag->GetName());
    if(($loadtype!='autofield' || ($loadtype=='autofield' && $ctag->GetAtt('autofield')==1)) && in_array($ctag->GetName(), $fieldsname) )
             {
                 $href1 = explode($ctag->GetName().'=', $filterarr);
     $href2 = explode('&', $href1[1]);
     $fields_value = $href2[0];
     $dede_addonfields .= '<dl><dt>'.$ctag->GetAtt('itemname').':</dt><dd>';
     switch ($type) {
      case 1:
       $dede_addonfields .= (preg_match("/&".$ctag->GetName()."=/is",$filterarr,$regm) ? '<a title="全部" href="'.str_replace("&".$ctag->GetName()."=".$fields_value,"",$filterarr).'">全部</a>' : '<dd><a class="on">全部</a>').'&nbsp;';
     
       $addonfields_items = explode(",",$ctag->GetAtt('default'));
       for ($i=0; $i<count($addonfields_items); $i++)
       {
        $href = stripos($filterarr,$ctag->GetName().'=') ? str_replace("=".$fields_value,"=".urlencode($addonfields_items[$i]),$filterarr) : $filterarr.'&'.$ctag->GetName().'='.urlencode($addonfields_items[$i]);//echo $href;
        $dede_addonfields .= ($fields_value!=urlencode($addonfields_items[$i]) ? '<a title="'.$addonfields_items[$i].'" href="'.$href.'">'.$addonfields_items[$i].'</a>' : '<a class="on">'.$addonfields_items[$i].'</a>')."&nbsp;";
       }
       $dede_addonfields .= '</dl>';
      break;
     
      case 2:
       $dede_addonfields .= '<select name="filter"'.$ctag->GetName().' onchange="window.location=this.options[this.selectedIndex].value">
        '.'<option value="'.str_replace("&".$ctag->GetName()."=".$fields_value,"",$filterarr).'">全部</option>';
       $addonfields_items = explode(",",$ctag->GetAtt('default'));
       for ($i=0; $i<count($addonfields_items); $i++)
       {
        $href = stripos($filterarr,$ctag->GetName().'=') ? str_replace("=".$fields_value,"=".urlencode($addonfields_items[$i]),$filterarr) : $filterarr.'&'.$ctag->GetName().'='.urlencode($addonfields_items[$i]);
        $dede_addonfields .= '<option value="'.$href.'"'.($fields_value==urlencode($addonfields_items[$i]) ? ' selected="selected"' : '').'>'.$addonfields_items[$i].'</option>
        ';
       }
       $dede_addonfields .= '</select><br/>
       ';
      break;
     }
             }
         }
     }
  echo $dede_addonfields;
 }


第三步:到这里PHP文件修改的部分就完成了!接下来就需要给指定的模型添加字段了,这里需要注意的就是 字段类型的选择,字段类型需要选择单选按钮或者使用select下拉框,如下图所示:

第四部: 前台调用标签 {dede:php}AddFilter(3,1,'fenleia,fenleib,fenleic');{/dede:php}
注:标签说明: AddFilter函数里面的*个数字3是内容模型的id号,各个内容模型的id请到后台内容模型管理里面查看; 第二个数字1是表示筛选的样式,1是使用超链接进行选择,2是使用select下拉框选择,具体可以自己设置了查看效果; 第三个部分'fenleia,fenleib,fenleic'是要添加筛选功能的字段名,这里有3个字段,注意需要用半角逗号隔开。
注:列表页要用{dede:list pagesize='15'  titlelen='60'  addfields='mobanyouhuijia' channelid='2'}这样的标签,选择要有效


# 沈阳推广全域营销概况  # 第三步  # 需要用  # seo计费管理系统云  # 物流智能营销推广好处  # 福建建设监理网站官网  # 丽江网站建设运营公司  # 绵阳*推广网站在哪里  # 中国推广网站  # 潍坊市seo优化  # 遵义*seo排名  # 临高公司网站推广  # 需要注意  # 嘉兴网站关键字优化  # 清流县网站排名优化  # 推广平台网站搭建教程图  # seo网站优化推广费用多少  # 松原seo助手招商加盟  # 南通市档案馆网站建设  # 如何开好门户网站建设  # 岳阳网站建设招商*  # 中山谷歌seo推荐  # 沙湾区网络推广招聘网站  # 目录下  # 织梦插件  # 织梦  # 联动筛选  # 多条件  # 多级选项  # 微软  # 所示  # 如下图  # 都是  # 下拉框  # 半角  # 织梦DEDECMS5.7实现联动筛选(支持多条件多级选项)  # 下载地址  # 要有  # 第二个  # 要用  # 请到  # 自定义  # 建站  # 第三个  # 表单  # 第二步 


相关栏目: 【 Google疑问12 】 【 Facebook疑问10 】 【 网络优化91478 】 【 技术知识72672 】 【 云计算0 】 【 GEO优化84317 】 【 优选文章0 】 【 营销推广36048 】 【 网络运营41350 】 【 案例网站102563 】 【 AI智能45237


相关推荐: 如何快速辨别茅台真假?关键步骤解析  广德云建站网站建设方案与建站流程优化指南  织梦实现调用select下拉式友情链接列表_织梦CMS教程  织梦获取当前栏目id并进行判断调用方法_织梦CMS教程  建站之星安装提示数据库无法连接如何解决?  织梦全站伪静态设置+全套伪静态规则精华教程_织梦CMS教程  织梦cms移动版伪静态实现与PC电脑版静态地址url一致教程_织梦插件  织梦dedecms上下篇文章标题长度修改_织梦CMS教程  织梦修改会员中心目录名称的方法_织梦CMS教程  wdcp面板添加二级域名手机域名m方法_织梦CMS教程  如何通过NAT技术实现内网高效建站?  阿里云主机ECS安装WDCP面板后无法进入解决办法_织梦CMS教程  建站助手4.1:智能建站与SEO优化工具一键生成高效模板  PHPCMS栏目页如何绑定二级域名?_PHPCMS教程  建站云服务器每月费用大概多少?  黑客如何通过漏洞一步步攻陷网站服务器?  织梦让channelartlist标签里的channel支持currentstyle_织梦CMS教程  如何注册花生壳免费域名并搭建个人网站?  如何快速搭建虚拟主机网站?新手必看指南  建站主机如何选?性能与价格怎样平衡?  网站用masonry瀑布流无限加载重叠解决方法_织梦CMS教程  如何通过wdcp面板快速创建网站?  织梦dedecms会员中心的收藏夹里收藏信息删不了的解决办法_织梦CMS教程  建站之星导航菜单设置与功能模块配置全攻略  如何选择域名并搭建高效网站?  phpcms v9 如何实现3条循环tr_PHPCMS教程  建站DNS解析失败?如何正确配置域名服务器?  如何通过PHP快速构建高效问答网站功能?  织梦dedecms cookies泄漏导致SQL漏洞修复_织梦CMS教程  建站之星模板安装的正确流程与注意事项?  织梦dedecms自定义表单前台调用显示+分页调用_织梦CMS教程  织梦让模型里的图片字段支持本地快速上传方法_织梦CMS教程  织梦list列表页调用body内容的教程_织梦CMS教程  建站之星数据库主机如何正确配置?  织梦dedecms5.7SP2手机版上一页下一页链接错误404问题 _织梦CMS教程  织梦相关专题的调用方法_织梦CMS教程  Phpcms V9内容编辑器过滤不支持iframe和JavaScript的解决办法_PHPCMS教程  织梦添加自定义字段为图片出现Fatal error: Call to a member function GetInnerText()错误解决方法_织梦CMS教程  织梦显示英文日期时间的方法_织梦CMS教程  建站之星重装后如何自定义颜色与字体?  织梦自增函数autoindex和itemindex使用区别介绍 _织梦CMS教程  织梦首页和内页友情链接的调用方法_织梦CMS教程  黑客入侵网站服务器的常见手法有哪些?  建站之星如何通过成品分离优化网站效率?  织梦dedecms联动筛选静态化[伪静态+目录形式],利于SEO_织梦插件  建站之星模板如何自定义颜色与字体样式?  建站之星后台管理如何实现高效配置?  建站助手安装教程:环境检测与PHP版本选择步骤详解  建站之星导航如何优化提升用户体验?  建站哪里好?优选平台推荐与关键词优化指南 

 2017-07-07

了解您产品搜索量及市场趋势,制定营销计划

同行竞争及网站分析保障您的广告效果

点击免费数据支持

提交您的需求,1小时内享受我们的专业解答。

南京市珐之弘网络技术有限公司


南京市珐之弘网络技术有限公司

南京市珐之弘网络技术有限公司专注海外推广十年,是谷歌推广.Facebook广告全球合作伙伴,我们精英化的技术团队为企业提供谷歌海外推广+外贸网站建设+网站维护运营+Google SEO优化+社交营销为您提供一站式海外营销服务。

 87067657

 13565296790

 87067657@qq.com

Notice

We and selected third parties use cookies or similar technologies for technical purposes and, with your consent, for other purposes as specified in the cookie policy.
You can consent to the use of such technologies by closing this notice, by interacting with any link or button outside of this notice or by continuing to browse otherwise.