在DedeCMS的列表页中,要统计当前栏目下的文章数量,可以使用以下几种方法:
方法一:使用DedeCMS内置标签
{dede:field name='id' runphp='yes'}
global $dsql;
$row = $dsql->GetOne("SELECT COUNT(*) AS nums FROM dede_archives WHERE typeid='@me'");
@me = $row['nums'];
{/dede:field}
方法二:使用channelartlist标签
{dede:channelartlist typeid='top'}
栏目[field:typename/]共有文章:{dede:sql sql='SELECT COUNT(*) AS nums FROM dede_archives WHERE typeid=~typeid~'}[field:nums /]{/dede:sql}篇
{/dede:channelartlist}
方法三:在列表页模板中直接查询
<?php
$typeid = $GLOBALS['typeid']; // 获取当前栏目ID
$dsql->SetQuery("SELECT COUNT(*) AS nums FROM dede_archives WHERE typeid='$typeid'");
$dsql->Execute();
$row = $dsql->GetObject();
echo "本栏目共有文章:".$row->nums."篇";
?>
注意事项
- 以上代码需要放在列表页模板中(通常是list_article.htm)
- dede_ 是DedeCMS的表前缀占位符,系统会自动替换
- 如果要统计包含子栏目的文章数量,需要使用递归查询或修改SQL条件
优化建议
对于大型网站,频繁查询数据库可能会影响性能,可以考虑:
- 使用缓存机制
- 在栏目设置中预先统计好文章数量
- 使用DedeCMS的统计功能生成静态数据
希望以上方法能帮助您在DedeCMS列表页中统计栏目文章数量。