下面我将从最常用、最简单到更灵活、更复杂的顺序,为你详细介绍几种主流的调用方法。

(图片来源网络,侵删)
使用官方推荐的 {dede:arclist} 标签(最常用、最灵活)
这是 DedeCMS 最强大、最灵活的列表标签,不仅可以用来调用文章,也可以巧妙地用来显示栏目的“内容”,这里的“内容”通常指的是栏目描述。
场景1:调用指定栏目的“栏目描述”
这是最常见的需求,比如在首页某个版块显示某个栏目的简介。
标签代码:
{dede:channel type='top' typeid='1'}
<h2><a href="[field:typelink/]">[field:typename/]</a></h2>
<p>[field:description function='cn_substr(@me, 200)'/]</p>
{/dede:channel}
代码解析:

(图片来源网络,侵删)
{dede:channel type='top' typeid='1'}:channel: 这是调用栏目的标签。type='top': 表示调用顶级栏目,如果你要调用的是顶级栏目下的子栏目,可以去掉这个属性或改成type='son'。typeid='1': 这是关键,指定你要调用的栏目的 ID,你需要去后台“栏目管理”中找到目标栏目的 ID,如果不写typeid,则会调用所有符合条件的栏目。
[field:typelink/]: 调用栏目的链接地址。[field:typename/]: 调用栏目的名称。[field:description function='cn_substr(@me, 200)'/]:[field:description/]: 调用栏目的“栏目描述”内容。function='cn_substr(@me, 200)': 这是一个函数,表示截取描述内容的前 200 个字符,防止描述过长影响页面布局。@me代表当前字段的原始值。
示例: 在首页调用 ID 为 1 的“公司新闻”栏目的描述。
<div class="news-intro">
<h3>公司新闻</h3>
<p>
{dede:channel typeid='1'}
[field:description function='cn_substr(@me, 150)'/]
{/dede:channel}
</p>
</div>
场景2:调用指定栏目的最新文章列表
如果你想在首页某个位置显示某个栏目下的最新几篇文章,arclist 标签是最佳选择。
标签代码:
{dede:arclist typeid='1' titlelen='30' row='5' orderby='pubdate'}
<li>
<span class='date'>[field:pubdate function='MyDate('m-d', @me)'/]</span>
<a href="[field:arcurl/]">[field:title/]</a>
</li>
{/dede:arclist}
代码解析:

(图片来源网络,侵删)
{dede:arclist ...}: 调用文章列表的标签。typeid='1': 指定栏目 ID,只调用该栏目下的文章,len='30'`: 标题长度,截取标题前 30 个字符。row='5': 调用文章的数量,显示 5 条。orderby='pubdate': 按发布时间降序排列(最新的在前)。[field:pubdate function='MyDate('m-d', @me)'/]: 调用发布日期,并使用自定义函数MyDate格式化为 "月-日" 的格式。[field:arcurl/]: 调用文章的链接地址。[field:title/]: 调用文章的标题。
使用自由列表 {dede:freelist}(适合固定栏目和文章数)
如果你的首页某个版块的栏目和文章数量是固定的,不常变动,使用自由列表会更高效,因为它是在后台生成静态的,访问首页时直接调用,不消耗数据库查询资源。
操作步骤:
-
进入后台:登录 DedeCMS 后台。
-
找到自由列表:在左侧菜单栏找到
核心->自由列表。 -
创建自由列表:
- 列表名称:给这个列表起一个名字,方便识别,如“首页产品展示”。
- 列表模板:选择一个列表模板,或者使用默认的。
- 按频道调用:选择你想要调用的内容模型,文章模型”。
- 栏目选择:勾选你希望在首页显示的栏目(可以多选)。
- 排序方式:选择排序规则,如“发布时间降序”。
- 记录数:设置每个栏目显示多少篇文章,或者总共显示多少篇。
- 其他高级选项可以根据需要设置。
-
生成:点击“提交”或“生成”,系统会根据你的设置生成一个静态的列表文件。
-
在首页调用: 在首页模板的相应位置,使用以下标签调用:
{dede:freelist listid='你的自由列表ID'} <li> <a href="[field:arcurl/]">[field:title/]</a> </li> {/dede:freelist}listid='你的自由列表ID':这里的 ID 是你在创建自由列表时,系统自动分配的 ID。
使用SQL语句查询(最灵活,适合高级用户)
当 arclist 和 freelist 无法满足复杂的查询需求时,可以直接使用原生 SQL 语句,这需要你具备一定的 SQL 基础。
场景: 调用 ID 为 1 的栏目下的所有文章,并按点击量排序。
标签代码:
{dede:sql sql="SELECT id, title, arcurl FROM `dede_archives` WHERE typeid='1' ORDER BY click DESC"}
<li><a href="[field:arcurl/]">[field:title/]</a></li>
{/dede:sql}
代码解析:
{dede:sql sql="..."}: DedeCMS 提供的执行 SQL 查询的标签。SELECT id, title, arcurl FROMdede_archives`从文章主表dede_archives` 中查询文章 ID、标题和链接。WHERE typeid='1': 条件,只查询栏目 ID 为 1 的文章。ORDER BY click DESC: 按click字段(点击量)降序排列。[field:arcurl/]和[field:title/]: 和arclist标签中一样,用于输出查询结果。
⚠️ 安全警告:
直接使用 SQL 存在 SQL 注入的风险,请确保你的 typeid 等变量是固定的或者经过了严格的过滤,不要直接从前台获取参数后拼接到 SQL 中。
总结与推荐
| 方法 | 优点 | 缺点 | 适用场景 |
|---|---|---|---|
{dede:arclist} |
最灵活、最常用,功能强大,可定制性高。 | 需要记住常用属性,对新手稍复杂。 | 绝大多数情况,尤其是调用文章列表、带图列表等。 |
{dede:channel} |
专门用于调用栏目信息,代码简洁。 | 主要用于获取栏目本身的信息(名称、描述、链接),不能直接获取文章。 | 调用栏目名称、栏目描述、栏目链接等。 |
{dede:freelist} |
访问速度快,首页不消耗数据库资源。 | 设置相对固定,不够灵活,更新后需手动重新生成。 | 首页版块固定、更新不频繁的栏目文章展示。 |
{dede:sql} |
功能最强大,可以实现任何复杂的查询逻辑。 | 有 SQL 注入风险,需要 SQL 基础,可读性差。 | arclist 无法实现的特殊需求,如跨表查询、复杂排序等。 |
给新手的建议:
- 先掌握
{dede:arclist}和{dede:channel},这两个标签能解决 90% 的首页调用需求。 - 调用前,务必去后台“栏目管理”中记下你需要调用的栏目的 ID。
- 如果某个版块的内容长期不变,为了提升首页访问速度,可以考虑使用
{dede:freelist}。
希望这些详细的解释能帮助你顺利地在 DedeCMS 首页调用栏目内容!
