登录
注册
找回密码
×
显示密码
登录
第三方账号快速登录
忘记密码?
显示密码
显示密码
注册
第三方账号快速登录
手机找回
邮箱找回
获取验证码
获取验证码
显示密码
确认修改
欢迎来到3C源码网
登录管理
网站源码
模板
网站交易
域名交易
需求求购
论坛
网址目录
服务市场
商家
网站首页
源码交易
asp源码
php源码
net源码
jsp源码
java源码
app源码
其他
模板
html模板
html5模板
网站交易
域名交易
服务市场
行业词库
商家列表
网址收录
网站首页
cms教程
dedecms按销量价格自定义模型字段排序列表方法
日期: 2020-02-02 22:03:59
用织梦dedecms做网店商城,会用到按销量,价格等自定义模型字段排序列表,这时就需使用freelist标签。但freelist标签 不支持按照自定义字段排序,实现此功能的解决办法如下: 以添加按商品价格(自定义字段名:price)排序为例 1、打开后台模板dede/templets/freelist_add.htm 找到大概243行
,为其添加一个选项到最后 结果如下:
置顶权限值
发布时间
录入时间
点击量
文档ID
最后评论时间
评论总数
商品价格
保存关闭 2、打开后台模板dede/templets/freelist_edit.htm 找到大概219行 $sorta = "sortrank,置顶权限值;pubdate,发布时间;... ,为其添加一个选项到最后 结果如下: $sorta = "sortrank,置顶权限值;pubdate,发布时间;senddate,录入时间;click,点击量;id,文档ID,lastpost,最后评论时间;postnum,评论总数;rand,随机获取;price,商品价格"; 然后在下方
最后同样添加一个选项
{$sortarrs[$orderby]}\r\n"; ?>
置顶权限值
发布时间
录入时间
点击量
文档ID
最后评论时间
评论总数
商品价格
保存关闭 3、添加自由列表时,就可以选择“商品排序”这个选项了。 4、打开include/arc.freelist.class.php 找到 //排序方式 $ordersql = ""; if($orderby=="senddate") 这段代码,在最后一个else前面添加一段代码,结果如下: //排序方式 $ordersql = ""; if($orderby=="senddate") { $ordersql=" ORDER BY arc.senddate $orderWay"; } else if($orderby=="pubdate") { $ordersql=" ORDER BY arc.pubdate $orderWay"; } else if($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=="scores") { $ordersql = " ORDER BY arc.scores $orderWay"; } else if($orderby=="rand") { $ordersql = " ORDER BY rand()"; } else if($orderby=="price") //自定义商品频道按价格排序 { $ordersql = " ORDER BY ".$addtable.".price"; } else { $ordersql=" ORDER BY arc.sortrank $orderWay"; } 最后最重要的一点:把下面一段代码位置提前到排序这段代码的前面来,否则无法取到$addtable的值 查询语句会出错。调换以后的结果为: //获得附加表的相关信息 $addField = ""; $addJoin = ""; if(is_object($this->ChannelUnit)) { $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; } 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; } } } } } //排序方式 $ordersql = ""; if($orderby=="senddate") { $ordersql=" ORDER BY arc.senddate $orderWay"; } else if($orderby=="pubdate") { $ordersql=" ORDER BY arc.pubdate $orderWay"; } else if($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=="scores") { $ordersql = " ORDER BY arc.scores $orderWay"; } else if($orderby=="rand") { $ordersql = " ORDER BY rand()"; } else if($orderby=="price") //自定义商品频道按价格排序 { $ordersql = " ORDER BY ".$addtable.".price"; } else { $ordersql=" ORDER BY arc.sortrank $orderWay"; } 保存关闭。 至此,大功告成,如需添加其他字段,按照此方法处理即可。 此方法较适用于分类不太多的情况,如果分类太多,那生成的列表就太多,需要考虑别的解决方案了。
上一篇:两种织梦dedecms首页调用最新评论方法
下一篇:织梦likearticle标签调用和显示附加字段办法
相关内容
网络建设的流程分享 保证合理性和最优性
设计网站登录页面这些要注意
404页面设置如何增加用户体验度
企业网站建设前后容易被忽略的问题
网站建设不是越便宜越好选择合适的最好
行业B2B网站的运营思路和方法
四大运营思维的要领主要有那些?
为什么说网站优化是一场持久战?
企业建站如何才能少走弯路呢?
营销型网站的整体结构有那些结构层