调用指定栏目下的文章列表(最常用)
这是最基础也是最常用的方法,通常用于在首页展示某个特定栏目(如“公司新闻”、“产品中心”)的最新几篇文章。
核心标签:
{dede:channel}:获取栏目列表信息。{dede:arclist}:获取文章列表信息。
场景:
假设你的网站首页有一个“最新动态”模块,你想调用“公司新闻”栏目(栏目ID为 1)的最新5篇文章。
代码示例:
<h2>最新动态</h2>
<ul>
{dede:arclist typeid='1' titlelen='30' row='5' orderby='pubdate'}
<li>
<a href="[field:arcurl/]">[field:title/]</a>
<span>[field:pubdate function="MyDate('Y-m-d',@me)"/]</span>
</li>
{/dede:arclist}
</ul>
代码详解:
{dede:arclist ...}:这是调用文章列表的主标签。typeid='1':最重要的参数,表示只调用栏目ID为1的文章,如果你要调用多个栏目,用逗号隔开,typeid='1,3,5',如果留空或为0,则调用所有顶级栏目的文章,len='30'`:标题长度,截取30个字符,防止标题过长影响布局。row='5':调用文章的数量,这里是5篇。orderby='pubdate':排序方式,按发布日期降序排列(最新的在最前面),其他常用值:id(按文章ID)、click(按点击量)、rand(随机)。[field:arcurl/]:文章的链接地址。[field:title/]:文章的标题。[field:pubdate function="MyDate('Y-m-d',@me)"/]:文章的发布日期,这里使用了function对日期进行了格式化,'Y-m-d'是你想要的输出格式(如 2025-10-27)。
调用指定栏目及其子栏目的文章列表
当你想在一个模块里展示一个父栏目及其所有子栏目的文章时,就需要用到这个方法。
核心标签:
{dede:sonchannel}:获取当前栏目的子栏目列表。{dede:arclist}:结合子栏目ID进行调用。
场景:
假设“产品中心”是父栏目(ID为 2),下面有“产品A”、“产品B”等子栏目,你想在首页展示“产品中心”及其所有子栏目的最新产品。
代码示例:
<h2>产品中心</h2>
<ul>
{dede:sonchannel type='self' row='100'}
{dede:arclist typeid='[field:id]' titlelen='30' row='3' orderby='pubdate'}
<li>
<a href="[field:arcurl/]">[field:title/]</a>
</li>
{/dede:arclist}
{/dede:sonchannel}
</ul>
代码详解:
{dede:sonchannel type='self' row='100'}:type='self':表示获取当前栏目(父栏目)的子栏目。type='top'则表示获取顶级栏目。row='100':获取子栏目的数量,设置一个足够大的数字以防遗漏。
[field:id]:这是{dede:sonchannel}循环中的变量,代表每个子栏目的ID。typeid='[field:id]':将{dede:arclist}的typeid参数设置为当前循环的子栏目ID,从而实现对每个子栏目分别调用文章。
调用指定栏目简介(描述)
你不仅想展示栏目下的文章,还想展示这个栏目的简介或描述。
核心标签:
{dede:field}:用于获取当前栏目的字段信息。
场景:
在“关于我们”栏目模块,展示该栏目的描述内容。
代码示例:
<h2>关于我们</h2>
<p>{dede:field name='description'/}</p>
代码详解:
{dede:field name='description'/}:name='description'指定了要获取的字段是“栏目描述”,在后台“栏目管理” -> “高级选项” -> “栏目描述”中填写的内容就会在这里显示。- 这个标签通常放在
{dede:channel}循环内部,以获取特定栏目的描述。{dede:channel typeid='3'} <h2><a href="[field:typelink/]">[field:typename/]</a></h2> <p>[field:description/]</p> {/dede:channel}
自由列表(FreeMarker)- 最灵活的方法
如果以上方法不能满足你复杂的调用需求(需要跨栏目、按特定条件筛选、自定义排序等),自由列表”是最佳选择,它允许你像写SQL查询一样自由地定义数据。
操作步骤:
-
进入自由列表管理:
- 登录织梦后台。
- 在左侧菜单找到【核心】 -> 【自由列表管理】。
- 点击“增加自由列表”。
-
配置自由列表:
- 列表名称:给这个列表起个名字,方便识别,如“首页产品推荐”。
- 列表模板:选择一个用于展示列表的模板文件(如
default/list_product.htm),或者直接在下方输入代码。 - 命名规则:可以自定义生成列表页的URL规则,一般保持默认即可。
- 频道选择:选择你要查询的数据所在的频道(通常是“文章频道”)。
- 按SQL语句查询:这是最关键的一步,在这里输入你的自定义SQL语句。
-
编写SQL语句:
场景:调用栏目ID为
1和2的文章,标题包含“织梦”或“CMS”,按发布日期倒序排列,只取10条。SELECT * FROM `dede_archives` a LEFT JOIN `dede_arctype` t ON a.typeid = t.id WHERE (a.typeid IN (1,2) AND a.title LIKE '%织梦%' OR a.title LIKE '%CMS%') AND a.arcrank > -1 ORDER BY a.pubdate DESC LIMIT 0, 10
dede_archives是文章主表,dede_arctype是栏目表。a.typeid IN (1,2):指定栏目ID。a.title LIKE '%织梦%'模糊匹配。a.arcrank > -1:这是一个重要条件,表示只审核通过的文章(-1表示未审核)。LIMIT 0, 10:从第0条开始,取10条。
-
在首页调用: 创建好自由列表后,系统会生成一个特殊的标签,你可以在首页模板中直接使用。
{dede:freelist titlelen='40' row='10'} <li> <a href="[field:arcurl/]">[field:title/]</a> <span>[field:pubdate function="MyDate('Y-m-d',@me)"/]</span> </li> {/dede:freelist}这个标签的用法和
{dede:arclist}几乎一样,但数据源是你自定义的SQL。
总结与建议
| 方法 | 适用场景 | 优点 | 缺点 |
|---|---|---|---|
{dede:arclist} |
调用单一或多个栏目的文章列表 | 简单、高效、常用 | 功能相对固定,不够灵活 |
{dede:sonchannel} |
调用父栏目及其子栏目的文章 | 结构清晰,适合展示分类内容 | 需要嵌套标签,代码稍复杂 |
{dede:field} |
获取栏目描述等基本信息 | 直接、方便 | 功能单一,只能获取栏目本身信息 |
| 自由列表 | 复杂的、自定义的数据查询 | 极其灵活,功能最强大 | 需要编写SQL,对新手有一定门槛 |
给新手的建议:
- 从
{dede:arclist}开始:90% 的首页栏目调用需求都可以用它解决。 - 善用后台测试:在后台的【模板】 -> 【模板测试】中,你可以实时预览
{dede:arclist}等标签的输出结果,非常方便调试。 - 了解栏目ID:在后台【栏目管理】中,鼠标移到栏目名称上,浏览器左下角会显示该栏目的ID,这是调用时最重要的参数。
- 遇到复杂需求再考虑自由列表:当
arclist无法满足你的筛选、排序等需求时,再花时间学习自由列表,它会为你打开新世界的大门。
希望这份详细的指南能帮助你顺利地在织梦首页调用栏目内容!
