- 這個教學主要是回覆網友 w91754 的提問。因為特殊原因,所以他希望能將自訂個人資料欄位「中文姓名」,取代原來已註冊的「英文帳號」,以顯示於所有版面。
如果您也自訂了相關的欄位(例如:「暱稱」),而希望取代原有的帳號,而顯示於所有版面的話,那麼您可以參考、修改之。
此修改的前提如下:
您的論壇已經由 ACP 自訂了個人資料欄位:中文姓名。
p.s.
欄位定義沿用「將自訂個人資料欄位顯示在會員列表的方法」之「real_name」。
- 針對 forumlist_body.html 頁面
--開啟--
includes/functions_display.php
--找到----之前,增加--代碼: 選擇全部
$sql = $db->sql_build_query('SELECT', array( 'SELECT' => $sql_array['SELECT'], 'FROM' => $sql_array['FROM'], 'LEFT_JOIN' => $sql_array['LEFT_JOIN'], 'WHERE' => $sql_where, 'ORDER_BY' => 'f.left_id', ));
--找到--代碼: 選擇全部
// 查詢中文姓名 $sql_array['LEFT_JOIN'][] = array('FROM' => array(PROFILE_FIELDS_DATA_TABLE => 'pf'), 'ON' => 'pf.user_id = f.forum_last_poster_id'); $sql_array['SELECT'] .= ', pf.pf_real_name';
--取代成--代碼: 選擇全部
'LAST_POSTER_FULL' => get_username_string('full', $row['forum_last_poster_id'], $row['forum_last_poster_name'], $row['forum_last_poster_colour']),
--找到--代碼: 選擇全部
'LAST_POSTER_FULL' => get_username_string('full', $row['forum_last_poster_id'], $row['pf_real_name'], $row['forum_last_poster_colour']),// 顯示中文姓名
--取代成--代碼: 選擇全部
$sql_array = array( 'SELECT' => 'm.*, u.user_colour, g.group_colour, g.group_type', 'FROM' => array( MODERATOR_CACHE_TABLE => 'm', ), 'LEFT_JOIN' => array( array( 'FROM' => array(USERS_TABLE => 'u'), 'ON' => 'm.user_id = u.user_id', ), array( 'FROM' => array(GROUPS_TABLE => 'g'), 'ON' => 'm.group_id = g.group_id', ), ), 'WHERE' => 'm.display_on_index = 1', );
--找到--代碼: 選擇全部
$sql_array = array( 'SELECT' => 'pf.pf_real_name, m.*, u.user_colour, g.group_colour, g.group_type', 'FROM' => array( MODERATOR_CACHE_TABLE => 'm', ), 'LEFT_JOIN' => array( array( 'FROM' => array(USERS_TABLE => 'u'), 'ON' => 'm.user_id = u.user_id', ), array( 'FROM' => array(GROUPS_TABLE => 'g'), 'ON' => 'm.group_id = g.group_id', ), // 查詢版主中文姓名 array( 'FROM' => array(PROFILE_FIELDS_DATA_TABLE => 'pf'), 'ON' => 'pf.user_id = u.user_id', ), ), 'WHERE' => 'm.display_on_index = 1', );
--取代成--代碼: 選擇全部
$forum_moderators[$f_id][] = get_username_string('full', $row['user_id'], $row['username'], $row['user_colour']);
代碼: 選擇全部
$forum_moderators[$f_id][] = get_username_string('full', $row['user_id'], $row['pf_real_name'], $row['user_colour']);// 顯示版主中文姓名
- 針對 viewforum_body.html 頁面
--開啟--
viewforum.php
--找到----之前,增加--代碼: 選擇全部
if ($forum_data['forum_type'] == FORUM_POST) { // Obtain announcements ... removed sort ordering, sort by time in all cases
--找到--代碼: 選擇全部
// 查詢(最後發表者)中文姓名 $sql_array['LEFT_JOIN'][] = array('FROM' => array(PROFILE_FIELDS_DATA_TABLE => 'pf'), 'ON' => 'pf.user_id = t.topic_last_poster_id'); $sql_array['SELECT'] .= ', pf.pf_real_name'; // 查詢(主題發表者)中文姓名 $sql_array['LEFT_JOIN'][] = array('FROM' => array(PROFILE_FIELDS_DATA_TABLE => 'pfd'), 'ON' => 'pfd.user_id = t.topic_poster'); $sql_array['SELECT'] .= ', pfd.pf_real_name AS topic_first_poster_name';
--取代成--代碼: 選擇全部
'LAST_POST_AUTHOR_FULL' => get_username_string('full', $row['topic_last_poster_id'], $row['topic_last_poster_name'], $row['topic_last_poster_colour']),
代碼: 選擇全部
'LAST_POST_AUTHOR_FULL' => get_username_string('full', $row['topic_last_poster_id'], $row['pf_real_name'], $row['topic_last_poster_colour']),// 顯示(最後發表者)中文姓名
- 一般而言,極少有人會有這個需求。因為要知道會員的中文姓名,只要瀏覽會員的個人資料、文章,甚至查詢會員列表即可。
- 會員自訂的中文姓名並非是唯一的,因此用它來取代原來的英文帳號,恐怕容易造成混亂,使得管理不易,必須謹慎使用。