当前位置:首页 > 行业动态 > 正文

如何统计并显示Dedecms中每个栏目的文章数量?

在织梦dedecms中,你可以使用内置的标签来调用栏目的文章数。具体代码如下:,,“ php,{dede:field name='channel'/},“,,这个标签会输出对应栏目的文章数。

在织梦DedeCMS中,调用栏目文章数并统计对应栏目的文章数可以通过自定义函数的方法来实现,以下是详细步骤和代码示例:

方法一:自定义函数法

1、修改include/common.func.php文件

打开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’];

}

// 统计当前栏目信息数

function dynamic_num($current_id) {

global $dsql;

// 读取当前栏目的子ID

$sql = "SELECT id FROM#@__arctype WHERE id=’$current_id’ || topid=’$current_id’";

$dsql>SetQuery($sql);

$dsql>Execute();

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

$arr[] = $row[‘id’];

}

foreach ($arr as $key => $value) {

$type .= $value . ‘,’;

}

$ty = "" . $type . "0";

//echo $ty;

$t_num = $dsql>GetOne("select count(*) as num from#@__archives where typeid in($ty)");

//echo $t_num[num];

if (is_array($t_num)) {

return " " . $t_num[num] . " ";

} else {

return "0";

}

}

“`

2、模板里的调用代码

在模板文件中使用以下代码来显示栏目及其文章数:

“`html

{dede:field name=’typename’/}</b>(该类拥有{dede:type}[field:id function="dynamic_num(@me)" /]{/dede:type}个文档)<br/>

{dede:channel type=’son’ }

<li><a href='[field:typelink/]’>[field:typename/]</a>(<span>[field:ID runphp=’yes’] @me = GetTotalArc(@me);[/field:ID]</span>)</li>

{/dede:channel}

“`

3、注意事项

确保include/common.func.php文件路径正确。

在模板文件中,确保标签和语法正确无误。

方法二:利用系统自带runphp参数

1、直接在模板中使用runphp参数

在需要显示统计数量的地方直接加入以下代码:

“`html

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

$aaa=200;

$DedeMeValue=100;

$DedeMeValue = $aaa;

{/dede:field}

等同于:

{dede:field runphp=’yes’}$aaa = 200;@me=100;@me = $aaa;{/dede:field}

“`

2、调用具体栏目的文章总数

使用以下代码调用指定栏目ID的文章总数:

“`html

{dede:ID runphp=’yes’} @me=1; @me = GetTotalArc(@me);{/dede:ID}

“`

这里的1是typeid的值,可以根据实际情况修改。

通过以上两种方法,可以在织梦DedeCMS中实现对栏目及其子栏目文章数的统计,并在模板中进行调用,选择适合自己需求的方法进行操作即可。

FAQs

1、如何在首页调用特定栏目的文章数?

在首页模板中,可以使用以下代码调用特定栏目(假设栏目ID为1)的文章数:

“`html

{dede:ID runphp=’yes’} @me=1; @me = GetTotalArc(@me);{/dede:ID}

“`

将上述代码中的1替换为实际的栏目ID即可。

2、如何在不同语言的网站上实现多语言站点统计文章数?

对于多语言网站,可以在每个语言版本的模板中分别调用相应语言的栏目ID和文章数,中文版本调用中文栏目ID,英文版本调用英文栏目ID,确保每个语言版本都能正确显示对应的文章数。

参数/方法 说明 代码示例
{dede:arctype id='aid'} 通过栏目ID获取栏目信息 {dede:arctype id='1'}
typename 获取栏目名称 {dede:arctype id='1'/ typename}
id 获取栏目ID {dede:arctype id='1'/ id}
{dede:arc num='10' titlelen='10' orderby='pubdate' row='10' listype='1' typeid='1'} 获取指定栏目下的文章列表 {dede:arc num='10' titlelen='10' orderby='pubdate' row='10' listype='1' typeid='1'}
totalcount 获取文章总数 {dede:arc num='10' titlelen='10'orderby='pubdate' row='10' listype='1' typeid='1'/ totalcount}
{dede:sql sql='SELECT COUNT(*) FROM dede_arctype WHERE id={dede:arctype id='1'/ id}'} 通过SQL查询获取文章数 {dede:sql sql='SELECT COUNT(*) FROM dede_arctype WHERE id={dede:arctype id='1'/ id}'}
{dede:sql sql='SELECT COUNT(*) FROM dede_arctype WHERE typeid={dede:arctype id='1'/ id}'} 通过栏目ID获取文章数 {dede:sql sql='SELECT COUNT(*) FROM dede_arctype WHERE typeid={dede:arctype id='1'/ id}'}

通过以上方法,您可以在织梦dedecms中调用栏目文章数,并统计对应栏目的文章数。

0