如何在DedeCMS中查询并显示当前栏目的文章数量?

在dedecms中,可以使用标签{dede:field name=’total’}来获取当前栏目下的文章数。

在织梦DedeCMS中,调用当前栏目下的文章数可以通过以下几种方法实现,这些方法包括直接使用SQL语句、自定义函数以及利用模板标签等。

如何在DedeCMS中查询并显示当前栏目的文章数量?

方法一:使用SQL语句统计

通过在模板中使用SQL语句,可以快速获取当前栏目及其所有子栏目的文章总数,具体操作如下:

1、打开include/common.func.php文件:在该文件的最后添加如下代码:

“`php

function GetTotalArc( $tid ){

global $dsql;

$sql = GetSonIds( $tid );

$row = $dsql >GetOne("Select count (id) as dd From#@__archives where typeid in($sql )");

return $row [ ‘dd’ ];

}

“`

2、在模板中调用:使用以下代码即可显示当前栏目及其所有子栏目的文章总数:

“`html

{dede:type}[field:ID function="GetTotalArc(@me)"/]{/dede:type}

“`

方法二:使用自定义函数

通过自定义函数,可以在模板中灵活调用当前栏目下的文章数,具体步骤如下:

1、打开include/common.func.php或include/extend.func.php文件:在该文件的最后添加如下代码:

“`php

function getTotalArcByTid($tid, $level=TRUE) {

global $dsql;

if ($level) {

$tid = GetSonTypeID($tid);

}

$sql = "SELECT count(id) as total fromdede_archives where typeid in($tid)";

$result = $dsql>GetOne($sql);

return $result[‘total’];

}

function GetSonTypeID($tid){

global $dsql;

$dsql>SetQuery("Select id Fromdede_arctype where reid in($tid) And ishidden<>1 order by sortrank");

$dsql>Execute();

如何在DedeCMS中查询并显示当前栏目的文章数量?

$typeid = ”;

while($row=$dsql>GetObject()){

$typeid .= "{$row>id},";

$typeid .= GetSonTypeID($row>id);

}

return trim($typeid,’,’);

}

“`

2、在模板中调用:使用以下代码即可显示当前栏目及其所有子栏目的文章总数:

“`html

{dede:field.typeid function="getTotalArcByTid(@me)"/}

“`

方法三:使用runphp参数

通过织梦自带的runphp参数,也可以实现文章总数的统计,具体步骤如下:

1、在模板中直接调用:在需要显示统计数量的地方加入如下代码:

“`html

{dede:field.typeid runphp=’yes’}

global $dsql;

$row = $dsql>GetOne("select count(*) as dd from dede_archives where typeid = @me");

@me = $row[‘dd’];

{/dede:field.typeid}

“`

FAQs

Q1: 如何在主页模板上显示每个栏目的文章总数?

A1: 在主页模板上,可以使用以下代码来显示每个栏目的文章总数:

共{dede:type}[field:ID function='GetTotalArc(@me)'/]篇{/dede:type}

或者:

[field:typename/](该类拥有{dede:type}[field:ID function="GetTotalArc(@me)"/]个文档){/dede:type}

Q2: 如何在列表页模板中显示当前栏目的文章总数?

A2: 在列表页模板中,可以使用以下代码来显示当前栏目的文章总数:

{dede:field.typeid function="getTotalArcByTid(@me)"/}

或者:

{dede:field.typeid runphp='yes'}
    global $dsql;
    $row = $dsql>GetOne("select count(*) as dd from dede_archives where typeid = @me");
    @me = $row['dd'];
{/dede:field.typeid}

原创文章,作者:未希,如若转载,请注明出处:https://www.kdun.com/ask/1110236.html

(0)
未希的头像未希新媒体运营
上一篇 2024-09-30 17:55
下一篇 2024-09-30 17:55

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

云产品限时秒杀。精选云产品高防服务器,20M大带宽限量抢购  >>点击进入