织梦arclist如何按权重排序
什么是权重排序
织梦文章表 dede_archives 中有一个 weight 字段,用于人工指定文章的展示顺序。weight 值越小越靠前(默认值 0),通过设置不同的 weight 值,可以让某些文章在列表中优先展示,比单纯的「按时间排序」更灵活。
效果演示
基础调用方法
在 {dede:arclist} 中加 orderby='weight':
{dede:arclist typeid='1' row='10' orderby='weight' orderway='asc'}
<li><a href="[field:arcurl/]">[field:title/]</a></li>
{/dede:arclist}
参数说明:
orderby='weight':按 weight 字段排序。orderway='asc':升序(小的在前);desc降序。
权重 + 时间组合排序
如果想让权重相等的文章按发布时间倒序,可用 orderby='weight pubdate'(多字段排序):
{dede:arclist typeid='1' row='10'
orderby='weight pubdate'
orderway='asc'
isweight='y'}
<li>
<span class="weight">[field:weight/]</span>
<a href="[field:arcurl/]">[field:title/]</a>
</li>
{/dede:arclist}
isweight='y' 表示开启权重字段,新版本可省略。
修改文章权重
在后台修改文章权重有两种途径:
方式一:文章编辑页
- 后台 → 核心 → 所有文档列表 → 编辑某篇文章。
- 「高级参数」标签 → 找到「权重」输入框。
- 填入数字(1-1000),数字越小越靠前。
方式二:批量修改
在文档列表页直接修改 weight 列(需要织梦 5.7 SP3+):点击 weight 数字即可编辑。
方式三:SQL 批量更新
-- 把 ID 为 100 的文章设为置顶
UPDATE `dede_archives` SET weight=1 WHERE id=100;
-- 把某栏目所有文章 weight 重置为 id
UPDATE `dede_archives` SET weight=id WHERE typeid=5;
置顶功能的实现
用 weight 实现置顶非常简单,把要置顶的文章 weight 设为 1-10,普通文章 weight 设为 100+:
{dede:arclist typeid='1' row='10' orderby='weight pubdate' orderway='asc'}
[field:array runphp='yes']
if(@me['weight'] <=10){
@me="<li class='sticky'>
<span class='pin'>置顶</span>
<a href='{@me['arcurl']}'>{@me['title']}</a>
</li>";
}else{
@me="<li><a href='{@me['arcurl']}'>{@me['title']}</a></li>";
}
[/field:array]
{/dede:arclist}
ALTER TABLE dede_archives ADD INDEX idx_weight (weight);。
权重和 flag 配合使用
实际项目中,权重排序常与 flag='h'(头条)配合:
<!-- 头条区:weight 最小的1条 -->
{dede:arclist flag='h' row='1' orderby='weight' orderway='asc'}
...
{/dede:arclist}
<!-- 列表区:其余文章 -->
{dede:arclist flag='c' row='10' orderby='weight pubdate' orderway='asc'}
...
{/dede:arclist}
常见问题
weight 排序不生效
1) 检查 orderby='weight' 拼写;2) 检查 orderway='asc'(默认 desc 看不出效果);3) 文章 weight 是否真的设置了不同值。
权重相同时顺序乱
用 orderby='weight pubdate' 多字段排序,确保 weight 相同时按时间倒序。
权重字段不显示
模板中调用 [field:weight/],如果用 arclist 没输出,加 isweight='y' 参数。
管理权重的最佳实践
- 权重分级:1-10 头条,11-50 推荐,51-100 普通,100+ 默认。
- 权重不连续:留出间隔,方便日后插入新文章。
- 定期整理:每季度检查一次权重分布,避免某些文章「永久置顶」。
- 记录变更:在团队文档中记录重要文章的权重调整原因。
行动建议
立刻打开你的文章列表,把首页推荐位的几篇文章 weight 设为 1-10,其他保持默认。然后到首页加 orderby='weight pubdate' orderway='asc' 试试效果。运营时建议在内容规划表中预先标好每篇重点文章的权重值,发布时直接填入,避免事后调整影响排序节奏。把权重管理当成「编辑排期表」用,文章的展示顺序就能精准掌控。