久久久久av_欧美日韩一区二区在线_国产精品三区四区_日韩中字在线

Discuz! 官方交流社區

標題: 如何在帖子列表頁展示作者頭像和版塊名稱? [打印本頁]

作者: qzuser1212    時間: 2023-3-27 22:44
標題: 如何在帖子列表頁展示作者頭像和版塊名稱?
本帖最后由 qzuser1212 于 2023-3-28 00:11 編輯

是的,又是請教chatgpt得到的經驗,分享給大家

看了官方文檔,找了很多地方都沒有解決,今天試著問問chatgpt,測試了一下可用。



問:如何在discuz帖子列表頁獲取作者頭像和版塊名稱
答:在 Discuz 帖子列表頁中,可以通過以下方式獲取作者頭像和版塊名稱:



  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里你想放的位置,再改下模板樣式就可以了


作者: qzuser1212    時間: 2023-3-27 23:01
新手且PHP沒有學過 所以大佬們有更好的方法,還請賜教哦
作者: 專家    時間: 2023-3-27 23:02
啊這,這個chatgpt在亂講,當然它可能不那么了解Discuz倒也可以理解。
正常不應該是這么干的
作者: qzuser1212    時間: 2023-3-28 00:08
專家 發表于 2023-3-27 23:02
啊這,這個chatgpt在亂講,當然它可能不那么了解Discuz倒也可以理解。
正常不應該是這么干的 ...

應該怎么做呢?有相關的教程么?我找了一圈沒找到
作者: 三郎    時間: 2023-4-14 02:15
有效果圖看看嗎?
作者: huiyfking    時間: 2023-4-14 22:40
學習一下~~~~~~~~~~~~~~~
作者: s77    時間: 2023-5-13 01:52
效果如何呢
作者: 壓力山大    時間: 2023-11-4 14:52
學習一下。
作者: cxx0515    時間: 2023-12-5 08:54
學習一下,感謝分享
作者: 5476741    時間: 2024-1-4 21:10
如何在帖子列表頁展示作者頭像和版塊名稱?
作者: huiyfking    時間: 2024-1-21 21:33
學習一下
作者: ?情?魔?    時間: 2024-3-10 07:28
看看學習下
作者: 生活    時間: 2024-9-7 10:53
看看了。。。。。。
作者: Levno    時間: 2025-7-29 16:50
學習一下~




歡迎光臨 Discuz! 官方交流社區 (http://www.9999xn.com/) Powered by Discuz! W1.0