织梦cms调取栏目下的文章

调取栏目下文章的核心方法

在织梦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指定栏目IDtypeid='3'
row返回文章数量row='10'
titlelen标题最大长度titlelen='40'
orderby排序方式pubdate/click/id/rand
flag文章属性筛选flag='c'
channel是否包含子栏目channel='son'
noflag排除指定属性文章noflag='h'
性能建议:row 参数不要设置过大,建议控制在20以内,避免单次查询返回过多数据影响页面加载速度。如需展示更多内容,可配合分页功能使用。