内容聚合概述
织梦CMS的栏目内容聚合是指将多个栏目或子栏目的内容整合显示在同一个页面上。这在大型门户网站中非常常见,例如首页展示各个板块的最新内容,或专题页聚合相关栏目的信息。
一、使用 channelartlist 实现内容聚合
这是最标准的栏目内容聚合方式,自动遍历父栏目下的子栏目并显示各自的文章:
<!-- 聚合顶级栏目ID=1下所有子栏目的内容 -->
{dede:channelartlist typeid='1' row='8'}
<div class="section">
<div class="section-title">
<h2><a href="{dede:field name='typelink'/}">
{dede:field name='typename'/}
</a></h2>
<a href="{dede:field name='typelink'/}" class="more">更多 ></a>
</div>
<ul class="article-list">
{dede:arclist row='6' titlelen='40' orderby='pubdate'}
<li>
<a href="[field:arcurl/]">[field:title/]</a>
<span>[field:pubdate function="MyDate('m-d',@me)"/]</span>
</li>
{/dede:arclist}
</ul>
</div>
{/dede:channelartlist}
二、跨栏目聚合(调用多个不相关栏目)
<!-- 手动聚合多个指定栏目的文章 -->
<div class="aggregation">
<!-- 栏目3:最新资讯 -->
<div class="col">
<h3>最新资讯</h3>
{dede:arclist typeid='3' row='8' titlelen='36'}
<li><a href="[field:arcurl/]">[field:title/]</a></li>
{/dede:arclist}
</div>
<!-- 栏目5:热门推荐 -->
<div class="col">
<h3>热门推荐</h3>
{dede:arclist typeid='5' row='8' titlelen='36' orderby='click'}
<li><a href="[field:arcurl/]">[field:title/]</a></li>
{/dede:arclist}
</div>
</div>
三、带缩略图的内容聚合
<!-- 图文混合聚合展示 -->
{dede:channelartlist typeid='1' row='6'}
<h2>{dede:field name='typename'/}</h2>
{dede:arclist row='4' flag='p' imgwidth='300' imgheight='200'}
<div class="card">
<a href="[field:arcurl/]">
<img src="[field:litpic/]" alt="[field:title/]">
<span>[field:title/]</span>
</a>
</div>
{/dede:arclist}
{/dede:channelartlist}
四、SQL标签实现复杂聚合逻辑
<!-- 聚合各栏目最新一篇文章 -->
{dede:sql sql="SELECT a.id,a.title,a.pubdate,t.typename,t.typedir
FROM dede_archives a
INNER JOIN (
SELECT typeid, MAX(id) as max_id
FROM dede_archives
WHERE arcrank=0
GROUP BY typeid
) b ON a.id=b.max_id
LEFT JOIN dede_arctype t ON a.typeid=t.id
WHERE t.reid=1
ORDER BY a.pubdate DESC LIMIT 10"}
<li>
[<a href="[field:typedir/]">[field:typename/]</a>]
<a href="/plus/view.php?aid=[field:id/]">[field:title/]</a>
</li>
{/dede:sql}
五、按时间聚合(本周/本月热点)
<!-- 聚合本周热门文章 -->
{dede:arclist typeid='3,5,8' row='10' orderby='click'
subday='7' titlelen='40'}
<li>
<em class="hot">热</em>
<a href="[field:arcurl/]">[field:title/]</a>
<span>[field:click/]次</span>
</li>
{/dede:arclist}
<!-- subday参数:-7表示最近7天,-30表示最近30天 -->
六、聚合首页常见布局代码
<!-- 典型门户首页布局:多栏目区块聚合 -->
{dede:channelartlist typeid='0' row='5'}
<!-- 区块标题 -->
<div class="block-title">
<h3>{dede:field name='typename'/}</h3>
</div>
<!-- 头条文章(大图) -->
{dede:arclist row='1' flag='h' imgwidth='400' imgheight='250'}
<div class="top-news">
<a href="[field:arcurl/]">
<img src="[field:litpic/]">
<h4>[field:title/]</h4>
</a>
</div>
{/dede:arclist}
<!-- 其他文章列表 -->
<ul>
{dede:arclist row='5' titlelen='40'}
<li><a href="[field:arcurl/]">[field:title/]</a></li>
{/dede:arclist}
</ul>
{/dede:channelartlist}
性能优化:内容聚合页面数据量大,建议合理设置
row 参数和启用缓存机制。对于首页等高频访问页面,开启织梦的模板缓存功能可以显著提升加载速度。