织梦会员发表文章数量多少算正常?

99ANYc3cd6
预计阅读时长 17 分钟
位置: 首页 织梦建站 正文

在织梦CMS(DedeCMS)中,系统本身并没有一个直接显示“会员总共发表了多少篇文章”的字段,这个数据需要通过动态计算得出,计算的基础是,每篇文章都有一个 mid 字段,用来标识这篇文章属于哪个会员。

织梦会员发表文章数量
(图片来源网络,侵删)

要获取会员发表的文章数量,主要有以下几种方法,适用于不同的场景:


通过SQL查询直接获取(最常用)

这是最直接、最准确的方法,通常用在后台管理、数据统计或者需要精确数值的地方。

在后台SQL查询工具中执行

您可以登录织梦后台,在 [系统] -> [SQL命令运行工具] 中,执行以下SQL语句来查询特定会员的文章数量。

语法:

织梦会员发表文章数量
(图片来源网络,侵删)
SELECT COUNT(*) as article_count FROM `dede_archives` WHERE mid = '会员ID';

示例: 假设您想查询会员ID为 10 的用户发表的文章数量,就在SQL工具框里输入:

SELECT COUNT(*) as article_count FROM `dede_archives` WHERE mid = 10;

然后点击“查询”,执行后,结果会显示在下方,article_count 就是该会员的文章总数。

注意

  • dede_archives 是织梦默认的文章主表表名,如果您在安装时修改了表前缀,请替换成您自己的表前缀(yourname_archives)。
  • mid 是会员ID字段,对应 dede_member 表中的 mid 字段。

在PHP代码中使用

如果您想在网站的前台页面或自定义的PHP文件中显示这个数量,可以使用织梦的 dsql 类来执行查询。

织梦会员发表文章数量
(图片来源网络,侵删)

示例代码:

<?php
// 1. 引入织梦核心文件
require_once(dirname(__FILE__)."/include/common.inc.php");
// 2. 获取要查询的会员ID
// 可以从会员登录信息中获取,或者通过URL参数等
$member_id = $cfg_ml->M_ID; // 如果当前会员已登录,可以这样获取
// 或者手动指定
// $member_id = 10;
// 3. 使用dsql执行查询
$dsql = new DedeSql(false);
$dsql->SetQuery("SELECT COUNT(*) as article_count FROM `#@__archives` WHERE mid = '$member_id'");
$dsql->Execute('count');
// 4. 获取结果
$row = $dsql->GetArray('count');
$article_count = $row['article_count'];
// 5. 输出结果
echo "该会员共发表了 " . $article_count . " 篇文章。";
// 释放资源
$dsql->Close();
?>

代码说明:

  • require_once(...):引入织梦的核心文件,确保可以使用织梦的全局变量和类。
  • $cfg_ml->M_ID:这是织梦会员登录后,会员操作类 $cfg_ml 中存储的当前登录会员的ID。
  • #@__:这是织梦系统定义的表前缀变量,会自动替换为您在后台配置的表前缀(如 dede_),推荐使用,更具通用性。
  • SetQuery():设置要执行的SQL语句。
  • Execute():执行查询。
  • GetArray():获取查询结果到数组中。

通过织梦标签调用(适用于前台模板)

如果您想在会员中心、个人主页等前台模板页面上显示当前登录会员的文章数,可以使用织梦的标签结合PHP代码来实现。

示例:在会员中心模板(member/templets/index.htm)中显示

<div class="user-info">
    <p>欢迎您,{dede:var name='memberinfo'/}!</p>
    <p>您当前的积分:{dede:var name='scores'/}</p>
    <!-- 在这里添加显示文章数量的代码 -->
    <p>您已发表文章:
        <?php
        $mid = $memberid; // 在会员中心模板中,$memberid 变量可直接用
        $dsql = new DedeSql(false);
        $dsql->SetQuery("SELECT COUNT(*) as article_count FROM `#@__archives` WHERE mid = '$mid'");
        $dsql->Execute('count');
        $row = $dsql->GetArray('count');
        echo $row['article_count'];
        $dsql->Close();
        ?>
        篇。
    </p>
</div>

说明:

  • 这种方法将PHP代码直接嵌入到HTML模板文件中,简单直观。
  • $memberid 是会员中心模板中可以直接使用的变量,代表当前登录会员的ID。

修改数据库添加字段(不推荐,一劳永逸但风险高)

如果您需要在很多地方频繁调用这个数值,并且不希望每次都去查询数据库,可以考虑修改数据库,为 dede_member 表增加一个字段来存储文章数量。

操作步骤(高风险,请务必先备份数据库!):

  1. 备份数据库:这是最重要的一步,防止操作失误导致数据丢失。

  2. 添加字段:在 dede_member 表中增加一个字段,article_count,类型为 INT,默认值为 0

    ALTER TABLE `dede_member` ADD `article_count` INT(10) NOT NULL DEFAULT '0';
  3. 编写更新脚本:创建一个PHP文件,运行它来为所有现有会员计算并更新文章数量。

    <?php
    require_once(dirname(__FILE__)."/include/common.inc.php");
    set_time_limit(0); // 防止脚本超时
    $dsql = new DedeSql(false);
    // 获取所有会员
    $dsql->SetQuery("SELECT mid FROM `#@__member`");
    $dsql->Execute('m');
    while($row = $dsql->GetArray('m')){
        $mid = $row['mid'];
        // 计算每个会员的文章数
        $count_dsql = new DedeSql(false);
        $count_dsql->SetQuery("SELECT COUNT(*) as cnt FROM `#@__archives` WHERE mid = '$mid'");
        $count_dsql->Execute('c');
        $count_row = $count_dsql->GetArray('c');
        $article_count = $count_row['cnt'];
        $count_dsql->Close();
        // 更新会员表中的文章数
        $update_dsql = new DedeSql(false);
        $update_dsql->ExecuteNoneQuery("UPDATE `#@__member` SET article_count = '$article_count' WHERE mid = '$mid'");
        echo "会员ID: {$mid} 的文章数已更新为: {$article_count}<br />";
    }
    $dsql->Close();
    echo "更新完成!";
    ?>
  4. 触发更新:每当会员发表新文章或删除文章时,您需要额外编写代码去更新这个 article_count 字段的值,这通常需要修改织梦的核心文件(如 article_add.phparticle_delete.php),非常复杂,容易出错。

由于维护成本高且容易出错,强烈不推荐普通用户使用这种方法,除非您有非常特殊的需求和强大的二次开发能力。


总结与建议

方法 优点 缺点 适用场景
SQL查询 简单、准确、无需修改文件 每次调用都需查询数据库,对性能有微小影响 后台统计、一次性查询、数据展示
PHP代码调用 灵活、可嵌入模板 需要一定的PHP基础 前台会员中心、个人主页等动态页面
修改数据库 查询速度快,无需实时计算 风险极高、维护复杂、破坏系统结构 极少情况,不推荐

给您的最终建议:

  • 如果您只是想在后台看看某个会员发了多少篇文章,直接使用方法一的SQL命令工具即可。
  • 如果您想在会员中心等前台页面显示这个数量,请使用方法二,将PHP代码嵌入到您的模板文件中,这是最常用且最稳妥的前台实现方式。
-- 展开阅读全文 --
头像
织梦手机自适应怎么用?快速配置指南?
« 上一篇 03-07
dede新加字段如何正确调用?
下一篇 » 03-07

相关文章

取消
微信二维码
支付宝二维码

目录[+]