其實我po這篇文實在po得很心虛,因為大部分的程式碼都看不懂,只不過是參考了一些文章後又剛好被我改成功罷了!
想說平日受到各位前輩的幫助很多,雖然我還很外行,但總還是比上不足比下有餘吧?!
所以就大膽的來班門弄斧一番,希望能做點小小的回饋,請各位前輩多多指教~
PS.因為有些修改的地方我想用顏色標示出來比較方便對照閱讀,所以就沒有用語法code把它包起來了。
本文開始
新增自訂個人資料欄位:
方法細節請參考將自訂個人資料欄位顯示在會員列表的方法
我的欄位定義跟老師的不太一樣,請自行轉換。
以下是我的欄位定義
學號
欄位定義: student_id
欄位類型: 數字
姓名
欄位定義: name
欄位類型: 單行文字欄位
將自訂個人資料欄位顯示在會員列表(含排序功能):
參考連結
將自訂個人資料欄位顯示在會員列表的方法
Adding custom profile field to memberlist
PS. 如有使用不同的欄位定義,請將其下所有student_id及name置換成您所定義的名稱。(3欄以上只需依樣畫葫蘆)
prosilver styles
======================================================================================================
開啟
/styles/prosilver/template/memberlist_body.html
找到 (有兩處皆需做同樣的修改)
代碼: 選擇全部
<th class="posts"><a href="{U_SORT_POSTS}#memberlist">{L_POSTS}</a></th>
<th class="student_id"><a href="{U_SORT_STUDENT_ID}#memberlist">{L_STUDENT_ID}</a></th>
<th class="chinese_name"><a href="{U_SORT_NAME}#memberlist">{L_NAME}</a></th>
找到
代碼: 選擇全部
<td class="posts"><!-- IF memberrow.POSTS -->
<td><!-- IF memberrow.PROFILE_STUDENT_ID_VALUE -->{memberrow.PROFILE_STUDENT_ID_VALUE}<!-- ELSE --> <!-- ENDIF --></td>
<td><!-- IF memberrow.PROFILE_NAME_VALUE -->{memberrow.PROFILE_NAME_VALUE}<!-- ELSE --> <!-- ENDIF --></td>
======================================================================================================
開啟 (中文字的部分請打你想要顯示的文字)
/language/zh_cmn_hant/common.php
找到
代碼: 選擇全部
'JOINED' => '註冊時間',
'STUDENT_ID' => '學號',
'NAME' => '姓名',
找到
代碼: 選擇全部
'SORT_RANK' => '等級',
'SORT_STUDENT_ID' => '學號',
'SORT_NAME' => '姓名',
======================================================================================================
開啓
/memberlist.php
找到
代碼: 選擇全部
$sort_key_sql['m'] = 'u.user_rank';
$sort_key_text['x'] = $user->lang['SORT_STUDENT_ID'];
$sort_key_sql['x'] = 'fd.pf_student_id';
$sort_key_text['y'] = $user->lang['SORT_NAME'];
$sort_key_sql['y'] = 'fd.pf_name';
找到
代碼: 選擇全部
// Get us some users :D
代碼: 選擇全部
if(isset($sort_key_sql['x']) || isset($sort_key_sql['y']))
{
$sql = "SELECT u.user_id
FROM (" . USERS_TABLE . " u
$sql_from)
LEFT JOIN " . PROFILE_FIELDS_DATA_TABLE . " fd ON (u.user_id = fd.user_id)
WHERE u.user_type IN (" . USER_NORMAL . ', ' . USER_FOUNDER . ")
$sql_where
ORDER BY $order_by";
}
else
{
代碼: 選擇全部
$result = $db->sql_query_limit($sql, $config['topics_per_page'], $start);
代碼: 選擇全部
}
代碼: 選擇全部
'U_LIST_CHAR'
'U_SORT_STUDENT_ID' => $sort_url . '&sk=x&sd=' . (($sort_key == 'x' && $sort_dir == 'a') ? 'd' : 'a'),
'U_SORT_NAME' => $sort_url . '&sk=y&sd=' . (($sort_key == 'y' && $sort_dir == 'a') ? 'd' : 'a'),
======================================================================================================
如需更改預設的排序欄位可修改如下。
開啓
/memberlist.php
找到
$default_key = 'c'; // 'c'是未修改前預設排序欄位(註冊時間),可換成'x'即表以學號或'l'以最後訪問做為預設排序欄位。
$sort_key = request_var('sk', $default_key);
$sort_dir = request_var('sd', 'd'); // 'd'=降冪, 'a'=升冪
註1:
如有3欄以上,則改成
代碼: 選擇全部
if(isset($sort_key_sql['x']) || isset($sort_key_sql['y']) || isset($sort_key_sql['z']))
最後剩下的問題就是中文排序時怪怪,我也不知道怎麼去fix它~