在列表页(list_article.htm)按 ID 排序
这是最常见的需求,比如首页、栏目页、文章列表页等。
方法 1:直接修改列表页模板文件(推荐,最直接)
这是最简单直接的方法,无需修改任何程序文件。
- 打开你的列表页模板文件,通常位于
/templets/你的模板文件夹/目录下,文件名如list_article.htm。 - 找到
{dede:list}。 - 在标签内添加
orderby='id'属性。
修改前:
{dede:list pagesize='10'}
<li>
<a href="[field:arcurl/]">[field:title/]</a>
<span>[field:pubdate function="MyDate('Y-m-d', @me)"/]</span>
</li>
{/dede:list}
修改后(按 ID 从小到大排序,即正序):
{dede:list pagesize='10' orderby='id'}
<li>
<a href="[field:arcurl/]">[field:title/]</a>
<span>[field:pubdate function="MyDate('Y-m-d', @me)"/]</span>
</li>
{/dede:list}
按 ID 从大到小排序(倒序):
{dede:list pagesize='10' orderby='id' orderway='desc'}
<li>
<a href="[field:arcurl/]">[field:title/]</a>
<span>[field:pubdate function="MyDate('Y-m-d', @me)"/]</span>
</li>
{/dede:list}
参数解释:
orderby='id':指定按id字段进行排序。orderway='desc':指定排序方式为降序(从大到小),如果不写,默认是asc(升序,从小到大)。pagesize='10':每页显示的文章数量,与排序无关,但通常会一起使用。
方法 2:通过自定义列表(后台设置)
如果你不想修改模板文件,或者这个排序是临时的、特定的需求,可以在后台创建一个自定义列表。
- 登录 DedeCMS 后台。
- 进入 [核心] -> [自定义列表]。
- 点击 “增加自定义列表”。
- 填写列表信息:
- 列表名称:给你的列表起个名字,如“按ID排序的文章”。
- 列表目录:生成列表文件的目录和名称,如
list-id-order.html。 - 列表模板:选择一个列表模板,如
list_article.htm。 - 按ID排序:在下面的“附加SQL条件”中输入
orderby=id。
- 点击 “确定” 保存。
- 保存后,系统会提示你更新列表缓存,进入 [生成] -> [更新HTML],选择你刚刚创建的列表文件进行更新。
这样,访问 你的域名/list-id-order.html 就能看到按 ID 排序的文章列表了。
在首页(index.htm)调用按 ID 排序的内容
首页通常使用 {dede:arclist} 标签来调用文章。
方法:在 {dede:arclist} 标签中添加 orderby='id' 属性。
示例代码:
{dede:arclist titlelen='30' row='8' orderby='id' orderway='desc'}
<li>
<a href="[field:arcurl/]" title="[field:title/]">[field:title/]</a>
</li>
{/dede:arclist}
参数解释:
orderby='id':指定按 ID 排序。orderway='desc':按 ID 降序排列(最新的在前面),len='30'`:标题长度。row='8':调用条数。
页(article_article.htm)调用相关文章/最新文章
页,调用相关文章或最新文章时,也可以按 ID 排序。
调用相关文章(通常按ID倒序,即最新发布的)
相关文章标签是 {dede:likearticle},它默认就倾向于调用 ID 靠近的文章,也就是新发布的文章,如果你想明确指定,可以加上参数。
{dede:likearticle row='10' orderby='id'}
<a href="[field:arcurl/]">[field:title/]</a>
{/dede:likearticle}
调用最新文章(明确按ID倒序)
使用 {dede:arclist} 标签,并指定当前栏目ID。
{dede:arclist typeid='当前栏目ID' row='10' orderby='id' orderway='desc'}
<a href="[field:arcurl/]" title="[field:title/]">[field:title/]</a>
{/dede:arclist}
typeid='当前栏目ID':这里的当前栏目ID可以用{dede:field.id/}来代替,实现动态调用。
按自定义字段排序(进阶)
有时候你可能想按一个自定义的数字字段(比如点击量 click、权重 weight 等)排序,方法和按 ID 排序完全一样,只需要把 id 换成你的字段名即可。
示例:按点击量(click)从高到低排序
{dede:list pagesize='10' orderby='click' orderway='desc'}
...
{/dede:list}
示例:按自定义字段 sortrank 排序
{dede:list pagesize='10' orderby='sortrank'}
...
{/dede:list}
总结与注意事项
| 场景 | 关键代码 | 说明 | |
|---|---|---|---|
| 列表页 | {dede:list} |
orderby='id' |
最常用,直接修改模板即可。 |
| 首页/其他页 | {dede:arclist} |
orderby='id' orderway='desc' |
调用指定栏目或全站的文章。 |
| 后台自定义列表 | 后台设置 | 附加SQL条件:orderby=id |
不修改模板,灵活创建特殊列表。 |
重要提示:
- 缓存问题:修改模板或自定义列表后,如果页面没有立即更新,请到后台 [生成] -> [更新HTML] 或 [一键更新] 中更新对应页面。
- 性能:对于数据量非常大的网站,复杂的排序可能会对数据库造成一定压力,影响页面加载速度,按 ID 排序(尤其是索引字段)通常性能很好。
- 排序方式:记得
orderway='asc'(升序) 和orderway='desc'(降序) 的区别,根据你的需求选择,如果不写,默认是asc。
