dede arclist如何按权重排序?

99ANYc3cd6
预计阅读时长 14 分钟
位置: 首页 DEDE建站 正文

arclist 是 DedeCMS 中最核心、最常用的列表调用标签,它非常灵活,可以通过多种参数来控制输出内容。权重(weight) 是一个非常实用的排序方式,特别适合用于实现首页焦点图、推荐位、热门产品等需要手动控制内容顺序的场景。

dede arclist 权重排序
(图片来源网络,侵删)

核心语法:orderby='weight'

要实现按权重排序,你只需要在 arclist 标签中设置 orderby 参数为 weight 即可。

基本语法格式:

{dede:arclist orderby='weight' orderway='asc'}
    <li>
        <a href='[field:arcurl/]'>[field:title/]</a>
    </li>
{/dede:arclist}

参数解释:

  • orderby='weight': 指定排序依据为文章的“权重”字段。
  • orderway='asc': 指定排序方式为 升序 (从小到大),权重值越小的文章,排列越靠前。
  • orderway='desc': 指定排序方式为 降序 (从大到小),权重值越大的文章,排列越靠前。

详细用法与示例

示例1:首页焦点图(升序排序,权重小的在前)

这是最常见的用法,我们通常将焦点图的文章权重设置为 1, 2, 3, 4...,这样就能保证它们按照我们指定的顺序显示。

dede arclist 权重排序
(图片来源网络,侵删)

步骤:

  1. 后台设置权重

    • 登录 DedeCMS 后台,进入“[核心]-[内容模型管理]”,选择你的文章模型(文章”)。
    • 点击“字段管理”,确保有一个名为“权重”的字段,设置为前台排序”是“是”。
    • 进入“[所有文档]-[文档列表]”,编辑你想要作为焦点图的文章,在“自定义属性”或“权重”字段(根据你的模板和字段设置位置可能不同)中,填入一个数字,1, 2, 3 等。注意:权重必须是数字
  2. 前台模板调用: 在你的首页模板文件(通常是 index.htm)中,写入以下代码:

<!-- 焦点图列表,按权重升序排列 -->
<div class="focus-slider">
    {dede:arclist typeid='首页栏目ID' row='5' orderby='weight' orderway='asc'}
        <a href="[field:arcurl/]" title="[field:title/]">
            <img src="[field:litpic/]" alt="[field:title/]">
            <h3>[field:title/]</h3>
        </a>
    {/dede:arclist}
</div>
  • typeid='首页栏目ID': 只调用指定栏目下的文章。
  • row='5': 只调用5篇文章。
  • orderby='weight' orderway='asc': 按权重从小到大排序,完美实现焦点图顺序。

示例2:热门产品推荐(降序排序,权重大的在前)

有时候我们希望权重值代表“重要程度”或“热度”,权重越高的越靠前。

dede arclist 权重排序
(图片来源网络,侵删)

后台设置权重: 和上面一样,将热门产品的权重设置为 10, 20, 30 等较大的数字。

前台模板调用

<!-- 热门产品列表,按权重降序排列 -->
<div class="hot-products">
    <h2>热门推荐</h2>
    <ul>
        {dede:arclist channelid='1' row='4' orderby='weight' orderway='desc'}
            <li>
                <a href="[field:arcurl/]">
                    <img src="[field:litpic/]" alt="[field:title/]">
                    <p>[field:title/]</p>
                </a>
            </li>
        {/dede:arclist}
    </ul>
</div>
  • channelid='1': 指定调用内容模型ID为1(通常是“文章”,请根据你的实际情况修改)的内容。
  • orderby='weight' orderway='desc': 按权重从大到小排序,权重为30的会排在权重为20的前面。

orderby 参数的其他常用值

orderby 参数非常强大,除了 weight,还支持很多其他的排序方式:

参数值 说明 示例
id 按文章ID排序 orderby='id'
sortrank 默认值,按文章发布时间(排序级别)排序 orderby='sortrank'
click 按文章点击量排序 orderby='click'
postnum 按文章评论数排序 orderby='postnum'
rand 随机排序,每次刷新页面,文章顺序都会打乱 orderby='rand'
weight 按权重排序,本文重点 orderby='weight'
pubdate 按文章发布时间排序 orderby='pubdate'
lastpost 按文章最后评论时间排序 orderby='lastpost'

组合使用orderby 还可以组合使用,用逗号隔开,前面的优先级更高。

先按权重排序,权重相同的再按发布时间倒序:

{dede:arclist orderby='weight, pubdate' orderway='asc, desc'}
    ...
{/dede:arclist}

这个标签的含义是:首先按 weight 升序排列,如果有多篇文章的 weight 值相同,那么这些文章将再按 pubdate 降序排列。


重要注意事项

  1. 权重必须是纯数字: 在后台编辑文章时,务必确保“权重”字段里填写的是数字(如 10, 100),而不是其他字符,如果填写了非数字字符,排序可能会失效或出现意外结果。

  2. weight 字段必须存在且可用: 确保你的内容模型中已经启用了“权重”字段,并且该字段被设置为“前台排序可用”,通常默认是可用的。

  3. orderway 的配合orderby='weight' 只是告诉系统“按什么排”,orderway='asc'desc' 才是告诉系统“怎么排”,这两个参数通常需要配合使用才能达到预期效果。

  4. orderby='sortrank' 的区别

    • orderby='sortrank':按文章的“发布时间”排序,这是系统默认的排序方式,适合新闻列表等时效性内容。
    • orderby='weight':按你手动设定的数字排序,适合需要固定顺序的推荐、焦点图等内容。

要使用 arclist 进行权重排序,记住核心公式:

{dede:arclist orderby='weight' orderway='asc' ...}
    ...
{/dede:arclist}
  • orderby='weight':告诉系统使用权重排序。
  • orderway='asc':让权重小的排在前面(推荐用于焦点图)。
  • orderway='desc':让权重大的排在前面(推荐用于热门推荐)。

通过灵活运用这个方法,你可以轻松实现各种需要手动控制内容顺序的前台效果。

-- 展开阅读全文 --
头像
C语言redecoration是什么?如何实现?
« 上一篇 今天
织梦ueditor为何无法保存页面?
下一篇 » 今天

相关文章

取消
微信二维码
支付宝二维码

目录[+]