12下一页
返回列表 发帖
查看: 2047|回复: 10

如何在帖子列表页展示作者头像和版块名称?

63

主题

393

回帖

565

积分

应用开发者

贡献
9 点
金币
25 个
QQ
发表于 2023-3-27 22:44:59 | 显示全部楼层 |阅读模式


是的,又是请教chatgpt得到的经验,分享给大家

看了官方文档,找了很多地方都没有解决,今天试着问问chatgpt,测试了一下可用。



问:如何在discuz帖子列表页获取作者头像和版块名称
答:在 Discuz 帖子列表页中,可以通过以下方式获取作者头像和版块名称:

  • 获取作者头像
    可以使用 Discuz 提供的 avatar 函数获取作者头像。例如:
    1. {avatar($thread['authorid'], 'small')}
    复制代码
    这行代码会显示作者 ID 为 $thread['authorid'] 的用户头像,大小为 small。
  • 获取版块名称
    可以使用 Discuz 提供的 forum 函数获取版块名称。例如:
    1. {forum($thread['fid'])['name']}
    复制代码

    这行代码会显示版块 ID 为 $thread['fid'] 的版块名称。
    请注意,以上代码仅适用于 DiscuzX 3.x 版本,不同版本和不同模板可能会有所差异。同时,为了避免频繁访问数据库,建议在获取头像和版块名称时进行缓存处理。例如,可以使用 Discuz 提供的 DB 类进行缓存操作,如下所示:
    // 获取用户头像并进行缓存


  1. $avatar = DB::result_first("SELECT avatar FROM ".DB::table('common_member')." WHERE uid=".$thread['authorid']);
  2. $avatarurl = avatar($thread['authorid'], 'small');
  3. C::t('common_member')->update($thread['authorid'], array('avatar' => $avatarurl));
复制代码

      // 获取版块名称并进行缓存


  1. $forum = DB::fetch_first("SELECT name FROM ".DB::table('forum_forum')." WHERE fid=".$thread['fid']);
  2. C::t('forum_forum')->update_cache($thread['fid'], array('name' => $forum['name']));
复制代码


     以上代码会先从数据库中获取作者头像和版块名称,然后将其进行缓存,避免频繁访问数据库。


试用了第一段代码,头像出来了,但是2的版块名称出不来。所以得用下边的数据库获取的代码,但如果直接放这段代码到模板文件里会报错。
于是问了chatgpt
答:是的,您不能直接将这些 PHP 代码放入 Discuz 的 HTML 模板文件中,因为 HTML 文件不能解析 PHP 代码。如果您需要在模板中执行 PHP 代码,则必须使用 Discuz 提供的模板标签,或将 PHP 代码放在 Discuz 的模板引擎文件中。

在您的情况下,您需要将这些 PHP 代码放入模板引擎文件中。模板引擎文件通常是一个 PHP 文件,它包含在 Discuz 的模板引擎中,用于处理模板中的变量和标签。您可以使用以下步骤将 PHP 代码放入模板引擎文件中:

找到模板引擎文件。
模板引擎文件通常位于 source/module/forum/forumdisplay.php 文件中。在该文件中,您可以找到类似以下的代码段:


  1. $sortid = isset($_GET['sortid']) ? intval($_GET['sortid']) : 0;
  2. $sortoptionarray = $sortid ? C::t('forum_threadclass')->get_by_typeid($sortid) : array();
  3. $sortid = $sortoptionarray ? $sortid : 0;

  4. $seodata = array('first' => $thread['subject'], 'name' => $forum['name'], 'fupname' => $forum['name']);
  5. foreach ($sortoptionarray as $sortoption) {
  6.     $seodata['first'] .= ' ' . $sortoption['optionname'];
  7. }

  8. ...
复制代码


在这个文件中,您可以看到 $forum 变量已经被定义并初始化,所以您可以将您的代码添加到此处。

将代码添加到模板引擎文件中。
将以下代码添加到模板引擎文件的合适位置,以获取版块名称并更新缓存:


  1. $forum = DB::fetch_first("SELECT name FROM ".DB::table('forum_forum')." WHERE fid=".$thread['fid']);
  2. C::t('forum_forum')->update_cache($thread['fid'], array('name' => $forum['name']));
复制代码


保存模板引擎文件并上传到服务器。
保存模板引擎文件后,将其上传到您的服务器中,以确保 Discuz 可以正确地读取文件。

