將「中文姓名」取代「英文帳號」於所有版面的方法

與 phpBB 3.0.x 相關主題。

版主: 版主管理群

回覆文章
頭像
心靈捕手
默默耕耘的老師
默默耕耘的老師
文章: 8510
註冊時間: 2004-04-30 01:54
來自: Taiwan

將「中文姓名」取代「英文帳號」於所有版面的方法

文章 心靈捕手 »

前言:
  • 這個教學主要是回覆網友 w91754 的提問。因為特殊原因,所以他希望能將自訂個人資料欄位「中文姓名」,取代原來已註冊的「英文帳號」,以顯示於所有版面。

    如果您也自訂了相關的欄位(例如:「暱稱」),而希望取代原有的帳號,而顯示於所有版面的話,那麼您可以參考、修改之。

    此修改的前提如下:
    您的論壇已經由 ACP 自訂了個人資料欄位:中文姓名。
    p.s.
    欄位定義沿用「將自訂個人資料欄位顯示在會員列表的方法」之「real_name」。
步驟:
  1. 針對 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']);// 顯示版主中文姓名
    
  2. 針對 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']),// 顯示(最後發表者)中文姓名
    
後記:
  1. 一般而言,極少有人會有這個需求。因為要知道會員的中文姓名,只要瀏覽會員的個人資料、文章,甚至查詢會員列表即可。
  2. 會員自訂的中文姓名並非是唯一的,因此用它來取代原來的英文帳號,恐怕容易造成混亂,使得管理不易,必須謹慎使用。
施比受有福,祝福您好運! ^_^
歡迎光臨★★心靈捕手★★ :: 討論區
https://wang5555.dnsfor.me/phpBB3/
回覆文章

回到「3.0」