dede 按价格 等条件 升序

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

使用自定义字段 + SQL 查询(最常用、最灵活)

这是最核心也是最灵活的方法,它不依赖特定模型,适用于所有可以添加自定义字段的栏目。

dede 按价格 等条件 升序
(图片来源网络,侵删)

第 1 步:为栏目添加“价格”自定义字段

  1. 登录 DedeCMS 后台。
  2. 进入【核心】 -> 【内容模型管理】。
  3. 找到你的列表所对应的模型(“文章模型”或你自定义的“产品模型”),点击【字段管理】。
  4. 在字段管理页面,点击【添加新字段】。
  5. 填写字段信息:
    • 字段名称: price (建议用英文,方便调用)
    • 字段标识: 价格 (后台显示的名称)
    • 字段类型: 选择 数字 (如果价格是小数,选择 小数 更好)
    • 字段长度: 10
    • 小数位数: 2 (如果选择了小数类型)
    • 其他选项:根据需要设置,比如是否允许为空等。
  6. 保存字段。

第 2 步:在内容发布页填写价格

  1. 】 -> 【添加内容】或【内容管理】 -> 【编辑内容】。
  2. 在编辑页面,你会看到刚刚添加的“价格”字段,在相应的文章/产品中填写价格数字。
  3. 发布或更新内容。

第 3 步:修改列表页模板文件 (list_artlist.htm)

这是最关键的一步,你需要修改列表页的模板文件,让它根据价格进行排序。

  1. 找到你的列表页模板文件,通常位于 /templets/你的栏目目录/ 下,文件名一般是 list_栏目ID.htm 或者 list_artlist.htm

  2. 用代码编辑器打开这个文件。

  3. 找到调用列表数据的标签 {dede:list}

    dede 按价格 等条件 升序
    (图片来源网络,侵删)
  4. 默认的 {dede:list} 是按发布时间 sortrank 降序排列的:

    {dede:list pagesize='20'}
        <!-- 循环体内的内容 -->
        <li>
            <a href="[field:arcurl/]">[field:title/]</a>
            <p>价格:[field:price/]</p>
        </li>
    {/dede:list}
  5. 修改为按价格升序排列,你需要将 {dede:list} 替换为 {dede:arclist},因为它支持更强大的排序功能。

    {dede:arclist pagesize='20' orderby='price' orderway='asc'}
        <!-- 循环体内的内容 -->
        <li>
            <a href="[field:arcurl/]">[field:title/]</a>
            <p>价格:[field:price/]</p>
        </li>
    {/dede:arclist}

标签参数解释:

  • pagesize='20': 每页显示 20 条数据。
  • orderby='price': 这是核心,告诉 DedeCMS 按照 price 这个字段进行排序。
  • orderway='asc': 这是排序方式asc 代表 升序 (从小到大),如果需要 降序 (从大到小),则改为 orderway='desc'

重要提示:在列表页模板中,请务必使用 {dede:arclist} 来调用数据,而不是 {dede:list},因为 orderbyorderwayarclist 标签的专属属性。

dede 按价格 等条件 升序
(图片来源网络,侵删)

通过后台列表页的“排序”功能(临时、手动)

如果你只是想在后台管理列表时,能手动按价格排序来查看,可以使用这个方法,但它不会影响前台页面的显示顺序

  1. 】 -> 管理】
  2. 在文章列表页面,点击列表上方的 “排序” 按钮。
  3. 在弹出的排序选项中,选择 “按价格”
  4. 然后选择 “升序”“降序”
  5. 点击“确定”。

这个排序只是对当前后台列表视图的临时排序,刷新页面或重新进入后会恢复默认排序,它主要用于内容编辑时的快速查找。


修改PHP源文件(不推荐,有风险)

这个方法可以改变默认的排序方式,但会影响到所有使用 {dede:list} 的列表页,且升级 DedeCMS 时可能会被覆盖,强烈不推荐普通用户使用

  1. 找到文件 /include/arc.listview.class.php
  2. 在这个文件中搜索 sortrank,你会找到类似这样的代码:
    if(empty($orderby)) {
        $orderby = 'sortrank';
        $orderway = 'DESC';
    }
  3. sortrank 修改为你的价格字段 price,将 DESC 修改为 ASC
    if(empty($orderby)) {
        $orderby = 'price'; // 修改为 price
        $orderway = 'ASC';  // 修改为 ASC
    }
  4. 保存文件。

警告:这样做之后,所有没有指定 orderby 的列表页都会默认按价格升序排列,如果你只想让特定栏目生效,这个方法就不适用了。


总结与最佳实践

方法 优点 缺点 适用场景
修改模板 灵活、精准、不影响其他页面、推荐 需要修改模板文件,对新手略有门槛 绝大多数情况下的首选方法
后台排序 简单、无需修改文件 仅限后台临时查看,不影响前台 仅用于后台内容管理时临时排序。
修改源码 一劳永逸(修改后) 风险高、影响全局、升级后失效 不推荐,除非你非常清楚自己在做什么。

推荐流程:

  1. 为你的栏目添加 price 自定义字段。
  2. 时填写价格。
  3. 找到你的列表页模板文件 (list_xxx.htm)。
  4. {dede:list} 标签替换为 {dede:arclist orderby='price' orderway='asc'}

这样就能完美实现按价格升序排列列表了。

-- 展开阅读全文 --
头像
c语言setfillstyle
« 上一篇 01-04
dede 首页调用多个栏目文章
下一篇 » 01-04

相关文章

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