DEDECMS是一款广泛使用的开源内容管理系统,其强大的标签功能使得开发者可以灵活地调用和管理网站内容,在实际应用中,经常需要调用当前栏目下的文章数,以便于展示和统计,以下将详细介绍如何在DEDECMS中实现这一功能:
方法一:通过函数GetTotalArc获取文章数
1、涉及文件:include/common.func.php
2、步骤:
打开include/common.func.php
文件,在文件末尾的?>前添加如下代码:
“`php
function GetTotalArc($tid){
global $dsql;
$sql = GetSonIds($tid);
$row = $dsql>GetOne("Select count(id) as dd From dede_archives where typeid in({$sql})");
return $row[‘dd’];
}
“`
3、调用方法:
在模板中使用以下代码调用当前栏目下的文章数:
“`php
[field:ID function=’GetTotalArc(@me)’/]
或
[field:ID runphp=’yes’] @me = GetTotalArc(@me);[/field:ID]
“`
在主页模板中添加如下代码:
“`php
共{dede:type}[field:ID function=’GetTotalArc(@me)’/] {/dede:type}篇
或在栏目名称后面添加如下代码:
{dede:type}[field:ID function=’GetTotalArc(@me)’/] {/dede:type}
“`
方法二:通过函数getTotalArcByTid获取文章数
1、涉及文件:include/common.func.php
或include/extend.func.php
2、步骤:
打开include/common.func.php
或include/extend.func.php
文件,在文件末尾的?>前添加如下代码:
“`php
function getTotalArcByTid($tid, $level=TRUE) {
global $dsql;
$level==TRUE && $tid = GetSonTypeID($tid);
$sql = "SELECT count(id) as total fromdede_archives
where typeid in($tid)";
$result = $dsql>GetOne($sql);
return $result[‘total’];
}
“`
3、调用方法:
在模板中使用以下代码调用当前栏目下的文章数:
“`php
{dede:field.typeid function="getTotalArcByTid(@me)"/}
或
[field:typeid function="getTotalArcByTid(@me)"/]
“`
在列表页模板中添加如下代码:
“`php
该栏目共有{dede:field.typeid function="getTotalArcByTid(@me)"/}篇文章
“`
相关问答FAQs
1、如何在DEDECMS中统计当前栏目及所有子栏目的文章总数?
解答:可以使用getTotalArcByTid
函数来实现,首先在include/common.func.php
文件中添加函数定义,然后在模板中调用该函数即可,具体代码如下:
“`php
function getTotalArcByTid($tid, $level=TRUE) {
global $dsql;
$level==TRUE && $tid = GetSonTypeID($tid);
$sql = "SELECT count(id) as total fromdede_archives
where typeid in($tid)";
$result = $dsql>GetOne($sql);
return $result[‘total’];
}
“`
调用方法:{dede:field.typeid function="getTotalArcByTid(@me)"/}
2、如何在DEDECMS中获取指定栏目下的文章数量?
解答:可以使用getTypeArcLength
函数来实现,首先在/include/helpers/channelunit.helper.php
文件中添加函数定义,然后在模板中调用该函数即可,具体代码如下:
“`php
if ( ! function_exists(‘getTypeArcLength’)) {
function getTypeArcLength($id,$addthis=true) {
global $dsql;
if($addthis) {
$types = GetSonIds($id);
$sql = "SELECT count(id) as len FROM idea_arctiny where typeid IN ($types)";
} else {
$sql = "SELECT count(id) as len FROM idea_arctiny where typeid = $id";
}
$arclen = $dsql>GetOne($sql);
return $arclen[‘len’];
}
}
“`
调用方法:{dede:field.id function="getTypeArcLength(@me,false)"/}
调用方法 | 描述 | 代码示例 |
{dede:sql sql="SELECT COUNT(*) AS num FROM dede_arctype WHERE mid={field.mid/}"} | 使用SQL查询当前栏目下的文章总数 | {dede:sql sql="SELECT COUNT(*) AS num FROM dede_arctype WHERE mid={field.mid/}"} |
{dede:field name='arcnum' /} | 获取当前栏目下文章的总数,需要先通过SQL查询设置该字段的值 | {dede:field name='arcnum' /} |
{dede:field name='typeall' /} | 获取当前栏目下文章的总数,typeall 包含子类别的文章总数 | {dede:field name='typeall' /} |
{dede:arctype id='1' /} | 通过指定ID获取当前栏目下的文章总数 | {dede:arctype id='1' /} |
说明:
1、{dede:sql}
标签用于执行SQL查询,{field.mid/}
是当前页面的字段值,mid
表示当前栏目的ID。
2、{dede:field}
标签用于获取字段的值,name
属性指定要获取的字段名称。
3、{dede:arctype}
标签用于获取指定ID的栏目信息,id
属性指定要获取的栏目ID。
根据实际需求选择合适的方法即可。
原创文章,作者:未希,如若转载,请注明出处:https://www.kdun.com/ask/1183252.html
本网站发布或转载的文章及图片均来自网络,其原创性以及文中表达的观点和判断不代表本网站。如有问题,请联系客服处理。
发表回复