假如网站中,有一个价格字段trueprice,我希望根据价格从小到大,或从大到小进行点击筛选,或按热门,最新商品进行排序,效果图如下

(此图片来源于网络,如有侵权,请联系删除! )

列表模板上增加排序,myorder=hot注意,其中增加了一个虚拟字段myorder,这个字段后台并没有添加.他只是一个排序的标志符,需要最后排除掉.

另外,模板上用到了{dede:php}标签,需要在后台系统设置.系统基本参数,其它设置中,去掉对php模板标签的限制.

模板如下

{dede:php}if($_GET['myorder']=='hot'){echo '最热';}else{echo '最热';}{/dede:php}

{dede:php}if($_GET['myorder']=='new'){echo '最新';}else{echo '最新';}{/dede:php}

{dede:php}if($_GET['myorder']=='price_high'){echo '价高';}else{echo '价高';}{/dede:php}

{dede:php}if($_GET['myorder']=='price_low'){echo '价低';}else{echo '价低';}{/dede:php}

首先,在自定义函数中\include\extend.func.php增加非法过滤函数

/*字符过滤函数*/

function snail_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+/" ,

"/]*?)>/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;

}

然后,在include/arc.listview.class.php里面增加排序判断及分页的定义,并排除myorder字段

一,修改CountRecord(),在第二行的下面

在if(empty(cfgneedtypeid2))cfgneedtypeid2))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'])){

$myget=$_GET;

unset($myget['myorder']);//删除一个字段

//删除数组中的个别元素,活动状态,进行中,刚结束等,这些值是根据结束时间动态判断的,所以,数据库中并不存在,需要过滤掉这个sql查询条件

foreach($_GET as $key => $value) {

//过滤掉不在$addtable表格中的字段,本次不负责处理

//print_r($_GET);exit;

$filtersql .= ($key!="q"&$key!="tid" && $key!="TotalResult" && $key!="PageNo") ? " AND $addtable.".snail_filter($key)." = '".snail_filter(urldecode($value))."'" : '';

}

}

}

else

{

$addField = '';

$addJoin = '';

}

//新增结束

//统计数据库记录

二、继续找到

$cquery = "SELECT COUNT(*) AS dd FROMdede_arctinyarc WHERE ".$this->addSql;

修改为

$cquery = "SELECT COUNT(*) AS dd FROM `dede_arctiny` arc $addJoin WHERE ".$this->addSql.$filtersql;

三,替换函数function GetArcList()为全新的

function GetArcList($limitstart=0,$row=10,$col=1,$titlelen=30,$infolen=250,

$imgwidth=120,$imgheight=90,$listtype="all",$orderby="default",$innertext="",$tablewidth="100",$ismake=1,$orderWay='desc')

{

global $cfg_list_son;

$typeid=$this->TypeID;

if($row=='') $row = 10;

if($limitstart=='') $limitstart = 0;

if($titlelen=='') $titlelen = 100;

if($infolen=='') $infolen = 250;

if($imgwidth=='') $imgwidth = 120;

if($imgheight=='') $imgheight = 120;

if($listtype=='') $listtype = 'all';

if($orderWay=='') $orderWay = 'desc';

if($orderby=='') {

$orderby='default';

}

else {

$orderby=strtolower($orderby);

}

$tablewidth = str_replace('%','',$tablewidth);

if($tablewidth=='') $tablewidth=100;

if($col=='') $col=1;

$colWidth = ceil(100/$col);

$tablewidth = $tablewidth.'%';

$colWidth = $colWidth.'%';

$innertext = trim($innertext);

if($innertext=='') {

$innertext = GetSysTemplets('list_fulllist.htm');

}

//排序方式

$ordersql = '';

if($orderby=="senddate" || $orderby=="id") {

$ordersql=" order by arc.id $orderWay";

}

else if($orderby=="hot" || $orderby=="click") {

$ordersql = " order by arc.click $orderWay";

}

else if($orderby=="lastpost") {

$ordersql = " order by arc.lastpost $orderWay";

}else if($orderby=="weight") {

$ordersql = " order by arc.weight $orderWay";

}

else {

$ordersql=" order by arc.sortrank $orderWay";

}

//新增综合排序:默认 最热 最新 价高 价低

$addtable = $this->ChannelUnit->ChannelInfos['addtable'];

if($_GET['myorder']=='默认'){

$orderby='sortrank';

$ordersql = " order by arc.sortrank $orderWay";

}elseif($_GET['myorder']=='hot'){

$orderby='hot';

$ordersql = " order by arc.click $orderWay";

}

elseif($_GET['myorder']=='new'){

$orderby='id';

$ordersql = " order by arc.id $orderWay";

}

elseif($_GET['myorder']=='price_high'){

$orderby='price_high';

$ordersql = " order by ".$addtable.".price ".$orderWay;

}

elseif($_GET['myorder']=='price_low'){

$orderby='price_low';

$ordersql = " order by ".$addtable.".price asc";

}

elseif($_GET['myorder']=='mian_high'){

$orderby='mian_high';

$ordersql = " order by ".$addtable.".mian ".$orderWay;

}

elseif($_GET['myorder']=='mian_low'){

$orderby='mian_low';

$ordersql = " order by ".$addtable.".mian asc";

}

else{

$ordersql=" order by arc.id $orderWay";

}

//多条件查询新增,获得附加表的相关信息/

获得一个单列的文档列表继续

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'])){

$myget=$_GET;

unset($myget['myorder']);//删除一个字段

foreach($myget as $key => $value) {

$mywhere=" AND $addtable.".snail_filter($key)." = '".snail_filter(urldecode($value))."'";

}

$filtersql .= ($key!="tid" && $key!="TotalResult" && $key!="PageNo") ? $mywhere : '';

}

}

