dedcms织梦如何实现自定义字段进行产品筛选

有那么一个人出现在你的生命里,其他人都会变成风景,只有那个人是他心口的朱砂,放在心尖上的人,再也放不下。
企业dedecms网站中如果一些产品有很多不同的交叉属性,就需要用到:1、后台为该产品添加一些自定义的筛选字段 2、前台根据这些字段逐层筛选 更方便客户找到他需要的产品(文章) 本插件(文件)完全不动dedecms 任何核心文件; 需要增加和修改的地方为: 1、进行筛选的动态php页面;本篇在wwwroot/plus 下面增加 pcba.php页面; 2、在模板目录下增加用于显示的模板文件;本篇在wwwroot/templets/default/ 下面增加 list_PCBA_with_type.htm 页面; 3、在/include/文件价下找到 extend.func.php 文件 增加一些函数 本文仅作抛砖引玉(功能已实现),希望大家一起来完善(美化)该插件; 本人水平有限,还有很多不足之处;不过以下代码已经能将核心功能完成,也很实用(很多网友需要用到的) 1、在wwwroot/plus 下面增加 pcba.php页面; 代码如下: ------------------------------------------------------------------------------------------ <?php require_once("../ouyp/config.php"); require_once(DEDEINC."/dedetag.class.php"); require_once(dirname(__FILE__).'/../include/common.inc.php'); require_once(DEDEINC."/extend.func.php"); $currentUrl = $_SERVER["REQUEST_URI"]; //根据当前URL中包含的查询字符串进行进行筛选并返回所有符合条件的板卡的ID值,以逗号分隔 function returnQueryIDS($url){ $data = array(); $parameter = explode('&',end(explode('?',$url))); $addquery = count($parameter); foreach($parameter as $val){ $tmp = explode('=',$val); $data[$tmp[0]] = $tmp[1]; } $query = $query."and".$tmp[0]; if($addquery == '1'){ foreach ($data as $key => $value) { $value = urldecode($value); $query = "SELECT * FROM `waimaomoban_pcba` WHERE FIND_IN_SET('$value',$key)"; } }else { $firstquery = array_slice($data,0,1); $otherquery = array_slice($data,1); foreach ($firstquery as $key => $value) { $value = urldecode($value); $query = "SELECT * FROM `waimaomoban_pcba` WHERE FIND_IN_SET('$value',$key)"; } foreach ($otherquery as $key => $value) { $value = urldecode($value); $query = $query." and FIND_IN_SET('$value',$key)"; } } $orderby = ' order by aid desc '; $query = $query.$orderby; if($addquery !== 0){ global $dsql; $array = array(); $dsql->SetQuery($query); $dsql->Execute(); while($row = $dsql->GetArray()) { $aids = array_push($array,$row['aid']); } $aids = join(",",$array); }else{ $aids = 0; } return $aids; } //根据网址查询的字段返回所有符合条件的板卡ID值集合,并输出ID值集合中所有的产品 returnPCBAArc(returnQueryIDS($currentUrl)); require_once(DEDETEMPLATE.'/default/list_PCBA_with_type.htm'); ------------------------------------------------------------------------------------------- 2、在wwwroot/templets/default/ 下面增加 list_PCBA_with_type.htm 页面 核心显示代码如下: <div style="width:750px; float:left; padding-left:10px; height:150px; padding-top:7px; text-align:left; clear:both"> <table width="99%" border="0" cellspacing="0" cellpadding="0"> <tr> <td valign="top" width="120px">板卡架构:</td> <td valign="top"><?php returnFieldValuesPHP($currentUrl,"jiagou","1"); ?> </td> </tr> <tr> <td valign="top"> CPU 核心:</td> <td valign="top"> <?php returnFieldValuesPHP($currentUrl,"hexin","1"); ?> </td> </tr> <tr> <td valign="top">应用领域</td> <td valign="top"><?php returnFieldValuesPHP($currentUrl,"hangye","1"); ?></td> </tr> <tr> <td valign="top">板卡尺寸</td> <td valign="top"><?php returnFieldValuesPHP($currentUrl,"type_size","1"); ?></td> </tr> <tr> <td valign="top"> </td> <td valign="top"> </td> </tr> </table> </div> ----------------------------------------------------------------------------------------- 3、在/include/文件价下找到 extend.func.php 文件 增加以下函数 ------------------------------------------------------------ //根据传递过来的多个以逗号拼接的产品ID,形成数组、查询并返回相应的产品 function returnPCBAArc($qstr,$orderby='id',$desc ='desc') { global $dsql; if(!empty($qstr)) { $arcids = preg_replace("#[^0-9,]#", '', preg_replace("#,#", ',', $qstr)); $query = "SELECT * FROM `waimaomoban_archives` WHERE id in($arcids) order by $orderby $desc"; $dsql->SetQuery($query); $dsql->Execute(); while($row = $dsql->GetArray()) { $url = GetOneArchiveUrl($row['id']); $aTitle = $row['title']; $picURL = $row['litpic']; $gonghao = $row['gonghao']; $size = $row['size']; $gaisu = $row['gaisu']; $keydesc = $row['keydesc']; $msg .="<DIVstyle='float:left; border-right:1px #d0d9e2 solid; border-bottom:1px #d0d9e2 solid; width:332.6px;' >"; $msg .="<UL class=productline_2><LI><DIV class=font14 style=overflow:hidden><SPAN style='FONT-WEIGHT: bold' id=BrandList_ctl06_lblSeriesName><a rel="nofollow noopener noreferrer" href=$url class='title' title='$aTitle'>$aTitle</a></SPAN> </DIV><DIV class=pic><a rel="nofollow noopener noreferrer" href=$url><img class='lazy' style='BORDER:none;WIDTH: 150px;' data-original=$picURL src='http://www.aiipc.com/templets/default//js/grey.gif' /></a></DIV>"; $msg .="<DIV style='HEIGHT: 90px; OVERFLOW: hidden' class=intro><SPAN id=BrandList_ctl06_lblSeriesDescription><P><STRONG>$keydesc</STRONG><BR>$gaisu</P></SPAN></DIV><SPAN class=text_o><a rel="nofollow noopener noreferrer" href=$url class=title>了解详情></A></SPAN><div class=sc_size><div style=width: 80px class=left>功耗及尺寸:</div><span onmouseout=$(this).removeClass('size_a'); onmouseover=$(this).addClass('size_a'); class=size>$gonghao W </span> <span class=size>$size mm</span> </div></LI></UL></DIV>"; } } print($msg); } //将数组转化为查询筛选字符串,类似&a=111&b=222 function array_implode($glue, $separator, $array) { if ( ! is_array( $array ) ) return $array; $string = array(); foreach ( $array as $key => $val ) { if ( is_array( $val ) ) $val = implode( ',', $val ); $string[] = "{$key}{$glue}{$val}"; } return implode( $separator, $string ); } ----------------------------------------------------------------------- 第三个函数最为关键 //获取自定义字段所有值并附带链接 function returnFieldValuesPHP($currentURl,$customField,$type='',$id='17') { global $dsql; if(!empty($customField)) { $fname = $customField; $row = $dsql->GetOne("SELECT fieldset,'' as maintable,addtable,issystem FROM `waimaomoban_channeltype` WHERE id='$id'"); $fieldset = $row['fieldset']; $trueTable = $row['addtable']; $dtp = new DedeTagParse(); $dtp->SetNameSpace("field", "<", ">"); $dtp->LoadSource($fieldset); foreach($dtp->CTags as $ctag) { if(strtolower($ctag->GetName())==strtolower($fname)) break; } //将当前路径数组化 $parameter = explode('&',end(explode('?',$currentURl))); $addquery = count($parameter); foreach($parameter as $val){ $tmp = explode('=',$val); $data[$tmp[0]] = $tmp[1]; } $rowValue = explode(",",$ctag->GetAtt('default')); $filename = "pcba.php"; foreach($rowValue as $key=>$value) { if($addquery !== 0){ //检查当前路径中是否已经存在某个查询的自定义字段选项,如存在则重新赋值,否则直接用"&"添加查询字段 if(array_key_exists($customField, $data)){ $data[$customField] = $value; //将路径数组重新生成路径 $newdata = array(); $newdata = $data; $firstquery = array_slice($newdata,0,1); $otherquery = array_slice($newdata,1,5); foreach($firstquery as $k1 =>$v1){ $fURl = $filename."?".$k1."=".$v1; } if(count($otherquery) !== 0){ next(implode("&", $otherquery)); $query = array_implode( '=', '&', $otherquery); //print_r($query); $newURl = $fURl."&".$query ; }else{ $newURl = $fURl; } }else{ $newURl = $currentURl."&".$customField."=".$value; }

以上就是dedcms织梦如何实现自定义字段进行产品筛选。能改变一个人的因素无非种信仰,金钱,真正的恋情。更多关于dedcms织梦如何实现自定义字段进行产品筛选请关注haodaima.com其它相关文章!

您可能有感兴趣的文章
织梦后台文档列表添加复制文档功能支持所有模型

织梦无法上传ico图标格式文件的如何解决方法

dedecms如何实现任意页面调用当前会员信息的方

织梦dede:tag调用指定多个栏目的TAG标签

织梦栏目列表按附加表自定义字段排序