會員可以在他們的「會員控制台」設定各種選項。
每個選項對於新的會員都有一個預設值,而對於已經存在的會員都有一個可以選擇的值,這個值可以是或不是該預設值。
這篇文章告訴您如何改變關於新的會員之預設值,以及改變關於已經存在的會員所選擇之值。
注意!會員仍然可以自由地改變預設值,或者改回他們已經選擇的值。
這篇文章「不」包含教您如何永久地強迫改變會員之前所選擇的值。
在 phpBB 有兩種控制方式(假如權限許可的話)可以讓會員在「會員控制台」設定會員選項。
有些選項在會員資料表中它們自己有專用的欄位。
其他選項是在會員資料表中會員選項欄位的總和之結果。
用來改變每個類型的方式是不同的,如下所述。
您需要知道如何開始做
- 每當您要執行資料庫查詢、更新前,第一件要做的事是受影響的資料表之備份。
在這篇文章中,所有的查詢都是在使用者資料表上運行,所以這是第一個要備份的。 - 當編輯 phpBB 檔案時,總是用一個「好」的純文本編輯器,可以將檔案儲存為 UTF-8(未含 BOM)格式。這裡是「好」的純文本編輯器列表。
- 底下的查詢假設您的資料表字首是「phpbb_」。如果不是,那麼您必須改變例子中的查詢為您所設定的資料表字首。
資料表字首可以在 phpMyAdmin 裡頭,或者是在您的 config.php 檔案中 $table_prefix 的值被看到。 - 如果您不懂如何運行資料庫查詢,那麼請看在知識庫的「Executing SQL Queries in phpMyAdmin」。
- 例子中的「WHERE user_type <> 2」情況,是指查詢的操作不包含機器人以及匿名者。
會員可以設定的某些選項(它們都定義在 includes/functions_user.php),在資料庫的使用者資料表中,都有各自的欄位以設定其值。
它們是:
代碼: 選擇全部
'user_notify' => 0,
'user_notify_pm' => 1,
'user_notify_type' => NOTIFY_EMAIL,
'user_allow_pm' => 1,
'user_allow_viewonline' => 1,
'user_allow_viewemail' => 1,
'user_allow_massemail' => 1,
要改變新會員的預設值,您只要編輯 includes/functions_user.php 檔案,將 0 改為 1,或反之亦然。
若要改變已經存在的會員們之選項,那麼您得要運行像這樣的查詢:
代碼: 選擇全部
UPDATE phpbb_users SET user_notify = 1 WHERE user_type <> 2;
如果您要改變新會員的「user_notify_type」選項,那麼您得編輯 includes/functions_user.php 檔案,
隨意將它改為「NOTIFY_EMAIL」(值 0),或改為「NOTIFY_IM」(值 1),或改為「NOTIFY_BOTH」 (值 2)。
若要改變已經存在的會員們之「user_notify_type」選項,那麼您得要運行像這樣的查詢:
代碼: 選擇全部
UPDATE phpbb_users SET user_notify_type = 1 WHERE user_type <> 2;
改變儲存在「user_options」欄位的值之選項
會員可以設定的某些選項(它們都定義在 includes/functions_convert.php)是 2 的次方值之總和,
而它們被儲存在「user_options」資料表中當作是一個單一的整數。它們是:
代碼: 選擇全部
'viewimg' => array('bit' => 0, 'default' => 1),
'viewflash' => array('bit' => 1, 'default' => 1),
'viewsmilies' => array('bit' => 2, 'default' => 1),
'viewsigs' => array('bit' => 3, 'default' => 1),
'viewavatars' => array('bit' => 4, 'default' => 1),
'viewcensors' => array('bit' => 5, 'default' => 1),
'attachsig' => array('bit' => 6, 'default' => 0),
'bbcode' => array('bit' => 8, 'default' => 1),
'smilies' => array('bit' => 9, 'default' => 1),
'popuppm' => array('bit' => 10, 'default' => 0),
'sig_bbcode' => array('bit' => 15, 'default' => 1),
'sig_smilies' => array('bit' => 16, 'default' => 1),
'sig_links' => array('bit' => 17, 'default' => 1),
代碼: 選擇全部
'user_options' => 230271,
例如,如果您想要將「view_sigs」預設值改為關閉(0),以及將「attach_sig」預設值改為開啟(1),
那麼您將減去 8(2 的 3 次方),因為「viewsigs」選項的位值是 3,而增加 64(2 的 6 次方),因為「attachsig」選項的位值是 6。
因此,您將編輯 includes/functions_user.php 檔案,將 230271 修改成 230327。
若要改變已經存在的會員們之選項值,由 0 到 1,則您必須使用「OR」或「|」在資料庫的「user_options」欄位運行查詢。
也就是說,需要計算權力分配給每個選項的位值(2 的幾次方)。
對「sig_off」而言,那個值是 64,因為它的位值是 6,而 2 的 6 次方是 64。
例如,如果每個會員的總值「並非都是」設定為開啟,那麼底下的運行,將改變「attach_sig」由「關閉」到「開啟」:
代碼: 選擇全部
UPDATE phpbb_users set user_options = user_options | 64 WHERE user_type <> 2;
這將減去適當的值,如果它「已經都是」包含在每個會員「user_options」的總值。
例如,底下的運行,將改變「view_sigs」由「開啟」到「關閉」:
代碼: 選擇全部
UPDATE phpbb_users set user_options = user_options ^ 8 WHERE user_type <> 2;
請注意,您也可以為特別的群組或會員改變選項。然而,你只能為已經存在的會員做改變,不能為未來的會員(沒有相關的這類外掛)。
例如,這個查詢將改變目前在「新註冊會員」群組的人之「user_allow_pm」選項,從開啟到關閉。
這是假設「新註冊會員」群組的「group_id」是 7(預設),
而是否運作則得看「新註冊會員」群組是否為該會員之預設會員群組:
代碼: 選擇全部
UPDATE phpbb_users SET user_allow_pm = 0 WHERE user_id IN(SELECT user_id FROM phpbb_user_group WHERE group_id = 7);
代碼: 選擇全部
UPDATE phpbb_users set user_options = user_options ^ 2 WHERE user_sig = '';
資料來源:
http://www.phpbb.com/kb/article/changin ... nd-values/