dede list flag如何实现排序?

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

flaglist 标签中一个非常强大且常用的属性,它主要用于对文章进行特殊条件的筛选和排序,而不仅仅是按发布时间倒序。

dede list flag 排序
(图片来源网络,侵删)

flag 属性的基本语法

flag 属性通常放在 {dede:list} 标签的开始位置,用空格隔开。

{dede:list flag='排序值' pagesize='20'}
    <a href="[field:arcurl/]">[field:title/]</a>
    <span>[field:pubdate function="MyDate('Y-m-d',@me)"/]</span>
{/dede:list}

flag 常用排序值及说明

flag 的值可以是单个或多个(用英文逗号 组合),多个值表示“或”的关系,即满足其中任何一个条件都会被列出。

排序值 英文全称 说明 常见用途
c commend 推荐 筛选或按推荐级别排序,这是最常用的值之一。
h headline 头条 筛选或按头条级别排序。
p pic 图片 筛选或按图片数量排序(通常指有缩略图的文章)。
a top 置顶 筛选或按置顶级别排序。
s sort 特荐 筛选或按特荐级别排序。
j jump 跳转 筛选或按跳转(外链)文章排序。
b bold 加粗 筛选或按加粗级别排序。

flag 的主要使用场景

场景1:筛选(只显示带有特定标志的文章)

这是 flag 最核心的功能,用于创建特定类型的文章列表。

示例1:显示所有“推荐”文章

dede list flag 排序
(图片来源网络,侵删)
{dede:list flag='c' pagesize='10'}
    <li>
        <a href="[field:arcurl/]">[field:title/]</a>
    </li>
{/dede:list}

这个列表只会显示后台设置了“推荐”属性的文章。

示例2:显示所有“头条”且带有“图片”的文章

{dede:list flag='h,p' pagesize='10'}
    <li>
        <a href="[field:arcurl/]">
            <img src="[field:litpic/]" alt="[field:title/]">
            [field:title/]
        </a>
    </li>
{/dede:list}

这个列表只会同时满足“头条”和“有缩略图”两个条件的文章。

场景2:排序(按标志的权重排序)

flag 的另一个强大功能是作为排序依据,DedeCMS 内部为不同的 flag 赋予了默认的权重值,权重越高,排序越靠前。

dede list flag 排序
(图片来源网络,侵删)

默认权重值(从高到低):

  • j (跳转) - 权重最高
  • h (头条)
  • p (图片)
  • s (特荐)
  • c (推荐)
  • a (置顶)
  • b (加粗)
  • 默认(无 flag)- 权重最低

示例3:按文章的“推荐/头条”级别排序

{dede:list flag='h,c' orderby='flag' pagesize='10'}
    <li>
        <a href="[field:arcurl/]">[field:title/]</a>
        <!-- 可以通过其他方式显示标志,-->
        [field:flag runphp='yes']
            $flags = @me;
            $str = '';
            if (strpos($flags, 'h') !== false) $str .= '<span class="tag-headline">头条</span>';
            if (strpos($flags, 'c') !== false) $str .= '<span class="tag-commend">推荐</span>';
            @me = $str;
        [/field:flag]
    </li>
{/dede:list}
  • orderby='flag':这是关键,它告诉 DedeCMS 按照 flag 的权重进行排序。
  • 结果:列表会优先显示“头条”文章,其次是“推荐”文章,最后是其他没有这些标志的文章。

flag 与其他排序属性的结合使用

flag 可以和 list 标签的其他排序属性(如 orderby, orderway)结合使用,实现更复杂的排序逻辑。

  • orderby: 排序字段(如 pubdate 发布时间, hot 点击量, sortrank 权重/置顶等)
  • orderway: 排序方式(desc 降序,asc 升序)

示例4:先按“推荐”标志筛选,再按“点击量”从高到低排序

{dede:list flag='c' orderby='click' orderway='desc' pagesize='10'}
    <li>
        <a href="[field:arcurl/]">[field:title/]</a>
        <span>点击:[field:click/]</span>
    </li>
{/dede:list}

这个列表只会显示“推荐”文章,并且这些文章会按照点击量从高到低排列。

示例5:先按“置顶”标志筛选,再按“发布时间”从新到旧排序

{dede:list flag='a' orderby='pubdate' orderway='desc' pagesize='10'}
    <li>
        <a href="[field:arcurl/]">[field:title/]</a>
    </li>
{/dede:list}

这个列表会显示所有置顶文章,并且最新的置顶文章排在最前面。


重要注意事项

  1. 后台设置是前提:无论 flag 用于筛选还是排序,文章都必须在后台发布/编辑文章时,手动勾选了相应的属性(如“推荐”、“头条”等),否则 flag 无法生效。

  2. 权重机制:理解 flag 的默认权重对于排序功能至关重要,当你使用 orderby='flag' 时,系统就是按照这个默认权重值来排列的。

  3. 组合使用:多个 flag 值之间是“或”的关系,flag='h,c' 表示“头条 或者 推荐”,而 orderbyorderway 是对筛选结果进行二次排序。

你的需求 应用的 flagorderby 属性
只看推荐文章 {dede:list flag='c'}
只看头条和图片文章 {dede:list flag='h,p'}
按推荐/头条级别排序 {dede:list flag='h,c' orderby='flag'}
推荐文章按点击量排序 {dede:list flag='c' orderby='click' orderway='desc'}
置顶文章按发布时间排序 {dede:list flag='a' orderby='pubdate' orderway='desc'}

通过灵活运用 flag 属性,你可以创建出非常丰富和实用的文章列表页面,而无需修改任何 PHP 代码,完全通过模板标签实现。

-- 展开阅读全文 --
头像
HTML5高端网站建设织梦模板如何提升网站品质?
« 上一篇 2025-12-18
C语言加法为何结果异常为858993459?
下一篇 » 2025-12-18

相关文章

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

目录[+]