else

{

$addField = '';

$addJoin = '';

}

//print_r($addField);exit;//取出所有自定义字段 织梦6久阁模板网

//print_r($addJoin);exit;//left join `dede_addonarticle` on arc.id = dede_addonarticle.aid

//如果不用默认的sortrank或id排序,使用联合查询(数据量大时非常缓慢)

if(ereg('hot|click|lastpost|weight',$orderby))

{

$query = "Select arc.*,tp.typedir,tp.typename,tp.isdefault,tp.defaultname,

tp.namerule,tp.namerule2,tp.ispart,tp.moresite,tp.siteurl,tp.sitepath

$addField

from `dede_archives` arc

left join `dede_arctype` tp on arc.typeid=tp.id

$addJoin

WHERE {$this->addSql} $filtersql $ordersql LIMIT $limitstart,$row";

}

//普通情况先从arctiny表查出ID,然后按ID查询(速度非常快)

else

{

$t1 = ExecTime();

$ids = array();

$query = "SELECT id FROM `dede_arctiny` arc $addJoin WHERE {$this->addSql} $filtersql $ordersql LIMIT $limitstart,$row ";

//print_r($query);exit;//SELECT id FROM `dede_arctiny` arc left join `dede_addonarticle` on arc.id = dede_addonarticle.aid WHERE arc.arcrank > -1 And ( arc.typeid = '1' OR CONCAT(',', arc.typeid2, ',') like '%,1,%' ) AND dede_addonarticle.mystate = '即将开始' AND dede_addonarticle.mytype = '投资返现' order by arc.id desc LIMIT 0,16

$this->dsql->SetQuery($query);

$this->dsql->Execute();

//die(mysql_error());

while($arr=$this->dsql->GetArray())

{

$ids[] = $arr['id'];

}

//print_r($ids);exit;

$idstr = join(',',$ids);

//print_r($idstr);exit;//13,12,11,10,9,5,4 文章id串

if($idstr=='')

{

return '';

}

else

{

$query = "Select arc.*,tp.typedir,tp.typename,tp.corank,tp.isdefault,tp.defaultname,

tp.namerule,tp.namerule2,tp.ispart,tp.moresite,tp.siteurl,tp.sitepath

$addField

from `dede_archives` arc left join `dede_arctype` tp on arc.typeid=tp.id

$addJoin

where arc.id in($idstr) $ordersql ";

}

$t2 = ExecTime();

//echo $t2-$t1;

}

$this->dsql->SetQuery($query);

//print_r($query);exit;

//die(mysql_error());

$this->dsql->Execute('al');

$t2 = ExecTime();

//echo $t2-$t1;exit;

$artlist = '';

$this->dtp2->LoadSource($innertext);

$GLOBALS['autoindex'] = 0;

