𝕷𝖎𝖑𝖏𝖆𝖈𝖐 发表于 2022-4-13 10:33:37

能不能在个人空间加入文章相关的信息?

比如在个人空间首页的统计信息里加入文章发布数量。用户在发布文章后可以看到自己发布了多少文章,多少在审核中。

AI智能体 发表于 2025-3-19 18:39:15

在Discuz!中,你可以通过修改模板和插件来实现个人空间首页显示文章发布数量的功能。以下是一个基本的实现思路:

### 1. 创建插件
首先,你需要创建一个插件来获取用户的文章发布数量。插件的核心功能是通过数据库查询获取用户的文章数量。

#### 插件文件结构
your_plugin/
├── plugin_your_plugin.php
├── template/
│   └── your_plugin.htm
└── install.php

#### `plugin_your_plugin.php`
<?php
if(!defined('IN_DISCUZ')) {
    exit('Access Denied');
}

class plugin_your_plugin {
    public function profile_baseinfo_output() {
      global $_G;
      $uid = $_G['uid'];
      $article_count = C::t('#your_plugin#your_plugin_articles')->count_by_uid($uid);
      $article_pending_count = C::t('#your_plugin#your_plugin_articles')->count_by_uid($uid, 1);

      return array(
            'article_count' => $article_count,
            'article_pending_count' => $article_pending_count,
      );
    }
}

class plugin_your_plugin_member extends plugin_your_plugin {
    public function profile_baseinfo_output() {
      return parent::profile_baseinfo_output();
    }
}

#### `install.php`
<?php
if(!defined('IN_DISCUZ')) {
    exit('Access Denied');
}

$sql = <<<EOF
CREATE TABLE IF NOT EXISTS `pre_your_plugin_articles` (
`aid` int(10) unsigned NOT NULL AUTO_INCREMENT,
`uid` int(10) unsigned NOT NULL,
`status` tinyint(1) NOT NULL DEFAULT '0',
PRIMARY KEY (`aid`),
KEY `uid` (`uid`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
EOF;

runquery($sql);

$finish = TRUE;

### 2. 修改模板
接下来,你需要修改个人空间的模板文件,以显示文章发布数量。

#### `template/your_plugin.htm`
<!--{if $article_count || $article_pending_count}-->
<div class="profile_info">
    <h3>文章统计</h3>
    <ul>
      <li>已发布文章: {$article_count}</li>
      <li>审核中文章: {$article_pending_count}</li>
    </ul>
</div>
<!--{/if}-->

### 3. 挂载插件
在插件中,你需要将模板内容挂载到个人空间的适当位置。可以通过`profile_baseinfo_output`钩子来实现。

#### `plugin_your_plugin.php`(续)
class plugin_your_plugin {
    public function profile_baseinfo_output() {
      global $_G;
      $uid = $_G['uid'];
      $article_count = C::t('#your_plugin#your_plugin_articles')->count_by_uid($uid);
      $article_pending_count = C::t('#your_plugin#your_plugin_articles')->count_by_uid($uid, 1);

      include template('your_plugin:your_plugin');
      return $return;
    }
}

### 4. 安装插件
将插件文件上传到Discuz!的`source/plugin/`目录下,然后在后台安装并启用插件。

### 5. 测试
登录到个人空间,查看是否显示了文章发布数量的统计信息。

### 注意事项
- 你需要确保数据库表`pre_your_plugin_articles`中有相应的数据。
- 如果用户发布文章时没有更新这个表,你需要在文章发布的相关代码中插入数据到`pre_your_plugin_articles`表。

通过以上步骤,你可以在个人空间首页显示用户的文章发布数量和审核中的文章数量。如果有更多复杂的需求,可以根据Discuz!的插件开发手册进一步扩展功能。
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。

Discuz智能体 发表于 2025-3-22 07:38:16

当然可以!在Discuz的个人空间中显示用户的文章发布数量以及审核中的文章数量是一个常见的需求。你可以通过修改模板和添加自定义代码来实现这个功能。

### 实现步骤:

1. **修改模板文件**:
   - 打开个人空间的模板文件,通常位于 `template/default/space/space_profile.htm` 或 `template/你的模板目录/space/space_profile.htm`。
   - 找到你想要显示文章统计信息的位置,比如在“统计信息”部分。

2. **获取文章数量**:
   - 你需要通过SQL查询获取用户的文章数量和审核中的文章数量。可以在模板中嵌入PHP代码来实现这一点。

3. **显示文章统计信息**:
   - 在模板文件中添加以下代码来显示文章数量和审核中的文章数量:

<?php
// 获取当前用户的UID
$uid = $_G['uid'];

// 查询已发布的文章数量
$published_count = DB::result_first("SELECT COUNT(*) FROM ".DB::table('portal_article')." WHERE uid='$uid' AND status='0'");

// 查询审核中的文章数量
$pending_count = DB::result_first("SELECT COUNT(*) FROM ".DB::table('portal_article')." WHERE uid='$uid' AND status='1'");

// 显示文章统计信息
echo "<li>文章发布数量: $published_count</li>";
echo "<li>审核中的文章数量: $pending_count</li>";
?>

4. **保存并更新缓存**:
   - 保存模板文件后,进入Discuz后台,更新模板缓存,确保修改生效。

### 注意事项:
- 如果你使用的是自定义模板,请确保在正确的模板文件中进行修改。
- 如果你对Discuz的模板和PHP代码不熟悉,建议在修改前备份相关文件,以免出现错误。

### 进一步优化:
- 你可以将这段代码封装成一个插件,以便更方便地管理和扩展功能。
- 如果你希望在前端显示更美观的样式,可以通过CSS对统计信息进行美化。

通过以上步骤,你就可以在个人空间的统计信息中显示用户的文章发布数量和审核中的文章数量了。如果你有更多问题或需要进一步的帮助,请随时提问!
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。
页: [1]
查看完整版本: 能不能在个人空间加入文章相关的信息?