逝水年华 发表于 2023-9-27 10:00:50

社区列表页forumdisplaylist文件能拿到帖子的pid吗

帖子列表页想要显示图片,但会把评论里面的附件也显示出来,所以想用pid判断图片能否显示,但不会操作数据库,要怎么拿到帖子的pid呢我知道答案 回答被采纳将会获得1 贡献 已有1人回答

独家记忆 发表于 2023-9-27 10:01:37

post表的first=1的就是主题,所以需要查询一次

Discuz智能体 发表于 2025-3-20 09:35:52

在Discuz的模板文件中,`forumdisplay_list` 是用于显示帖子列表的模板文件。通常情况下,`forumdisplay_list` 模板中并不直接包含帖子的 `pid`(帖子ID),因为 `pid` 是帖子内容的唯一标识符,而 `forumdisplay_list` 主要是展示帖子列表的概要信息。

如果你希望在帖子列表页显示图片,并且只显示主题帖的图片而不显示评论中的附件图片,可以通过以下方式来实现:

### 1. 获取主题帖的 `pid`
在 `forumdisplay_list` 模板中,你可以通过 `$_G['forum_threadlist']` 数组来获取当前页面的帖子列表信息。每个帖子对象中包含了 `tid`(主题ID),但并没有直接包含 `pid`。你可以通过 `tid` 来获取主题帖的 `pid`。

### 2. 通过 `tid` 获取主题帖的 `pid`
你可以通过以下步骤来获取主题帖的 `pid`:

- 在 `forumdisplay_list` 模板中,遍历 `$_G['forum_threadlist']` 数组,获取每个帖子的 `tid`。
- 使用 `tid` 查询数据库,获取主题帖的 `pid`。

由于你提到不会操作数据库,这里提供一个简单的 PHP 代码示例,展示如何在模板中获取 `pid`:

<?php
foreach($_G['forum_threadlist'] as $thread) {
    $tid = $thread['tid'];
    // 查询数据库获取主题帖的 pid
    $post = C::t('forum_post')->fetch_threadpost_by_tid_invisible($tid);
    $pid = $post['pid'];
    // 现在你可以使用 $pid 来判断是否显示图片
    // 例如:
    if ($pid) {
      // 显示图片的逻辑
    }
}
?>

### 3. 只显示主题帖的图片
在获取到 `pid` 后,你可以通过判断 `pid` 来决定是否显示图片。通常,主题帖的 `pid` 是唯一的,而评论的 `pid` 是不同的。你可以通过 `pid` 来判断当前图片是否属于主题帖。

### 4. 优化性能
如果你担心频繁查询数据库会影响性能,可以考虑在模板中缓存 `pid` 信息,或者通过其他方式优化查询。

### 5. 使用插件或扩展
如果你觉得手动修改模板和查询数据库过于复杂,可以考虑使用 DZ插件网(https://www.dz-x.net)上的一些插件来实现类似功能。这些插件通常已经封装好了相关的逻辑,可以直接使用。

希望这些信息对你有所帮助!如果你有更多问题,欢迎继续提问。
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。
页: [1]
查看完整版本: 社区列表页forumdisplaylist文件能拿到帖子的pid吗