for($i=0;$i

//print_r($row);exit;调用条数20

{

if($col>1)

{

$artlist .= "

\r\n";

}

for($j=0;$j

{

if($row = $this->dsql->GetArray("al"))

//print_r($row);exit;

{

$GLOBALS['autoindex']++;

$ids[$row['id']] = $row['id'];

//处理一些特殊字段

$row['infos'] = cn_substr($row['description'],$infolen);

$row['id'] = $row['id'];

if($row['corank'] > 0 && $row['arcrank']==0)

{

$row['arcrank'] = $row['corank'];

}

$row['filename'] = $row['arcurl'] = GetFileUrl($row['id'],$row['typeid'],$row['senddate'],$row['title'],$row['ismake'],

$row['arcrank'],$row['namerule'],$row['typedir'],$row['money'],$row['filename'],$row['moresite'],$row['siteurl'],$row['sitepath']);

$row['typeurl'] = GetTypeUrl($row['typeid'],MfTypedir($row['typedir']),$row['isdefault'],$row['defaultname'],

$row['ispart'],$row['namerule2'],$row['moresite'],$row['siteurl'],$row['sitepath']);

if($row['litpic'] == '-' || $row['litpic'] == '')

{

$row['litpic'] = $GLOBALS['cfg_cmspath'].'/images/defaultpic.gif';

}

if(!eregi("^http://",$row['litpic']) && $GLOBALS['cfg_multi_site'] == 'Y')

{

$row['litpic'] = $GLOBALS['cfg_mainsite'].$row['litpic'];

}

$row['picname'] = $row['litpic'];

$row['stime'] = GetDateMK($row['pubdate']);

$row['typelink'] = "".$row['typename']."";

$row['image'] = "";

$row['imglink'] = "".$row['image']."";

$row['fulltitle'] = $row['title'];

$row['title'] = cn_substr($row['title'],$titlelen);

if($row['color']!='')

{

$row['title'] = "".$row['title']."";

}

if(ereg('c',$row['flag']))

{

$row['title'] = "".$row['title']."";

}

$row['textlink'] = "".$row['title']."";

$row['plusurl'] = $row['phpurl'] = $GLOBALS['cfg_phpurl'];

$row['memberurl'] = $GLOBALS['cfg_memberurl'];

$row['templeturl'] = $GLOBALS['cfg_templeturl'];

//编译附加表里的数据

foreach($row as $k=>$v)

{

$row[strtolower($k)] = $v;

}

foreach($this->ChannelUnit->ChannelFields as $k=>$arr)

{

if(isset($row[$k]))

{

$row[$k] = $this->ChannelUnit->MakeField($k,$row[$k]);

}

}

if(is_array($this->dtp2->CTags))

{

foreach($this->dtp2->CTags as $k=>$ctag)

{

//print_r($this->dtp2->CTags);exit;所有字段名

if($ctag->GetName()=='array')

{

//传递整个数组,在runphp模式中有特殊作用

$this->dtp2->Assign($k,$row);

}

else

{

if(isset($row[$ctag->GetName()]))

{

$this->dtp2->Assign($k,$row[$ctag->GetName()]);

}

else

{

$this->dtp2->Assign($k,'');

}

}

}

}

if($row['myendtime']!=''){

if($row['myendtime']

$artlist2 .= $this->dtp2->GetResult();

}else{

$artlist1 .= $this->dtp2->GetResult();

}

$artlist=$artlist1.$artlist2;

}else{

$artlist .= $this->dtp2->GetResult();

}

//$i2=$i2+1;

//print_r($i2);

}//if hasRow

//exit;

}//Loop Col

//print_r($col);exit;

if($col>1)

{

$i += $col - 1;

$artlist .= "

\r\n";

}

$row2[] = $row;

}//Loop Line

//print_r($row2);exit;

$t3 = ExecTime();

//echo ($t3-$t2);

$this->dsql->FreeResult('al');

//die(mysql_error());

return $artlist;

}

四,动态分页函数整体替换为

//获取动态的分页列表

function GetPageListDM($list_len,$listitem="index,end,pre,next,pageno",$pagelang)

{

/*****************************************************************************************/

if($pagelang=='cn'){

$uahome="首页";

$uaprevious="?";

$uanext="?";

$ualastpage="末页";

$uapage="页";

$uatotal="共";

$uarecords="条记录";

}else{

$uahome=" Home ";

$uaprevious=" Previous ";

$uanext=" Next ";

$ualastpage=" Last Page ";

$uapage=" Page ";

$uatotal=" Total ";

$uarecords=" Records. ";

}

global $cfg_rewrite;

$prepage = $nextpage = '';

$prepagenum = $this->PageNo-1;

$nextpagenum = $this->PageNo+1;

if($list_len=='' || ereg("[^0-9]",$list_len))

{

$list_len=3;

}

$totalpage = ceil($this->TotalResult/$this->PageSize);

if($totalpage<=1 && $this->TotalResult>0)

{

return "

  • ".$uatotal." 1 ".$uapage."/".$this->TotalResult."".$uarecords."\r\n";

}

if($this->TotalResult == 0)

{

return "

  • ".$uatotal." 0 ".$uapage."/".$this->TotalResult."".$uarecords."\r\n";

}

$maininfo = "

  • ".$uatotal." {$totalpage}".$uapage."".$this->TotalResult."".$uarecords."\r\n";

$purl = $this->GetCurUrl();

if($cfg_rewrite == 'Y')

{

$nowurls = ereg_replace("\-", ".php?", $purl);

$nowurls = explode("?", $nowurls);

$purl = $nowurls[0];

}

$geturl = "tid=".$this->TypeID."&TotalResult=".$this->TotalResult."&";

$purl .= '?'.$geturl;

$optionlist = '';

//$hidenform = "\r\n";

//$hidenform .= "\r\n";

//获取筛选参数

foreach($_GET as $key => $value) {

$pageaddurl .= ($key!="tid" && $key!="TotalResult" && $key!="PageNo") ? "&".snail_filter($key)."=".snail_filter($value) : '';

}

//获得?和?的链接

if($this->PageNo != 1)

{

$prepage.="

".$uaprevious."\r\n";

$indexpage="

".$uahome."\r\n";

}

else

{

$indexpage="

".$uahome."\r\n";

}

if($this->PageNo!=$totalpage && $totalpage>1)

{

$nextpage.="

".$uanext."\r\n";

$endpage="

".$ualastpage."\r\n";

}

else

{

$endpage="

".$ualastpage."\r\n";

}

//获得数字链接

$listdd="";

$total_list = $list_len * 2 + 1;

if($this->PageNo >= $total_list)

{

$j = $this->PageNo-$list_len;

$total_list = $this->PageNo+$list_len;

if($total_list>$totalpage)

{

$total_list=$totalpage;

}

}

else

{

$j=1;

if($total_list>$totalpage)

{

$total_list=$totalpage;

}

}

for($j;$j<=$total_list;$j++)

{

if($j==$this->PageNo)

{

$listdd.= "

$j\r\n";

}

else

{

$listdd.="

".$j."\r\n";

}

}

$plist = '';

if(eregi('index',$listitem)) $plist .= $indexpage;

if(eregi('pre',$listitem)) $plist .= $prepage;

if(eregi('pageno',$listitem)) $plist .= $listdd;

if(eregi('next',$listitem)) $plist .= $nextpage;

if(eregi('end',$listitem)) $plist .= $endpage;

if(eregi('option',$listitem)) $plist .= $optionlist;

if(eregi('info',$listitem)) $plist .= $maininfo;

if($cfg_rewrite == 'Y')

{

$plist = str_replace('.php?tid=', '-', $plist);

$plist = str_replace('&TotalResult=', '-', $plist);

$plist = preg_replace("/&PageNo=(\d+)/i",'-\\1.html',$plist);

}

return $plist;

}

免责声明:本站所有文章和图片均来自用户分享和网络收集,文章和图片版权归原作者及原出处所有,仅供学习与参考,请勿用于商业用途,如果损害了您的权利,请联系网站客服处理。

本站vip会员 请加入织梦58 VIP②群 PS:加入时备注用户名或昵称

普通注册会员或访客 请加入织梦58 技术交流②群

php点击根据价格升降序,织梦列表页点击按价格按评分按更新按点击排序进行筛选方法...相关推荐

  1. PHP实现列表页综合筛选功能,dede织梦列表页联动筛选方法功能的实现

    [DEDECMS.织梦开源程序已经成为市场上主流仿站开源代码,它能够非常快速的放置一个已经建立好的网站,但是前提是这些网站比较简单,没有一些复杂的功能,那么使用DEDECMS仿站是最快速,最有效的.而 ...

  2. 织梦列表页生成的html在哪里,织梦系统给手机版生成静态页HTML的方法

    原标题:织梦系统给手机版生成静态页HTML的方法 织梦dedecms默认的手机端不能生成静态,对于使用静态的网站来说多少有些不方便,其实dedecms可以通过一种另类的方法来给手机端生成静态页面的. ...

  3. 织梦列表页循环出来的数据显示乱码,但是头部及尾部分页完好的解决办法

    在用织梦二开的时候,突然就出现了乱码,用下面的方法,轻易解决问题,不用DW,也不用使用在线的任何编码工具.本人亲测有效.如果你用了我的办法还不行的话,请留言.我每天都会看csdn的,放心吧.我理解那种 ...

  4. html搜狐热搜列表仿写,织梦列表页获取热搜排行榜文章

    001 //列表页获取网友热搜 24小时 002 function GetHotSearch($tid){ 003 global $dsql; 004 $time = time() - 86400; ...

  5. 【带移动搜索功能】织梦dedecms手机WAP插件专业版 织梦自动建手机WAP站 PC+WAP数据同步更新 访问自动跳转

    安装步数: ( 插件及高清视频教程:QQ  86862635 或www.wlyx158.com 搜索 织梦自动建手机WAP站 PC+WAP数据同步更新) 1. 检查数据表的前缀是不是dede_   ( ...

  6. 织梦文章页自动添加TAG标签内链插件(可设置内链总数)

    织梦文章页自动添加TAG标签内链介绍 1.织梦文章页把TAG作为内链,增加网站内链,可以让蜘蛛多爬,多收录,能有效提高网站TAG标签的收录及排名. 2.织梦tag标签对应的链接都是列表页面,和文章分类 ...

  7. 织梦文章页模板使用php语法,织梦文章页面模板顶一下踩一下调用教程

    在我们做织梦文章内容页模板的时候经常会用到顶一下踩一下这个功能 当然经常做织梦模板的人肯定以为很简单,不懂就难咯  调用方法很简单,主要就是js和dede代码,调用方法如下: 需要调用代码: 1.在 ...

  8. 织梦 php版本,织梦DEDECMS在PHP版本高于5.5的情况下无法使用关键词內链的解决方法...

    织梦DEDECMS在PHP版本高于5.5的情况下无法使用关键词內链的解决方法: 打开/include/arc.archives.class.php 找到 找到: $body = @preg_repla ...

  9. dede织梦文章页获取上一篇下一篇的链接地址

    大家都知道织梦文章页上一篇.下一篇的标签分别是: {dede:prenext get=pre/} = 上一篇:某某文档 {dede:prenext get=next/}= 下一篇:某某文档 但是我们在 ...

最新文章

  1. 打开Office时出现“运行时错误91”问题的解决办法
  2. ONNX+TensorRT
  3. AutoLisp:AutoLisp实现对AutoCAD进行输入命令,选择对象,实现不同方向进行缩放
  4. 关于Unity中变量和函数的定义
  5. C++Primer模板
  6. 如果让我做一回产品经理。。。
  7. php内置常量显示行数,php学习记录-系统内置常量(constant)
  8. python iot_使用EduBlocks,适用于Linux的i3窗口管理器,必读新闻通讯,CI / CD,敏捷,IoT等进行Python编程
  9. java json重命名,eclipse中java变量怎么变成json格式的编码?
  10. java quartz
  11. LeetCode刷题(2)
  12. C#实现关机的两种方法
  13. python二级基础题,计算机二级python部分基础操作题
  14. 图像质量评估---FID
  15. 反编译工具的安装与使用(解决部分能反编译部分不能反编译)
  16. 杭电计算机专业期末考试助攻,杭电嘻哈:舶来文化亦可玩出小清新
  17. Android学习:Service自问自答
  18. Oracle_登录数据库系统
  19. 【java】Java 包(package)
  20. Java 从虚拟机层面看程序代码是怎么运行起来的

热门文章

  1. php高版本安装ecshop错误解决方法
  2. 解决flask中文乱码的问题
  3. 【Airtest】Airtest中swipe方法兼容不同分辨率的解决方法
  4. SpringCloud Gateway 测试问题解决
  5. 安装.Net Framework 4.6.2时出现“无法建立到信任根颁发机构的证书链”解决方法
  6. deepin-wine-qq无法加载图片解决方案
  7. 如何反转“轨道生成”?
  8. 你最喜欢的“程序员”卡通是什么?
  9. 高并发场景之RabbitMQ篇
  10. spring boot 学习(二)spring boot 框架整合 thymeleaf