如何在Dedecms中获取当前栏目的文章数量?

DedeCMS中,要调用当前栏目下的文章数,可以使用以下代码:,,“php,{dede:field name='total'/},

DEDECMS是一款广泛使用的开源内容管理系统,其强大的标签功能使得开发者可以灵活地调用和管理网站内容,在实际应用中,经常需要调用当前栏目下的文章数,以便于展示和统计,以下将详细介绍如何在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.phpinclude/extend.func.php

2、步骤

打开include/common.func.phpinclude/extend.func.php文件,在文件末尾的?>前添加如下代码:

如何在Dedecms中获取当前栏目的文章数量?

“`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);

如何在Dedecms中获取当前栏目的文章数量?

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

(0)
未希的头像未希新媒体运营
上一篇 2024-10-08 07:00
下一篇 2024-10-08 07:01

相关推荐

  • 如何在DedeCMS中正确调用pubdate时间标签?

    在DedeCMS中,要调用时间标签pubdate,可以使用以下代码:,,“,[field:pubdate runphp=’yes’]@me = DateTime::createFromFormat(‘Ymd H:i:s’, @me); echo @me˃format(‘Ymd’);[/field:pubdate],“

    2024-08-04
    014
  • 如何精通dede自带采集器的高级功能?

    DedeCMS自带采集器高阶技巧包括设置精准规则、使用正则表达式、多线程采集、定时任务和数据清洗,提升效率和质量。

    2024-10-02
    05
  • 如何在dedecms文章审核通过后自动为会员增加积分或金币?

    在DedeCMS中,可以通过修改会员模型和添加钩子函数,实现文章审核后给会员增加积分或金币。具体步骤如下:,,1. 打开 /dede/member/member_model.php 文件,找到 addMoney 方法,添加以下代码:,,“php,function addMoney($money = 0, $typeid = 0) {, global $dsql;, $userid = $this˃mid;, $nowtime = time();, $newmoney = $this˃money + $money;, $query = “UPDATE dede_member SET money=$newmoney, lastupdate={$nowtime} WHERE mid={$userid}”;, $dsql˃ExecuteNoneQuery($query);, return true;,},`,,2. 打开 /dede/archives_article_do.php 文件,找到 checkArchives 方法,添加以下代码:,,`php,function checkArchives() {, global $dsql, $cfg_df_yes, $cfg_arcCache;, if (!empty($this˃aid)) {, $aid = intval($this˃aid);, $row = $dsql˃GetOne(“SELECT id,mid,typeid FROM #@__archives WHERE id = {$aid}”);, if ($row[‘id’]) {, $archives = $row;, $archives[‘typelink’] = ”;, if (!empty($row[‘typeid’]) && !in_array($row[‘typeid’], array(1, 2))) {, $archives[‘typelink’] = ‘index.php?m=content&c=index&a=list&catid=’ . $row[‘typeid’];, }, $archives[‘url’] = $cfg_df_yes == ‘Y’ ? $row[‘typelink’] : $row[‘filename’];, $archives[‘title’] = htmlspecialchars($row[‘title’]);, $archives[‘click’] = $row[‘click’] + 1;, $archives[‘lastupdate’] = $row[‘pubdate’] ˃ $cfg_arcCache ? $row[‘pubdate’] : $row[‘clickdate’];, $archives[‘description’] = $row[‘description’];, $archives[‘writer’] = $row[‘writer’];, $archives[‘source’] = $row[‘source’];, $archives[‘ismake’] = $row[‘ismake’];, $archives[‘istop’] = $row[‘istop’];, $archives[‘isdefault’] = $row[‘isdefault’];, $archives[‘ispart’] = $row[‘ispart’];, $archives[‘isimage’] = $row[‘isimage’];, $archives[‘isremote’] = $row[‘isremote’];, $archives[‘isflow’] = $row[‘isflow’];, $archives[‘corank’] = $row[‘corank’];, $archives[‘litpic’] = $row[‘litpic’];, $archives[‘ip’] = gethostbyname(getenv(‘REMOTE_ADDR’));, if (empty($cfg_df_yes) || empty($cfg_df_yes[0])) {, $archives[‘filename’] = $row[‘filename’];, if (!file_exists(DEDE_ROOT . “/data/” . $archives[‘filename’] . “.htm”)) {, $query = “UPDATE #@__archives SET click=click+1, clickdate={$nowtime} WHERE id={$aid}”;, $dsql˃ExecuteNoneQuery($query);, $this˃assign(‘msg’, ‘文档更新成功’);, $this˃assign(‘type’, ‘success’);, $this˃assign(‘jumpUrl’, ‘javascript:;’);, $this˃display(‘result’);, exit;, } else {, $this˃assign(‘msg’, ‘文档已经存在,请重新编辑’);, $this˃assign(‘type’, ‘error’);, $this˃assign(‘jumpUrl’, ‘javascript:;’);, $this˃display(‘result’);, exit;, }, } else {, $this˃assign(‘msg’, ‘文档更新成功’);, $this˃assign(‘type’, ‘success’);, $this˃assign(‘jumpUrl’, ‘javascript:;’);, $this˃display(‘result’);, exit;, }, } else {, $this˃assign(‘msg’, ‘文档不存在’);, $this˃assign(‘type’, ‘error’);, $this˃assign(‘jumpUrl’, ‘javascript:history.go(1)’);, $this˃display(‘result’);, exit;, }, } else {, $this˃assign(‘msg’, ‘缺少参数’);, $this˃assign(‘type’, ‘error’);, $this˃assign(‘jumpUrl’, ‘javascript:history.go(1)’);, $this˃display(‘result’);, exit;, },},`,,3. 打开 /dede/member_hook.php 文件,添加以下代码:,,`php,function memberAfterSave($rid, &$member) {, if ($member[‘typeid’] == 1) { // 文章类型为1时,增加积分或金币, $addMoney = 10; // 增加的金额, $member˃addMoney($addMoney, 1); // 增加积分或金币, },},“,,4. 保存所有文件并上传到服务器。当文章审核通过后,会员将获得相应的积分或金币奖励。

    2024-10-03
    09
  • 如何在dedecms模板中跨栏目调用相关文章?

    在dedecms模板中调用整站相关文章不限栏目的实现方法,可以通过以下步骤实现:,,1. 在后台设置相关标签,如{dede:field.keywords}表示文章关键词。,2. 使用{dede:arclist}标签调用相关文章,设置keywords=”来获取全站相关文章。,3. 通过调整标签参数,如row=’10’限制显示数量,自定义输出内容。,,这样即可实现在dedecms模板中调用整站相关文章不限栏目的功能。

    2024-09-05
    020

发表回复

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

免费注册
电话联系

400-880-8834

产品咨询
产品咨询
分享本页
返回顶部
云产品限时秒杀。精选云产品高防服务器,20M大带宽限量抢购  >>点击进入