请注意,修改 Discuz 模板和代码可能会导致系统出现问题,因此在修改之前,最好备份所有文件和数据库。


这个方法我没有测试,因为要做模板肯定不能要求每个用户都改代码
于是又问了chatgpt

问:不改模板引擎文件 直接改模板文件不行吗
答:一般情况下,不建议在模板文件中添加这样的 PHP 代码,因为这会使模板文件变得混乱不堪,难以维护和修改。另外,模板文件中只能使用模板标签和模板变量,不能直接使用 PHP 代码。

如果您非常确定要在模板文件中添加 PHP 代码,您可以使用 Discuz 的模板标签 {eval} 来执行 PHP 代码。例如,您可以将以下代码添加到您的模板文件中,以获取版块名称并更新缓存:
游客,如果您要查看本帖隐藏内容请回复

但是,我仍然建议您将这些 PHP 代码放入模板引擎文件中,以避免对模板文件进行过多的更改。

最后这段代码放到forumdisplay_list.htm里你想放的位置,再改下模板样式就可以了

回复

使用道具 举报

63

主题

393

回帖

565

积分

应用开发者

贡献
9 点
金币
25 个
QQ
 楼主| 发表于 2023-3-27 23:01:20 | 显示全部楼层
新手且PHP没有学过 所以大佬们有更好的方法,还请赐教哦
⭐️推荐插件
Uniapp小程序和APP
所有插件打包

⭐️推荐模板
美化APP手机版
小米社区
回复 支持 反对

使用道具 举报

12

主题

1598

回帖

2700

积分

Giter

贡献
142 点
金币
352 个
发表于 2023-3-27 23:02:26 | 显示全部楼层
啊这,这个chatgpt在乱讲,当然它可能不那么了解Discuz倒也可以理解。
正常不应该是这么干的
回复 支持 反对

使用道具 举报

63

主题

393

回帖

565

积分

应用开发者

贡献
9 点
金币
25 个
QQ
 楼主| 发表于 2023-3-28 00:08:49 来自手机 | 显示全部楼层
专家 发表于 2023-3-27 23:02
啊这,这个chatgpt在乱讲,当然它可能不那么了解Discuz倒也可以理解。
正常不应该是这么干的 ...

应该怎么做呢?有相关的教程么?我找了一圈没找到
回复 支持 反对

使用道具 举报

0

主题

12

回帖

23

积分

初学乍练

贡献
0 点
金币
9 个
发表于 2023-4-14 02:15:06 | 显示全部楼层
有效果图看看吗?
回复 支持 反对

使用道具 举报

0

主题

17

回帖

24

积分

初学乍练

贡献
0 点
金币
6 个
发表于 2023-4-14 22:40:24 | 显示全部楼层
學習一下~~~~~~~~~~~~~~~
回复

使用道具 举报

s77

6

主题

60

回帖

102

积分

渐入佳境

贡献
0 点
金币
19 个
发表于 2023-5-13 01:52:47 | 显示全部楼层
效果如何呢
回复 支持 反对

使用道具 举报

0

主题

3

回帖

3

积分

初学乍练

贡献
0 点
金币
0 个
发表于 2023-11-4 14:52:56 | 显示全部楼层
学习一下。
回复

使用道具 举报

2

主题

34

回帖

43

积分

初学乍练

贡献
0 点
金币
5 个
发表于 2023-12-5 08:54:13 | 显示全部楼层
学习一下,感谢分享
回复 支持 反对

使用道具 举报

0

主题

5

回帖

11

积分

初学乍练

贡献
0 点
金币
5 个
发表于 2024-1-4 21:10:46 | 显示全部楼层
如何在帖子列表页展示作者头像和版块名称?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 关注公众号
  • 有偿服务微信
  • 有偿服务QQ

手机版|小黑屋|Discuz! 官方交流社区 ( 皖ICP备16010102号 |皖公网安备34010302002376号 )|网站地图|star

GMT+8, 2024-3-3 17:55 , Processed in 0.042125 second(s), 6 queries , Redis On.

Powered by Discuz! W1.0 Licensed

Cpoyright © 2001-2024 Discuz! Team.

关灯 快速发帖
有偿服务QQ
有偿服务微信
返回顶部
快速回复 返回顶部 返回列表