支持,但有非常严格的限制和特定的使用场景。

list 标签的 flag 参数主要用于排序,而不是像 arclist 标签那样用于筛选文章状态(如 h 推荐, c 幻灯片等),它的作用是根据文章的某个特定属性(通常是 flag 字段)进行排序。
flag 参数在 list 标签中的作用
在 list 标签的上下文中,flag 主要用于排序,它根据文章数据表 (dede_archives) 中的 flag 字段进行排序。
flag 字段是一个 char 类型,它用一个字符串来存储文章的多个状态标识。
h:代表“推荐” (Head)c:代表“幻灯片” (Carousel)a:代表“特荐” (Article)p:代表“图片” (Picture)
一个文章的 flag 字段值可能是 hc,表示它既是推荐又是幻灯片。

当你在 list 标签中使用 flag 时,DedeCMS 会按照这些标识符的特定顺序(通常是字母顺序)对文章进行排序。
如何在 list 标签中使用 flag
基本语法
{dede:list flag='排序标识' pagesize='10'}
<a href="[field:arcurl/]">[field:title/]</a>
<p>[field:description function='cn_substr(@me,100)'/]...</p>
<span>[field:pubdate function='MyDate("Y-m-d",@me)'/]</span>
<hr>
{/dede:list}
flag 参数的常用值及含义
flag 参数的值决定了排序的规则:
| 参数值 | 含义 | 说明 |
|---|---|---|
sort |
默认值,按文章ID倒序排列(最新的在前)。 | 如果不写 flag 参数,默认就是这个效果。 |
h |
按 flag 字段中包含 h 的文章排序。 |
即“按推荐文章排序”,包含 h 的文章会排在前面。 |
c |
按 flag 字段中包含 c 的文章排序。 |
即“按幻灯片文章排序”,包含 c 的文章会排在前面。 |
a |
按 flag 字段中包含 a 的文章排序。 |
即“按特荐文章排序”,包含 a 的文章会排在前面。 |
iscommend |
这是一个特殊的、更推荐的用法。 | 它会按 flag 字段中所有被标记为推荐的文章排序(即 flag 不为空的文章)。 |
hot |
注意:这个值在 list 标签中不直接生效。 |
hot 排序通常需要配合 orderby='hot' 使用,并且后台需要有相应的点击统计设置。 |
重要提示:
- 组合使用:你可以使用多个标识,
flag='hc',这会先按包含h的文章排,再按包含c的文章排,顺序很重要。 - 大小写敏感:DedeCMS 的标识通常是区分大小写的,请使用小写字母。
与 arclist 标签的 flag 对比
理解 list 和 arclist 中 flag 的区别至关重要。
| 特性 | dede:list (列表页) |
dede:arclist (文章调用) |
|---|---|---|
| 主要作用 | 排序 | 筛选 + 排序 |
flag='h' |
将所有 flag 包含 h 的文章提取出来,然后按默认排序(通常是ID倒序)。 |
只调用 flag 包含 h 的文章,并按默认排序。 |
flag='hc' |
排序逻辑,将 h 和 c 的文章排在前面。 |
只调用 flag 同时包含 h 和 c 的文章。 |
| 典型场景 | 在一个栏目列表页,优先展示推荐文章,首页的“最新推荐”栏目。 | 在首页、侧边栏等位置,独立调用“推荐文章”、“幻灯片文章”等。 |
| 底层原理 | 对当前栏目下的文章集进行二次排序。 | 从全站文章中根据条件进行筛选和排序。 |
实际应用场景示例
假设你有一个栏目“产品中心”,你希望在这个栏目的列表页,优先展示被标记为“推荐”的产品。
步骤 1: 在后台文章编辑
- 进入“产品中心”栏目。
- 编辑一篇你希望推荐的文章,在“自定义属性”中勾选“推荐”。
- 保存后,这篇文章的
flag字段值就会被更新为h。
步骤 2: 修改列表页模板
打开 /templets/default/list_product.htm (根据你的实际路径修改),找到 list 标签,并添加 flag='h'。
修改前:
{dede:list pagesize='12'}
<li>
<a href="[field:arcurl/]">
<img src="[field:litpic/]" alt="[field:title/]">
<h3>[field:title/]</h3>
</a>
</li>
{/dede:list}
修改后:
{dede:list flag='h' pagesize='12'}
<li>
<a href="[field:arcurl/]">
<img src="[field:litpic/]" alt="[field:title/]">
<h3>[field:title/]</h3>
<!-- 可以加一个推荐的小图标 -->
<span class="recommend-tag">推荐</span>
</a>
</li>
{/dede:list}
效果:
访问“产品中心”列表页时,所有被标记为“推荐”(flag 包含 h)的文章会排在列表的最前面,其余未推荐的文章会跟在后面。
常见问题与注意事项
-
为什么
flag='hot'没有效果?hot排序需要依赖click(点击量) 字段,正确的写法是使用orderby参数:{dede:list orderby='click' pagesize='10'} <!-- 调用点击量最高的文章 --> {/dede:list}你需要在后台“系统” -> “系统基本参数” -> “核心设置”中,开启“是否启用文档点击计数”选项。
-
flag和orderby能一起用吗? 可以。flag负责筛选出特定集合并进行初步排序,orderby在这个集内部进行最终的排序。{dede:list flag='h' orderby='click' pagesize='10'} <!-- 这个标签会:先找出所有推荐文章,然后在这些文章中按点击量从高到低排序 --> {/dede:list} -
性能考虑
list标签是在服务器端 PHP 代码中处理数据的,使用flag进行排序会增加数据库查询的复杂度,如果栏目下的文章非常多,可能会对页面加载速度产生轻微影响,但对于大多数网站来说,这种影响可以忽略不计。
- 支持:
dede:list标签支持flag参数。 - 用途:主要用于排序,将带有特定标识(如
h,c)的文章排在前面。 - 与
arclist的区别:arclist的flag侧重于“筛选”,而list的flag侧重于“排序”。 - 用法:直接在标签内使用
flag='h'、flag='c'等即可。 - 推荐:如果只是想优先展示所有推荐文章,使用
flag='iscommend'是一个更通用和清晰的选择。
