在本文中,您将会了解到关于织梦DEDECMS5.7实现联动筛选的新资讯,同时我们还将为您解释支持多条件多级选项的相关在本文中,我们将带你探索织梦DEDECMS5.7实现联动筛选的奥秘,分析支持多条件多
在本文中,您将会了解到关于织梦DEDECMS5.7实现联动筛选的新资讯,同时我们还将为您解释支持多条件多级选项的相关在本文中,我们将带你探索织梦DEDECMS5.7实现联动筛选的奥秘,分析支持多条件多级选项的特点,并给出一些关于DedeCms分类信息联动筛选,省级与地市分开联动、DedeCMS多条件筛选带删除功能、dedecms织梦分类信息联动筛选(多选)设置办法、dedecms织梦分类信息联动筛选(多选)设置方法的实用技巧。
本文目录一览:- 织梦DEDECMS5.7实现联动筛选(支持多条件多级选项)(织梦联动筛选教程)
- DedeCms分类信息联动筛选,省级与地市分开联动
- DedeCMS多条件筛选带删除功能
- dedecms织梦分类信息联动筛选(多选)设置办法
- dedecms织梦分类信息联动筛选(多选)设置方法
织梦DEDECMS5.7实现联动筛选(支持多条件多级选项)(织梦联动筛选教程)
很多织梦建站的网站管理员在做产品栏目页的时候,产品分类多而且都是关联的,用户不能快速的找到自己需要的东西,很多情况下都需要用到筛选功能,织梦后台栏目页默认是没有联动筛选功能,实现这个联动筛选功能需要对织梦进行二开,接下来教大家怎么实现这个联动筛选功能,如下图所示:
注:因为织梦默认是禁止使用php标签,所以需要在后台源码引擎禁用标签里面解除这个标签的禁用,具体办法: 后台——系统——系统基本参数——其它选项——源码引擎禁用标签:php 将这个PHP去掉后保存就可以了!
*步:修改include目录下arc.listview.class.php,修改地方很多,download地址为:
第二步:打开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("<",">","","","","","","",""), $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()."=http://www.dede58.com/is",$filterarr,$regm) ? '<a title="全部" href="'.str_replace("&".$ctag->GetName()."=".$fields_value,"",$filterarr).'">全部</a>' : '<dd><a>全部</a>').' '; $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>'.$addonfields_items[$i].'</a>')." "; } $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; }
#p#分页标题#e#
第三步:到这里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'}这样的标签,选择要有效 本文章网址:http://www.ppssdd.com/code/11147.html。转载请保留出处,谢谢合作!
DedeCms分类信息联动筛选,省级与地市分开联动
DedeCms分类信息联动筛选,省级与地市分开联动,注意:只适用于5.6版,其它版本没有测试,只应用于分类信息模型。其它联动可参照修改。
可能标题说的不是很清晰,下面以图为示例:
如上图所示,默认是显示的区县,当点击市时,地市处显示的县区。这下大家伙明白了吧!
现在开始代码修改操作,只需要修改一个文件。
打开/include/taglib/infolink.lib.php,找到:
Copy to Clipboard引用的内容:[]
//地区链接
if(empty($nativeplace))
{
foreach($em_nativeplaces as $eid=>$em)
{
if($eid % 500 != 0) continue;
$fields['nativeplace'] .= " <a href='{$baseurl}plus/list.php?channelid={$channelid}&tid={$typeid}&nativeplace={$eid}&infotype={$infotype}'>{$em}</a>\r\n";
}
}
else
{
$sontype = ( ($nativeplace % 500 != 0) ? $nativeplace : 0 );
$toptype = ( ($nativeplace % 500 == 0) ? $nativeplace : ( $nativeplace-($nativeplace%500) ) );
$fields['nativeplace'] = "<a href='{$baseurl}plus/list.php?channelid={$channelid}&tid={$typeid}&nativeplace={$toptype}&infotype={$infotype}'><b>{$em_nativeplaces[$toptype]}</b></a> >> ";
foreach($em_nativeplaces as $eid=>$em)
{
if($eid < $toptype+1 || $eid > $toptype+499) continue;
if($eid == $nativeplace) {
$fields['nativeplace'] .= " <b>{$em}</b>\r\n";
}
else {
$fields['nativeplace'] .= " <a href='{$baseurl}plus/list.php?channelid={$channelid}&tid={$typeid}&nativeplace={$eid}&infotype={$infotype}'>{$em}</a>\r\n";
}
}
}
把上面注释掉,然后在下面添加如下代码:
Copy to ClipboardLiehuo.Net Codes引用的内容:[]
foreach($em_nativeplaces as $eid=>$em)
{
if($eid % 500 != 0) continue;
$fields['nativeplace'] .= " <a href='{$baseurl}plus/list.php?channelid={$channelid}&tid={$typeid}&nativeplace={$eid}'>{$em}</a>\r\n";
}
//地区链接
if(empty($nativeplace))
{
foreach($em_nativeplaces as $eid=>$em)
{
if($eid > 999 ) continue;
$fields['diqu'] .= " <a href='{$baseurl}plus/list.php?channelid={$channelid}&tid={$typeid}&nativeplace={$eid}'>{$em}</a>\r\n";
}
}
else
{
$sontype = ( ($nativeplace % 500 != 0) ? $nativeplace : 0 );
$toptype = ( ($nativeplace % 500 == 0) ? $nativeplace : ( $nativeplace-($nativeplace%500) ) );
foreach($em_nativeplaces as $eid=>$em)
{
if($eid < $toptype+1 || $eid > $toptype+499) continue;
if($eid == $nativeplace) {
$fields['diqu'] .= " <b><a href='{$baseurl}plus/list.php?channelid={$channelid}&tid={$typeid}&nativeplace={$nativeplace}'>{$em}</a></b>\r\n";
}
else {
$fields['diqu'] .= " <a href='{$baseurl}plus/list.php?channelid={$channelid}&tid={$typeid}&nativeplace={$eid}'>{$em}</a>\r\n";
}
}
}
DedeCMS多条件筛选带删除功能
多条件筛选功能常用在图片、装修、机械设备、商城网站等,一般筛选的条件是用户较关注的项目,没必要什么条件都加入。Dedecms多条件筛选PHP开发并不带有删除所选条件功能,PHP筛选和JS筛选原理不一样,实现起来并不复杂。
笔者做的重庆装修公司装修效果图实现多条件筛选带删除功能分享给大家。
效果参考图
参考页面:http://www.jb51.cc/plus/list.PHP?tid=85&zxfg=%CF%D6%B4%FA%BC%F2%D4%BC&zxmj=40-60%C6%BD%C3%D7,点击“x”符号即可删除筛选条件。
先参考文章《Dedecms多条件筛选以筛选词为标题》,下载两个必要的文件,链接:http://pan.baidu.com/s/1ntt73i5
修改下载后的extend.func.PHP文件,找到
} } } } echo $dede_addonfields; } |
在这段代码之前(switch条件case 2 的下面增加case 3)增加如下代码:
case 3: $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]) ? '' : '<span>' . $addonfields_items[$i]; } $dede_addonfields .= (preg_match("/&".$ctag->GetName()."=/is",$filterarr,$regm) ? '<a title="删除" href="' . $GLOBALS['cfg_basehost'] . str_replace("&" . $ctag->GetName() . "=" . $fields_value,"",$filterarr) . '"> x </a></span>' : ''); break; |
模板部分PHP调用
增加未筛选时不显示“筛选条件”字样,用PHP判断自定义字段不为空则显示。
<p> {dede:PHP} $a = $_GET['zxfg']; $b = $_GET['hx']; $c = $_GET['zxmj']; if($a != '' || $b != '' || $c != '') echo "筛选条件:"; AddFilter(7,3,'zxfg,hx,zxmj'); //“7”是自定义字段(橙色部分)所在的频道模型ID,“3”是上面修改部分,下面同理; {/dede:PHP} </p> <phttps://www.jb51.cc/tag/Box/" target="_blank">Box"> {dede:PHP} AddFilter(7,1,zxmj'); {/dede:PHP} </p> |
CSS样式
.shaixuanBox{width:100%;height:auto;margin:0 auto 10px;border-bottom:1px solid #c0c0c0} .shaixuan{padding:10px;text-align:left;font-size:14px;line-height:14px} .shaixuan a{margin:0 6px;color:#000} .shaixuan a:hover{color:#32B9AB} .shaixuan .hover,.shaixuan span{padding:0 5px;color:#fff;background:#32B9AB} .tiao{position:relative;padding:0 20px 0 5px;border:1px solid #eee;border-radius:5px;margin-right:5px;} .tiao a{position:absolute;right:5px;top:0;font-size:20px;color:#ccc;line-height:31px;} .tiao a:hover{text-decoration:none;} |
上一篇:DedeCMS织梦专题页调用方法
下一篇:DedeCMS跳转到移动端适配,获取当前页面URL
dedecms织梦分类信息联动筛选(多选)设置办法
多选效果如下图:具体操作说明:一、注意,首先备份以下两个文件\include\arc.listview.class.php\include\extend.func.php多选版文件download链接:https
多选效果如下图:
具体操作说明:
一、注意,首先备份以下两个文件
\include\arc.listview.class.php
\include\extend.func.php
多选版文件download链接: https://pan.百度.com/s/1sl3azWp 密码: wf8x
二、开始
1.把这些文件夹全部覆盖到根目录;
2.后台 - 系统 - 系统设置 - 系统基本参数 - 其他选项 - 禁用源码标签 ,把php删除后保存。
3.后台 - 核心 - 频道模型 - 内容模型管理
找到您要设置筛选的模型,这里以“普通新闻”为例,点击右边的编辑按钮,在出来的页面中切换到“字段管理”,
点击“添加新字段”,填写的时候注意"数据类型"选择【Checkbox多选框】
三、源码调用说明
在需要显示筛选的地方加入
{dede:php}AddFilter(模型ID,类型,"字段1");{/dede:php}
例:
{dede:php}AddFilter(1,1,"area");{/dede:php}
模型ID
后台 - 核心 - 频道模型 - 内容模型管理
类型
1文字
2下拉
3单选
如果要指定使用哪些自定义参数,请使用
{dede:php}AddFilter(模型ID,类型,"字段1,字段1,字段1");{/dede:php}
例
{dede:php}AddFilter(1,1,"area,type,time,status");{/dede:php}
"area,type,time,status" 是指定的字段名,多个字段用半角逗号分隔。
首页调用办法
{dede:php}AddFilter(模型ID,类型,"字段1",栏目id);{/dede:php}
内容详细页调用办法
{dede:php}AddFilter(模型ID,类型,"字段1",栏目id,1);{/dede:php}
dedecms织梦分类信息联动筛选(多选)设置方法
多选效果如下图:
具体操作说明:
一、注意,首先备份以下两个文件
\include\arc.listview.class.PHP
\include\extend.func.PHP
多选版文件下载链接: https://pan.baidu.com/s/1sl3azWp 密码: wf8x
二、开始
1.把这些文件夹全部覆盖到根目录;
2.后台 - 系统 - 系统设置 - 系统基本参数 - 其他选项 - 禁用模板标签 ,把PHP删除后保存。
3.后台 - 核心 - 频道模型 - 内容模型管理
找到您要设置筛选的模型,这里以“普通文章”为例,点击右边的编辑按钮,在出来的页面中切换到“字段管理”,
点击“添加新字段”,填写的时候注意"数据类型"选择【CheckBox多选框】
三、模板调用说明
在需要显示筛选的地方加入
{dede:PHP}AddFilter(模型ID,类型,"字段1");{/dede:PHP}
例:
{dede:PHP}AddFilter(1,1,"area");{/dede:PHP}
模型ID
后台 - 核心 - 频道模型 - 内容模型管理
类型
1文字
2下拉
3单选
如果要指定使用哪些自定义参数,请使用
{dede:PHP}AddFilter(模型ID,"字段1,字段1,字段1");{/dede:PHP}
例
{dede:PHP}AddFilter(1,"area,type,time,status");{/dede:PHP}
"area,status" 是指定的字段名,多个字段用半角逗号分隔。
首页调用方法
{dede:PHP}AddFilter(模型ID,"字段1",栏目id);{/dede:PHP}
内容页调用方法
{dede:PHP}AddFilter(模型ID,栏目id,1);{/dede:PHP}
今天的关于织梦DEDECMS5.7实现联动筛选和支持多条件多级选项的分享已经结束,谢谢您的关注,如果想了解更多关于DedeCms分类信息联动筛选,省级与地市分开联动、DedeCMS多条件筛选带删除功能、dedecms织梦分类信息联动筛选(多选)设置办法、dedecms织梦分类信息联动筛选(多选)设置方法的相关知识,请在本站进行查询。
本文标签: