福建快三现场直播开奖记录 福建快三二同单选推荐 福建快三助手下载安装到手机 福建快三交流群 福建快三以往开奖 福建快三当天开奖走势 福建快三计划软件手机版 福建快三两天没开555 福建快三25号是多少钱 福建快三开奖结果走势图一定牛 福建快三未出号码统计器 福建快三开奖视频 福建快三开奖结果查询今天 福建快三正规销售平台 福建快三专家推荐号
51网络科技专业提供

香港空间

美国空间

国内免备案空间

月付空间

免备案虚拟主机

,支持免费试用2天
售前客服
在线咨询
在线咨询
在线咨询
在线咨询
售后服务
在线咨询
在线咨询
财务问题
在线咨询
代理?#29992;?/SPAN>
在线咨询
 
推荐产品
    300M国内免备案空间
    300M网站空间,送60M数据库!
    现价只要:22元/月
    500M国内免备案空间
    500M网站空间,送100M数据库!
    现价只要:29元/月
    1G国内免备案空间
    1G网站空间,送300M数据库!
    现价只要:39元/月
    500M香港免备案空间
    500M网站空间,送160M数据库!
    现价只要:26元/月
    1G香港免备案空间
    1G网站空间,送300M数据库!
    现价只要:36元/月
    100M美国空间
    100M网站空间,送30M数据库!
    现价只要:12.8元/月
 
您的当前位置:首页 > 常见问题 > 建站常见问题 > 正文
dede多条件联动多级-修改字段后失效如何解决?
文章来源:51网络科技  点击数:  更新时间:2017-8-15 11:49:28
购买国内免备案空间购买香港空间【不限iis】宽屏网站制作【还送手机网站】
香港云主机/99元/月国内空间【免费备案】 特价网站空间
.Net专用空间香港独立IP空间 游戏空间【支持月付】

织梦DEDE分类信息实现联动筛选(支持多条件多级选项)解决方案

   很多织梦建站的站长在做产品列表页的时候,产品分类多而且都是关联的,用户不能快速的?#19994;?#33258;己需要的东西,很多情况下都需要用到筛选功能,织梦后台列表页默认是没有联动筛选功能,实现这个联动筛选功能需要对织梦进行二次开发,接下来教大家如何实现这个联动筛选功能,如下图所示:
织梦DEDE分类信息实现联动筛选(支持多条件多级选项)解决方案

:因为织梦默认是禁止使用php标签,所以需要在后台模板引擎禁用标签里面解除这个标签的禁用,具体方法:
后台——系统——系统基本?#38382;?#20854;它选项——模板引擎禁用标签:php
将这个PHP去掉后保存就可以了!

第一步:打开arc.listview.class.php ?#19994;劍?strong>if(empty($cfg_need_typeid2)) $cfg_need_typeid2 = 'N';  
在下面加入以下代码:
 
//联动筛选获得附加表的相关信息
$addtable  = $this->ChannelUnit->ChannelInfos['addtable'];
if($addtable!="")
{
$addJoin = " LEFT JOIN `$addtable` ON arc.id = ".$addtable.'.aid ';
$addField = '';
$fields = explode(',',$this->ChannelUnit->ChannelInfos['listfields']);
foreach($fields as $k=>$v)
{
$nfields[$v] = $k;
}
if(is_array($this->ChannelUnit->ChannelFields) && !empty($this->ChannelUnit->ChannelFields))
{
foreach($this->ChannelUnit->ChannelFields as $k=>$arr)
{
if(isset($nfields[$k]))
{
if(!empty($arr['rename'])) {
$addField .= ','.$addtable.'.'.$k.' as '.$arr['rename'];
}
else {
$addField .= ','.$addtable.'.'.$k;
}
}
}
}
if (isset($_REQUEST['tid']))
{
foreach($_GET as $key => $value) {
$filtersql .= ($key!="tid" && $key!="TotalResult" && $key!="PageNo") ? " AND $addtable.".wwwcms_filter($key)." = '".wwwcms_filter(urldecode($value))."'" : '';
}
}
}
else
{
$addField = '';
$addJoin = '';
}

第二步:打开extend.func.php文件在底部加入以下代码:
/*联动筛选字符过滤函数*/
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('&', $href1GetName()."=".$fields_value,"",$filterarr).'">全部);
     $fields_value = $href2织梦DEDE分类信息实现联动筛选(支持多条件多级选项)解决方案;
     $dede_addonfields .= '
'.$ctag->GetAtt('itemname').':
';
     switch ($type) {
      case 1:
       $dede_addonfields .= (preg_match("/&".$ctag->GetName()."=/is",$filterarr,$regm) ? 'GetName()."=".$fields_value,"",$filterarr).'">全部' : '
全部').'';
     
       $addonfields_items = explode(",",$ctag->GetAtt('default'));
       for ($i=0; $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]) ? ''.$addonfields_items[$i].'' : ''.$addonfields_items[$i].'');
       }
       $dede_addonfields .= '';
      break;
     
      case 2:
       $dede_addonfields .= '
       ';
      break;
     }
             }
         }
     }
  echo $dede_addonfields;
 }

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

第四部: 前台调用标签

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


但我在后台添加了几个区域后,再点前台的区域都显示为空,也就是没有这个区域的内容。仔细检查了好几个小时,终于发现了问题,数据库的这个字段没有把新的字段更新进去。也就是还有加的内容区域这个字段是空的。
解决方法:

频道模型管理里面修改字段,字段类型改为:已经固化在发布表单中字段

dede多条件联动多级-修改字段后失效如何解决?


这样数据库就更新了,但在后台添加时区域这个字段选择不了了,我们再修改一下,将autofield这个值设?#26790;?即可。再在后台添加一下产品,选中对应的分类就可以在前台显示了。

有用的东西与大家一起分享下。有需要购买dede网站空间的朋友,可以看下我们的dede空间


国内、香港、美国、全免备案www.ibuhg.live--51网络科技,专业免备案空间提供商!
相关文章

上班时间:周一至周六 (9:00-12:00 13:30:00-17:30 19:00-23:00) 电子邮箱:[email protected]  微信公众号:mianbeian
版权所有:51免备案空间 Copyright All Reserved. © 2005-2018 www.ibuhg.live [站点地图] [网站地图]
售前咨询电话:020-87656258 (多线) 售后技术支持:139-8163-8525 传真:020-52817561 客服QQ:984651771(24H)

免备案空间
51网络科技-专业免备案空间提供商
福建快三和值走势图
福建快三现场直播开奖记录 福建快三二同单选推荐 福建快三助手下载安装到手机 福建快三交流群 福建快三以往开奖 福建快三当天开奖走势 福建快三计划软件手机版 福建快三两天没开555 福建快三25号是多少钱 福建快三开奖结果走势图一定牛 福建快三未出号码统计器 福建快三开奖视频 福建快三开奖结果查询今天 福建快三正规销售平台 福建快三专家推荐号