调取栏目下文章的核心方法
在织梦CMS模板开发中,"调取栏目下的文章"是最常用的操作之一。织梦CMS提供了 {dede:arclist}、{dede:list} 等多种标签来实现文章列表的调用,可灵活应用于首页、列表页、内容页等各类模板。
方法一:使用 arclist 标签(最常用)
{dede:arclist} 是织梦CMS中最灵活的文章调用标签,几乎可用于所有页面:
1.1 基础调用 - 调取指定栏目最新文章
<!-- 调取ID为3的栏目下最新10篇文章 -->
{dede:arclist typeid='3' row='10' titlelen='40' orderby='pubdate'}
<li>
<a href="[field:arcurl/]" title="[field:title/]">
[field:title/]
</a>
<span class="date">[field:pubdate function="MyDate('Y-m-d',@me)"/]</span>
</li>
{/dede:arclist}
1.2 调取指定栏目的推荐文章
<!-- 调取栏目ID为5的带有"推荐"属性的文章 -->
{dede:arclist typeid='5' flag='c' row='5' titlelen='36'}
<li>
<span class="badge">推荐</span>
<a href="[field:arcurl/]">[field:title/]</a>
</li>
{/dede:arclist}
<!-- flag属性值说明 -->
<!-- h:头条 c:推荐 f:幻灯片 a:特荐 s:滚动 -->
1.3 调取栏目下带缩略图的文章
<!-- 调取栏目ID为3的有缩略图的文章 -->
{dede:arclist typeid='3' row='6' flag='p' imgwidth='200' imgheight='150'}
<div class="img-item">
<a href="[field:arcurl/]">
<img src="[field:litpic/]" alt="[field:title/]">
<span>[field:title/]</span>
</a>
</div>
{/dede:arclist}
1.4 调取多个栏目的文章
<!-- 同时调取多个栏目(逗号分隔)的内容 -->
{dede:arclist typeid='2,3,5,8' row='12' orderby='click'}
<li>
<a href="[field:arcurl/]">[field:title/]</a>
<em>[field:click/]次阅读</em>
</li>
{/dede:arclist}
方法二:调取栏目及子栏目的文章
使用 channel='son' 参数实现调取指定栏目及其所有子栏目的文章:
<!-- 调取ID为1的栏目及其所有子栏目的文章 -->
{dede:arclist typeid='1' row='20' channel='son' orderby='pubdate'}
<li>
<a href="[field:arcurl/]">[field:title/]</a>
<span class="column-name">
[<a href="[field:typelink/]">[field:typename/]</a>]
</span>
</li>
{/dede:arclist}
方法三:使用 SQL 标签精确查询
当标准标签无法满足复杂需求时:
<!-- 使用SQL标签调取指定栏目的文章 -->
{dede:sql sql="SELECT a.id,a.title,a.pubdate,a.click,t.typename
FROM dede_archives a
LEFT JOIN dede_arctype t ON a.typeid=t.id
WHERE a.typeid=3 AND a.arcrank=0
ORDER BY a.pubdate DESC LIMIT 10"}
<li>
<a href="/plus/view.php?aid=[field:id/]">
[field:title/]
</a>
<span>[field:pubdate function="MyDate('Y-m-d',@me)"/]</span>
</li>
{/dede:sql}
方法四:使用 channelartlist 按子栏目分组调取
当需要按子栏目分别展示文章时:
<!-- 调取顶级栏目下各子栏目的文章 -->
{dede:channelartlist typeid='1' row='5'}
<div class="sub-block">
<h3>{dede:field name='typename'/}</h3>
<ul>
{dede:arclist row='5' titlelen='32'}
<li><a href="[field:arcurl/]">[field:title/]</a></li>
{/dede:arclist}
</ul>
</div>
{/dede:channelartlist}
arclist 标签常用参数汇总
| 参数 | 说明 | 示例 |
|---|---|---|
typeid | 指定栏目ID | typeid='3' |
row | 返回文章数量 | row='10' |
titlelen | 标题最大长度 | titlelen='40' |
orderby | 排序方式 | pubdate/click/id/rand |
flag | 文章属性筛选 | flag='c' |
channel | 是否包含子栏目 | channel='son' |
noflag | 排除指定属性文章 | noflag='h' |
性能建议:
row 参数不要设置过大,建议控制在20以内,避免单次查询返回过多数据影响页面加载速度。如需展示更多内容,可配合分页功能使用。