完全支持
DedeCMS 的 {dede:list} 标签是完全支持 flag 属性的。flag 是一个非常强大且常用的属性,用于对列表进行排序,实现如“推荐”、“头条”、“热门”等特殊内容的优先展示。

flag 属性详解
flag 属性通过附加在文章的“自定义属性”字段上(在后台发布文章时可以设置),来为文章打上特定的标记。{dede:list} 标签通过读取这些标记来决定文章的排序方式。
如何设置文章的 flag?
在 DedeCMS 后台发布或编辑文章时,找到“自定义属性”这一项:
- 推荐 (c): 对应
flag='c' - 头条 (h): 对应
flag='h' - 特荐 (p): 对应
flag='p' - 幻灯片 (f): 对应
flag='f' - 滚动 (s): 对应
flag='s' - 图文信息 (a): 对应
flag='a' - 跳转链接 (j): 对应
flag='j'
你可以为同一篇文章设置多个 flag,一篇文章可以同时是“头条”和“推荐”。
{dede:list} 中如何使用 flag?
flag 属性通常与 orderby 属性配合使用,指定按照哪个 flag 进行排序。

基本语法:
{dede:list flag='你的flag值' pagesize='10' orderby='flag'}
<li>
<a href="[field:arcurl/]">[field:title/]</a>
<span>[field:pubdate function="MyDate('Y-m-d',@me)"/]</span>
</li>
{/dede:list}
常见 flag 使用示例
下面是一些最常用的 flag 排序场景。
示例 1:获取所有“推荐”文章 (flag='c')
这是最常见的用法,用于在首页或其他页面展示推荐内容。
<!-- 获取10条推荐文章,并按推荐级别排序 -->
{dede:list flag='c' orderby='flag' pagesize='10'}
<li>
<a href="[field:arcurl/]" target="_blank">[field:title/]</a>
</li>
{/dede:list}
flag='c': 筛选出所有自定义属性中包含“推荐”标记的文章。orderby='flag': 告诉 DedeCMS 按照文章的flag值进行排序,系统内部会为不同的flag赋予不同的权重,p(特荐) >c(推荐) >h(头条) 等,这样特荐的文章会排在最前面。
示例 2:获取所有“头条”文章 (flag='h')
<!-- 获取5条头条文章 -->
{dede:list flag='h' pagesize='5'}
<li>
<strong><a href="[field:arcurl/]" target="_blank">[field:title/]</a></strong>
</li>
{/dede:list}
这里只设置了 flag='h',如果没有指定 orderby,默认会按文章发布时间(pubdate)降序排列。

示例 3:组合使用多个 flag
如果你想同时获取“推荐”和“头条”的文章,可以将 flag 值连在一起。
<!-- 获取同时是“推荐”或“头条”的文章 -->
{dede:list flag='ch' orderby='flag' pagesize='8'}
<li>
<a href="[field:arcurl/]" target="_blank">[field:title/]</a>
</li>
{/dede:list}
flag='ch': 表示文章的自定义属性中,只要包含c或者h中的任意一个就会被列出。
示例 4:排除特定 flag 的文章
有时候你可能想显示所有文章,但排除掉某些不希望展示的,跳转链接” (j)。
DedeCMS 的 flag 不直接支持排除语法,但可以通过 SQL 查询结合 arclist 标签来实现,对于简单的列表,{dede:list} 本身会正常显示所有符合条件的 flag 文章,如果需要排除,通常需要修改底层文件或使用更复杂的查询。
一个更简单的方法是,在后台设置“跳转链接”类型的文章为“不生成HTML”或“仅动态浏览”,这样它们就不会出现在静态列表中。
{dede:list} 与 {dede:arclist} 的 flag 对比
为了更好地理解,这里简单对比一下两个标签的 flag 用法:
| 特性 | {dede:list} |
{dede:arclist} |
|---|---|---|
| 用途 | 用于生成栏目列表页,通常放在 list_article.htm 模板文件中。 |
用于在任意页面(首页、封面页等)调用文章列表,非常灵活。 |
flag 语法 |
flag='c' |
flag='c' |
| 数据范围 | 仅限于当前栏目及其子栏目的文章。 | 可以跨栏目调用,通过 typeid 属性指定一个或多个栏目ID。 |
| 常用场景 | 制作栏目页的默认文章列表,并按特定属性排序。 | 制作首页推荐、热门文章、相关文章等。 |
{dede:arclist} 使用 flag 的示例:
<!-- 在首页调用推荐文章 -->
{dede:arclist flag='c' typeid='1,2,3' titlelen='30' row='5'}
<li><a href="[field:arcurl/]">[field:title/]</a></li>
{/dede:arclist}
总结与注意事项
- 完全支持:
{dede:list}标签 100% 支持flag属性。 - 设置来源:
flag的值来自于文章后台的“自定义属性”。 - 核心用途:主要用于对列表进行特殊排序,让带有特定标记(如推荐、头条)的文章排在前面。
- 组合使用:
flag值可以组合(如flag='ch'),表示“或”的关系。 - 与
orderby配合:要实现按flag权重排序,通常需要同时指定orderby='flag',如果不指定,则默认按pubdate排序。 - 适用范围:
{dede:list}的flag只对当前栏目有效,而{dede:arclist}更灵活,可以跨栏目使用。
希望这个详细的解释能帮助你完全掌握 DedeCMS list 标签中 flag 的用法!
