DEDECMS织梦自定义文章排序
在DEDECMS中,通过dede:arclist
标签的orderby
属性来指定排序方式,默认情况下,orderby
只能接受有限的字段如sortrank
、hot
、click
等,如果需要按照自定义字段进行排序,例如添加一个名为orderid
的字段,则需要进行一些额外的操作和修改。
数据库操作
需要在数据库中添加一个新的字段,使用MySQL管理工具或其他工具,修改dede_archives
表结构,添加一列orderid
字段:
ALTER TABLE dede_archives ADD orderid INT NOT NULL;
修改后台文件
需要对几个后台文件进行修改,以便新的字段能够被识别和使用。
1、dede/article_add.php
文件,找到第187191行,将代码修改为:
“`php
$query = "INSERT INTOdede_archives
(id,typeid,typeid2,sortrank,flag,ismake,channel,arcrank,click,money,title,shorttitle,color,writer,source,litpic,pubdate,senddate,mid,notpost,description,keywords,filename,dutyadmin,orderid) VALUES (‘$arcID’,’$typeid’,’$typeid2′,’$sortrank’,’$flag’,’$ismake’,’$channelid’,’$arcrank’,’$click’,’$money’,’$title’,’$shorttitle’,’$color’,’$writer’,’$source’,’$litpic’,’$pubdate’,’$senddate’,’$adminid’,’$notpost’,’$description’,’$keywords’,’$filename’,’$adminid’,’$orderid’);";
“`
2、dede/article_edit.php
文件,在191行的dutyadmin=’$adminid’
之后加逗号,并换行加入以下代码:
“`php
orderid=’$orderid’
“`
3、修改模板文件:打开dede/templets/article_add.htm
和dede/templets/article_edit.html
,分别在适当位置添加输入框以供用户输入orderid
的值。
“`html
<table width="800" border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="90" style="color:#F00">排序权重:</td>
<td colspan="3"><input type="text" name="orderid" value="0" style="width:100px;"/>(请填写数字,越大越靠前)</td>
</tr>
</table>
“`
4、dede/include/arc.listview.class.php
文件,找到600行,将代码修改为:
“`php
if(ereg(‘hot|click|lastpost|orderid’, $orderby)) {
$ordersql = ($orderWay == "desc") ? "ORDER BY {$orderby} DESC" : "ORDER BY {$orderby} ASC";
} elseif (ereg(‘sortrank|pubdate|near|scores|id|rand’, $orderby)) {
$ordersql = ($orderWay == "desc") ? "ORDER BY {$orderby} DESC" : "ORDER BY {$orderby} ASC";
}
“`
5、增加排序选项:在134行之后增加以下代码:
“`php
$sortweight = "<table width="800" border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="90" style="color:#F00">排序权重:</td>
<td colspan="3"><input type="text" name="orderid" value="{$arcRow[‘orderid’]}" style="width:100px;"/>(请填写数字,越大越靠前)</td>
</tr>
</table>";
“`
前台文件操作
需要修改前台文件以实现自定义字段的调用。
1、include/arc.listview.class.php
文件,到558行,增加一行代码:
“`php
else if($orderby == ‘orderid’) {
$ordersql = "ORDER BY arc.orderid $orderWay"; //orderid为dede_archives表里面自己添加的字段
}
“`
2、include/taglib/arclist.lib.php
文件,到233行,增加一行代码:
“`php
else if($orderby == ‘orderid’) $ordersql = "ORDER BY arc.orderid $orderWay, arc.id $orderWay";
“`
HTML模板调用
在HTML模板文件中,可以通过以下方式调用自定义排序字段:
{dede:arclist typeid='2' row='11' titlelen='42' orderby='orderid' orderway='desc'} ……… {/dede:arclist}
FAQs
Q1: 如何按照自定义字段进行降序排序?
A1: 在调用dede:arclist
标签时,可以设置orderway='desc'
来实现降序排序。
{dede:arclist typeid='2' row='11' titlelen='42' orderby='orderid' orderway='desc'}
Q2: 如何在编辑文章时设置自定义排序字段的值?
A2: 在编辑文章的页面上,会有一个新增的输入框用于填写orderid
字段的值,只需在该输入框中填写相应的数字即可,数字越大,文章在列表中的排序越靠前。
DEDECMS织梦自定义文章排序教程
DEDECMS(织梦)是一款功能强大的内容管理系统,广泛用于搭建各类网站,默认情况下,织梦的文章排序可能不符合您的需求,本文将详细介绍如何在织梦中自定义文章排序。
前提条件
已经安装并配置好DEDECMS。
了解基本的HTML和CSS知识。
步骤一:修改数据库
1、登录织梦后台管理。
2、进入“系统”菜单,选择“数据库”。
3、找到包含文章信息的数据库表(通常是dede_arc
表)。
4、在“操作”列中,选择“结构”。
5、在弹出的表结构编辑页面,找到“sortid”字段。
6、将“sortid”字段的类型改为“文本”,并设置合适的长度。
7、点击“保存结构”按钮。
步骤二:修改文章模板
1、登录织梦后台管理。
2、进入“首页”菜单,选择“内容模板”。
3、找到您的文章列表模板文件,通常是list_article.html
。
4、在模板文件中,找到文章排序的相关代码。
5、默认情况下,文章列表可能是按照id
排序的,您需要修改为按照sortid
排序。
6、修改代码如下:
<?php // 获取当前页码 $page = empty($page) ? 1 : $page; // 获取每页显示的文章数量 $pagesize = 10; // 计算起始文章ID $startid = ($page 1) * $pagesize; // 获取文章列表 $dsql>SetQuery("SELECT id FROM dede_arc WHERE arcrank>0 ORDER BY sortid ASC"); $dsql>Execute(); $ids = $dsql>GetArray(); $ids = implode(',', $ids); // 分页处理 $dsql>SetQuery("SELECT * FROM dede_arc WHERE arcrank>0 AND id IN ($ids) ORDER BY sortid ASC LIMIT $startid, $pagesize"); $dsql>Execute(); ?>
7、保存模板文件。
步骤三:更新文章排序字段
1、登录织梦后台管理。
2、进入“内容”菜单,选择“文章管理”。
3、找到需要修改排序的文章。
4、在文章编辑页面,找到“自定义属性”选项卡。
5、在“自定义属性”中,添加一个新的字段,名称为sortid
,类型为“文本”。
6、设置每个文章的sortid
值,以便按照您的需求排序。
7、保存文章。
步骤四:测试
1、在网站前端预览文章列表。
2、检查文章是否按照您设置的sortid
值排序。
通过以上步骤,您可以在织梦中自定义文章排序,请根据实际情况调整代码和参数,以满足您的需求。
最新评论
本站CDN与莫名CDN同款、亚太CDN、速度还不错,值得推荐。
感谢推荐我们公司产品、有什么活动会第一时间公布!
我在用这类站群服务器、还可以. 用很多年了。