织梦cms顶级栏目显示所有子栏目文章

织梦CMS顶级栏目如何显示所有子栏目文章?

在顶级栏目的列表页面中汇总展示其所有子栏目下的文章。

一、使用channelartlist(推荐)

{dede:channelartlist}
<div class="sub-block">
<h3>{dede:field name='typename'/}</h3>
{dede:arclist row='5' titlelen='50'}
<li><a href="[field:arcurl/]">[field:title/]</a></li>
{/dede:arclist}
</div>
{/dede:channelartlist}

二、SQL方式获取所有子栏目ID再汇总文章

{dede:php}
$typeid=$refObj->TypeLink->TypeInfos['id'];
$dsql->SetQuery("SELECT GROUP_CONCAT(id) AS ids FROM dede_arctype WHERE reid=$typeid");
$row=$dsql->GetOne();
$ids=$row['ids'] ? $row['ids'] : $typeid;
{/dede:php}
{dede:arclist typeid='[field:php]echo $ids;[/field:php]' row='20'}
<li>...</li>
{/dede:arclist}

三、直接跨栏目查询

{dede:sql sql="SELECT a.* FROM dede_archives a JOIN dede_arctype t ON a.typeid=t.id WHERE t.reid=1 ORDER BY a.pubdate DESC LIMIT 30"}
<li><a href="/plus/view.php?aid=[field:id/]">[field:title/]</a></li>
{/dede:sql}

四、设置合适的分页和数量

汇总显示时数据量可能较大,建议:

提示:channelartlist是最优雅的解决方案。如果子栏目超过15个且每个都有很多文章,建议改用SQL方式优化性能。