dede彻底解决dede按权重降序排序的问题(部分转载)
来源:互联网 发布:ubuntu如何编辑文件 编辑:程序博客网 时间:2024/06/15 14:24
dede排序对网站来说一直存在问题,默认是按照最新发布时间排序。这样排序有个问题,一旦更新之后即被视为最新发布,于是原本做好的排序瞬间就乱了。
这种时候,按权重排序是个很好的选择,但按权重排序到处存在BUG~。很多地方都缺少设置,要么是设定后完全不起作用,在百度和论坛找了很多帖子,都没能完全解决问题。在做第二个网站的时候,终于把BUG修订完全了。
要解决权重排序的问题,主要集中在以下几个文件上:
/include/arc.freelist.class.php 自由列表对应的文件
/dede/templets/freelist_edit.htm 新增自由列表对应的文件
/dede/templets/freelist_add.htm 修改自由列表对应的文件
/include/arc.listview.class.php list列表对应的文件
/include/taglib/arclist.lib.php arclist列表对应的文件
修改的内容很简单,按照以下步骤即可修正:
1、打开/include/arc.freelist.class.php, 找到以下代码:
else if($orderby=="rand")
{
$ordersql = " ORDER BY rand()";
}
在代码下方插入以下代码后保存:
else if($orderby=="weight")
{
$ordersql = " order by arc.weight asc";
}
2、打开/dede/templets/freelist_add.htm,找到以下代码:
<td height="28" align="left">排列顺序:
<select name="orderby" id="orderby" style="width:120">
在代码下方插入以下代码,保存:
<option value="weight">权重值</option>
3、打开/dede/templets/freelist_edit.htm,找到以下代码:
<?php
echo "<option value=\"$orderby\" selected>{$sortarrs[$orderby]}</option>\r\n";
?>
在代码下方插入以下代码,保存:
<option value="weight">权重值</option>
4、打开/include/arc.listview.class.php,找到以下代码:
else if($orderby=="lastpost")
{
$ordersql = " ORDER BY arc.lastpost $orderWay";
}
在代码下方插入以下代码:
else if($orderby=="weight")
{
$ordersql = " order by arc.weight asc";
}
找到以下代码:
if(preg_match('/hot|click|lastpost|/', $orderby))
替换为以下代码并保存:
if(preg_match('/hot|click|lastpost|weight/', $orderby))
5、打开/include/taglib/arclist.lib.php,找到以下说明文字:
//功能:增加按好评数和差评数调用
替换为以下代码并保存:
else if($orderby == 'weight') $ordersql = " ORDER BY arc.weight asc";
//功能:增加按好评数和差评数调用
修改这5个文件,即能解决权重排序的问题(根据权重从小到大排列),并使得自由列表中,也可以采用权重排序的方式生成列表。
调用例子:
{dede:arclist flag='a' limit='0,1' typeid='10' isweight='y' orderby='weight'}
<a href="/z/al/index_12_1.html" target="_blank">
<img src="[field:picname/]" width="300" height="168" alt="[field:shorttitle/]" style="border:1px solid "></a>
{/dede:arclist}
上述是网上转载的一个相对靠谱的方法,按照这个步骤做下来,应该可以达到按照权重“升序”排列的目的。但是我的目的是按照“降序”排列(我把上面的asc改成了desc),因为我的思路是 权重小(数字小)的排列在下面,然后随着权重(数字)越来越大,排列在上面 个人认为这样更合适。但是升序还是实现不了。还得操作下一步
在include\taglib下找到文件arclist.lib.php 打开来看一下代码 大概在1133行
// 进行判断,如果启用排序则内容输出为重新排序后的内容
// var_dump($isweight=='y' && count($orderWeight) == $line);
// var_dump($isweight=='y' && count($orderWeight) == $line);
如下截图
阅读全文
0 0
- dede彻底解决dede按权重降序排序的问题(部分转载)
- dede织梦技巧:教你彻底解决dede按权重排序的问题
- dede 按权重排序
- dede:list orderby=weight 按权重排序无效问题
- dede排序问题:dede按自己的ID排序
- dede文章按权重排序的正确使用方法 (arclist 标签)
- DEDE 【arclist】增加按权重排序 dedecms v5.6列表页标签{dede:list增加按权重排序标签
- dede 页面突然出现部分字体自动加粗的问题
- dedecms v5.6 dede5.7列表页标签{dede:list}增加按权重排序标签
- DedeCMS让{dede:list}标签支持weight权重排序
- DedeCMS让{dede:list}标签支持weight权重排序
- 【转载】dedecms中的{dede:php}{/dede:php}的详细用法
- dede
- dede
- dede
- Dede栏目交叉的问题
- 适合新手的dede标签大全(转载)
- dede的list标签支持weight排序
- Python进阶之路—五
- 人脸检测工具face_recognition的安装与应用
- C++ 从指定位置开始,删除指定长度的字符串
- 困惑了我很久的一道题
- Java集合-02之 Collection架构
- dede彻底解决dede按权重降序排序的问题(部分转载)
- JAVA基础
- logback xml方式配置
- teamviewer-vpn远程办公
- HDU
- Paypal付款按钮变量列表
- TopK问题,在海量数据中寻找最大的K项
- 求微信红包中超过红包次数一遍的金额数C++
- 重载运算符