qzuser1212 發表於 2023-3-27 22:44:59

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

<br /><br />是的,又是请教chatgpt得到的经验,分享给大家<br /><br />看了官方文档,找了很多地方都没有解决,今天试着问问chatgpt,测试了一下可用。<br /><br /><br /><br /><strong><font size="4">问:如何在discuz帖子列表页获取作者头像和版块名称</font></strong><br /><font size="4"><strong>答:</strong></font>在 Discuz 帖子列表页中,可以通过以下方式获取作者头像和版块名称:<br /><br /><ul type="1" class="litype_1"><li>获取作者头像<br />可以使用 Discuz 提供的 avatar 函数获取作者头像。例如: <br /><ol><li>{avatar($thread['authorid'], 'small')}<br /><li></ol>这行代码会显示作者 ID 为 $thread['authorid'] 的用户头像,大小为 small。<li>获取版块名称<br />可以使用 Discuz 提供的 forum 函数获取版块名称。例如:<br /><ol><li>{forum($thread['fid'])['name']}</ol><br />这行代码会显示版块 ID 为 $thread['fid'] 的版块名称。<br /><strong>请注意,以上代码仅适用于 DiscuzX 3.x 版本,不同版本和不同模板可能会有所差异。同时,为了避免频繁访问数据库,建议在获取头像和版块名称时进行缓存处理。例如,可以使用 Discuz 提供的 DB 类进行缓存操作,如下所示:<br /></strong>// 获取用户头像并进行缓存<br /></ul><br /><ol><li><br /><li>$avatar = DB::result_first(&quot;SELECT avatar FROM &quot;.DB::table('common_member').&quot; WHERE uid=&quot;.$thread['authorid']);<br /><li>$avatarurl = avatar($thread['authorid'], 'small');<br /><li>C::t('common_member')-&gt;update($thread['authorid'], array('avatar' =&gt; $avatarurl));</ol><br />&nbsp; &nbsp;&nbsp; &nbsp;// 获取版块名称并进行缓存<br /><br /><ol><li><br /><li>$forum = DB::fetch_first(&quot;SELECT name FROM &quot;.DB::table('forum_forum').&quot; WHERE fid=&quot;.$thread['fid']);<br /><li>C::t('forum_forum')-&gt;update_cache($thread['fid'], array('name' =&gt; $forum['name']));</ol><br /><br />&nbsp; &nbsp;&nbsp;&nbsp;以上代码会先从数据库中获取作者头像和版块名称,然后将其进行缓存,避免频繁访问数据库。<br /><br /><br /><strong>试用了第一段代码,头像出来了,但是2的版块名称出不来。所以得用下边的数据库获取的代码,但如果直接放这段代码到模板文件里会报错。</strong><br /><strong>于是问了chatgpt</strong><br /><strong>答:</strong>是的,您不能直接将这些 PHP 代码放入 Discuz 的 HTML 模板文件中,因为 HTML 文件不能解析 PHP 代码。如果您需要在模板中执行 PHP 代码,则必须使用 Discuz 提供的模板标签,或将 PHP 代码放在 Discuz 的模板引擎文件中。<br /><br />在您的情况下,您需要将这些 PHP 代码放入模板引擎文件中。模板引擎文件通常是一个 PHP 文件,它包含在 Discuz 的模板引擎中,用于处理模板中的变量和标签。您可以使用以下步骤将 PHP 代码放入模板引擎文件中:<br /><br />找到模板引擎文件。<br />模板引擎文件通常位于 source/module/forum/forumdisplay.php 文件中。在该文件中,您可以找到类似以下的代码段:<br /><br /><ol><li><br /><li>$sortid = isset($_GET['sortid']) ? intval($_GET['sortid']) : 0;<br /><li>$sortoptionarray = $sortid ? C::t('forum_threadclass')-&gt;get_by_typeid($sortid) : array();<br /><li>$sortid = $sortoptionarray ? $sortid : 0;<br /><li><br /><li>$seodata = array('first' =&gt; $thread['subject'], 'name' =&gt; $forum['name'], 'fupname' =&gt; $forum['name']);<br /><li>foreach ($sortoptionarray as $sortoption) {<br /><li>&nbsp; &nbsp; $seodata['first'] .= ' ' . $sortoption['optionname'];<br /><li>}<br /><li><br /><li>...</ol><br /><br />在这个文件中,您可以看到 $forum 变量已经被定义并初始化,所以您可以将您的代码添加到此处。<br /><br />将代码添加到模板引擎文件中。<br />将以下代码添加到模板引擎文件的合适位置,以获取版块名称并更新缓存:<br /><br /><ol><li><br /><li>$forum = DB::fetch_first(&quot;SELECT name FROM &quot;.DB::table('forum_forum').&quot; WHERE fid=&quot;.$thread['fid']);<br /><li>C::t('forum_forum')-&gt;update_cache($thread['fid'], array('name' =&gt; $forum['name']));</ol><br /><br />保存模板引擎文件并上传到服务器。<br />保存模板引擎文件后,将其上传到您的服务器中,以确保 Discuz 可以正确地读取文件。<br /><br />请注意,修改 Discuz 模板和代码可能会导致系统出现问题,因此在修改之前,最好备份所有文件和数据库。<br /><br /><br /><strong>这个方法我没有测试,因为要做模板肯定不能要求每个用户都改代码</strong><br /><strong>于是又问了chatgpt</strong><br /><br /><strong><font size="4">问:不改模板引擎文件 直接改模板文件不行吗</font></strong><br /><strong><font size="4">答:</font></strong>一般情况下,不建议在模板文件中添加这样的 PHP 代码,因为这会使模板文件变得混乱不堪,难以维护和修改。另外,模板文件中只能使用模板标签和模板变量,不能直接使用 PHP 代码。<br /><br />如果您非常确定要在模板文件中添加 PHP 代码,您可以使用 Discuz 的模板标签 {eval} 来执行 PHP 代码。例如,您可以将以下代码添加到您的模板文件中,以获取版块名称并更新缓存:<br />但是,我仍然建议您将这些 PHP 代码放入模板引擎文件中,以避免对模板文件进行过多的更改。<br /><br />最后这段代码放到forumdisplay_list.htm里你想放的位置,再改下模板样式就可以了<br /><br />作者<em>, </em>头像<em>, </em>size<em>, </em>获取<em>, </em>帖子

qzuser1212 發表於 2023-3-27 23:01:20

新手且PHP没有学过 所以大佬们有更好的方法,还请赐教哦

专家 發表於 2023-3-27 23:02:26

啊这,这个chatgpt在乱讲,当然它可能不那么了解Discuz倒也可以理解。<br />正常不应该是这么干的

qzuser1212 發表於 2023-3-28 00:08:49

<br />应该怎么做呢?有相关的教程么?我找了一圈没找到

三郎 發表於 2023-4-14 02:15:06

有效果图看看吗?

huiyfking 發表於 2023-4-14 22:40:24

學習一下~~~~~~~~~~~~~~~

s77 發表於 2023-5-13 01:52:47

效果如何呢

压力山大 發表於 2023-11-4 14:52:56

学习一下。

cxx0515 發表於 2023-12-5 08:54:13

学习一下,感谢分享

5476741 發表於 2024-1-4 21:10:46

如何在帖子列表页展示作者头像和版块名称?
頁: [1]
查看完整版本: 如何在帖子列表页展示作者头像和版块名称?