Fandom Developers Wiki
Advertisement

有關創建模組的更多信息,請參見用戶標籤/擴展功能頁面

用戶標籤(UserTags)是一個在用戶檔案上能夠新增、移除、修改與重新排列標籤的腳本(「創始人」、 「管理員」、 「封禁」等出現在用戶全局檔案中用戶名旁邊的標籤)。 除了FANDOM本身的預設標籤之外,它允許您能根據需要來自行新增、移除與重新排列標籤。您也可以在認為合適的情況下自行發明客製化標籤並授予給用戶。

這個腳本同時結合了休假中用戶用戶勳章的功能-因此您只需要使用其中一個腳本以避免發生任何的腳本衝突。用戶標籤是一個最新的腳本且擁有最多的功能與自定義選項。

參見訊息牆用戶標籤查看論壇(並非指討論版)與訊息牆的「標籤」信息。

安裝方法

添加以下程式碼至個別維基的MediaWiki:ImportJS頁面:

dev:UserTags/code.js

然後,您還需要添加以下CSS至MediaWiki:Wikia.css

a.tag {
    color: inherit;
}

最後,添加此CSS至MediaWiki:Monobook.css

.tag:before {
    content: '['
}

.tag:after {
    content: ']'
}

.tag {
    font-size: 10pt;
    vertical-align: middle;
}

.tag-container > .tag:first-child {
    margin-left: 1ex;
}

完成以上程序後,基本的功能就大致構建完成了;然而,如果您想要自訂標籤,那麼請繼續瀏覽以下配置部分。

配置

這個腳本擁有大量的功能,因此以下解說的部分將有點冗長。您不需要瀏覽全部;事實上有些沒有要使用到的功能是可以忽略的 。您可以會想略過以下所有的例子說明,然後回到核心配置部分來瀏覽閱讀。 Template:Bgcolor

核心配置

添加以下程式碼至Common.js: (來源

window.UserTagsJS = {
	modules: {},
	tags: {},
	oasisPlaceBefore: ''
};

有一件事您必須的事是用戶是被劃分在不同的用戶組別裡,像是「封禁」、「管理員」、「行政員」或「休假中」等組別。這些組別在系統裡是以內部名稱來使用,因此在最後它們必須顯示在屏幕上,若要做到這一點,我們需要將這些內部名稱轉換為標籤使用。因為標籤說明了在屏幕背後所實際呈現的內容。

讓我們舉一個簡單的例子,我們假設您想要創建三個新標籤:「Editor of the Month」、「Featured」與「Template Guru」。要做到這一點,我們需要創建「montheditor」、「featured」與「template」組別。

window.UserTagsJS = {
	modules: {},
	tags: {
		// 用戶組別: { 相關標籤數據 }
		montheditor: { u:'Editor of the Month' },
		featured: { u:'Featured' },
		templates: { u:'Templates Guru' }
	}
};

一般而言,當您在創建新的組別與標籤時,這樣設定就已經足夠了,除了這個設定的預設是將標籤置於用戶檔案的最尾端。當您反而想要將這些標籤置於最前端時,您需要控制它的順序(order),因此您需要使用order配置選項。

window.UserTagsJS = {
	modules: {},
	tags: {
		montheditor: { u:'Editor of the Month', order:-1/0 },
		featured: 'Featured',
		templates: 'Templates Guru'
	}
};

這個order參數是一個從負無限大到正無限大之間的數值,較小的數字較接近初始值。在這個情況下,-1/0是一個負無限大的數值,因此此時標籤就會置於最前端。

您可以使用以下的任何參數來設計您的標籤:

參數 說明 類型 默認值
u 這個文本顯示當〔被標籤〕的用戶是一個未知姓別(即沒有在選項中設定性別)。 文本 依需求設定
m 這個文本顯示當〔被標籤〕的用戶是一位男性 文本 如果設定被移除, 就會以u值取代。
f 這個文本顯示當〔被標籤〕的用戶是一位女性 文本 如果設定被移除, 就會以u值取代。
order 控制整個標籤的順序。數字較小的會將標籤置於最前端而數字較大的則置於最尾端。 數值 10100
link 允許您可以為標籤添加連結至頁面或維基或互聯網上的任何網站。它可以接受一般的維基連結像是「Project:Administrators」或完整的URL像是「http://www.google.com/」。 若沒有設定,標籤則會顯示為純文本。請注意FANDOM以外的跨維基連結(像是「Wikipedia:Computer」)是不會運作,請使用完整的http://URL來替代。 文本
title 這個文本是用來設置當用戶的游標懸停在標籤上時的顯示方式。 文本

上述提及到的男性/女性/未設定的變數能支援英語以外的語言,像是義大利文,對男性/女性方面有不同的名稱來稱呼,在英文,或其它沒有區分性別的語言(即我們中文),您只能使用u(未知)欄位。 Template:Bgcolor/end Template:Bgcolor

覆蓋現有的標籤

有時候,現有存在的標籤可能無法滿足您的需要;也許您想要變更文字、控制或者為標籤添加一個連結。您可以簡單地在現有的用戶組別自訂您的標籤:

window.UserTagsJS = {
	modules: {},
	tags: {
		bureaucrat: { u:'Bureaucrat Tag', link:'Project:Bureaucrats' },
		inactive: { u: 'Has not edited recently' }
	}
};

設定完成後,系統會將行政員標籤由「Bureaucrat」顯示為「Bureaucrat Tag」並添加一個連結至Project:Bureaucrats頁面,休假中標籤則由「Inactive」顯示為「Has not edited recently」。另外,有時您可能希望只添加連結但不變更文字,您也可以這樣做:

window.UserTagsJS = {
	modules: {},
	tags: {
		bureaucrat: { link:'Project:Bureaucrats', order:1e101 }
	}
};

完成後,系統會為行政員標籤添加一個連結並且將標籤至於最尾端但不會變更文字。【注意:不變更文字的情況僅適用於內建的用戶組別;對於由自己創建的組別,是無法在標籤上指定文字的】

疑難雜症:若內建的用戶組別含有連字號(-),此時您必須在組別名稱前後以引號(')括起來,這樣系統才會執行:

window.UserTagsJS = {
	modules: {},
	tags: {
		// 這是錯誤示範,系統將不會執行
		bot-global: { link:'Project:Bots' }

		// 這樣才是正確的
		'bot-global': { link: 'Project:Bots' }
	}
};

Template:Bgcolor/end Template:Bgcolor

打造樣式/外觀

這個腳本是設計用來使標籤更容易製作成不同的外觀,每個標籤在內建組別上都有其CSS class為根本並且以'usergroup-'作為開頭。比方說:行政員(Bureaucrat)標籤有其CSS class usergroup-bureaucrat、休假中(Inactive)標籤也有其usergroup-inactive class等等。您自訂的標籤也會有其選定的組別,例如「Editor of the Month」其根本就來自於CSS class的usergroup-montheditor

若要更改顏色或外觀,只需簡單地添加以下程式碼規則至MediaWiki:Wikia.css,即如下所示:

.tag.usergroup-bureaucrat {
	background-color: gold !important;
	color: black !important;
}
.tag.usergroup-featured {
	background-color: blue !important;
	color: white !important;
}

完成之後,系統會將行政員標籤顯示為金色、自訂的精選用戶標籤則會顯示為藍色。您可以依需要自行添加任何CSS指令,包括邊框、添加背景圖案等等。

.tag.usergroup-bureaucrat {
	/* 此自訂標籤會顯示為紅色邊框與自訂背景 */
	background-image: url("http://site.com/image.png");
	border: 3px red solid;
	border-radius: 0;
}
.tag.usergroup-featured:before {
	/* 於「Feautured」標籤之前新增圖案 */
	content: url("http://site.com/magnifying-glass.gif");
}

有一件事要注意的是,內建組別的名稱會被簡化為英文,如果您的組別含有「asd%$ü@xyzüü」等非英文字母,那麼最後您必須將組別名稱全數替換為英文,即usergroup-asdxyz。但除非必要,否則一般是不會添加非英文的字母,因為這些字符無法被其他維基的用戶看見。

所有由用戶標籤腳本製作或管理的標籤,其tag-container CSS class皆含有span元素。因此您可以運用這個原理將tag-container設定為display: block,這樣就可以把所有的標籤移動到新的一行了(預設的標籤是顯示與用戶名同一行)。具體的效果可以查看例子部分

最後,用戶檔案中每一行的第一個標籤都有其專屬的CSS class。舉例來說,若bureaucrat(行政員)的標籤位於該行的最前端(即為第一個標籤),那麼您會在#UserProfileMasthead看到'usergroup-bureaucrat'的附屬標籤。您可以運用這個原理來為標籤更換不同顏色或者添加背景圖片。要注意在預設情況下,FANDOM的標籤會從該行的最前端開始排列,但其它有些鎖起來的標籤(特別是職員標籤),是無法移動標籤的位置的。這意味著擁有職員權限的用戶是由'usergroup-staff'來控制管理的(即使他們可能同時擁有本地管理員權限)。 Template:Bgcolor/end Template:Bgcolor

控制標籤的位置

在腳本的程式碼中,oasisPlaceBefore選項允許用戶可以控制標籤在Oasis版面的定位。預設情況下,它們通常會被放在內建標籤之後,但是您還是可以透過特定的CSS(jQuery)選擇器來變更標籤的位置。舉例來說,如果您想要將標籤放在Hi(用戶名)之後但是在H2(暱稱)之前,那麼您需要複製以下程式碼:

window.UserTagsJS = {
	modules: {},
	tags: {},
	oasisPlaceBefore: '> h2' // Place tags before the H2
};

Template:Bgcolor/end

配置

有關創建新模組的開發者文檔,請參見/擴展

現在您已經領略了基本的概念,我們可以開始進行實際操作的階段了。這個腳本被分成好幾個模組,每個模組皆能單獨的開啟或關閉。您不需要閱讀以下所有的說明,您可能會想略過舉例的部分然後回到這裡選擇想要設定的模組。

以下列出了內建的模組以及其配置選項。有關創建自訂的模組是有可能實現的,或者您也可以額外導入由其它開發者創建的模組。如果您想要使用其它用戶撰寫的第三芳模組,那麼您需要閱讀以下由該開發者所提供的相關文檔。 Template:Bgcolor

休假中(不活躍)

Enabled by default:
Default value: 30
Associated Group/Tag: 休假中
Works with Anonymous Users:

本模組會新增休假中組別至配置間隔內沒有任何編輯的用戶,您需要輸入一組數字(這組數字即代表天數)來指定用戶在間隔多少天沒編輯會被系統視為休假中。

UserTagsJS.modules.inactive = 50; // 50 天

若您需要一套更嚴謹的條件,那麼您可以利用命名空間來過濾編輯。舉例來說。如果您只考慮編輯條目的用戶視為活躍,而其它皆視為休假中(即使有用戶在近期有編輯過討論頁或其它命名空間,但只要沒有編輯條目皆會被系統視為休假中),那麼您可以將配置的格式替換為以下的形式:

UserTagsJS.modules.inactive = {
	days: 30,
	namespaces: [0],
	zeroIsInactive: true // 條目編輯次數為0 = 休假中
};

0代表條目的命名空間。此命名空間可以擁有不同的變數值,也可以只輸入該命名空間的名稱(即不輸入任何前綴),舉例來說:

UserTagsJS.modules.inactive = {
	days: 30,
	namespaces: [0, 'Talk', 'User talk', 'Forum'] // Edits must be to articles or talk pages or user talk pages or the forum to count, others don't count
};

Template:Bgcolor/end Template:Bgcolor

MediaWiki用戶組別

Enabled by default: Yes
Default value: ['禁止聊天', '封禁', '機器人', '行政員', '聊天主持人', '用戶查核', '內容版主', '委員', 助手', '回退員', '職員', '管理員', '討論版主', '先鋒', '反破壞小組']
Associated Group/Tag: 根據您所提供的組別來排列
Works with Anonymous Users:

本模組會新增用戶的MediaWiki組別至內建的組別列表,並且自動從伺服器下載標籤文本的翻譯至那些用戶組別中。本模組用來處理正式的用戶組別,例如聊天主持人, 行政員, 管理員, 禁止聊天回退員等。完整的列表可參見Special:ListUsers

您可以使用本模組來控制想要顯示的用戶組別:

UserTagsJS.modules.mwGroups = ['bureaucrat', 'sysop', 'rollback', 'bannedfromchat'];

Template:Bgcolor/end Template:Bgcolor

沒有編輯的全局帳戶

Enabled by default:
Associated Group/Tag: nonuser
Works with Anonymous Users:

這個模組會為零編輯的用戶添加標籤。對於使用Oasis版面的用戶而言效果並沒有很顯著,因為您可以直接在用戶的全局檔案上看見該用戶的編輯次數。但對於使用Monobook的用戶而言效果就會很顯著。這個模組沒有任何的配置選項,如果需要的話,只需要開啟它即可:

UserTagsJS.modules.nonuser = true; // Switch on

對於更有經驗的用戶而言,如果想要開啟它,您只需要以定制化JavaSciprt的邏輯來思考就能運用自如,但僅限於Monobook版面:

UserTagsJS.modules.nonuser = (mediaWiki.config.get('skin') === 'monobook');

Template:Bgcolor/end Template:Bgcolor

新註冊的帳戶

Enabled by default:
Associated Group/Tag: notautoconfirmed
Works with Anonymous Users:

這個模組會為最近創建但沒有編輯的新帳戶添加標籤; 也就是說, 註冊未滿4天且在任一維基未達10次編輯用戶會有此標籤。若要辨識魁儡帳戶,這個模組可能會很有幫助且能迅速辨認出來。如果需要的話,只需要開啟它即可。

UserTagsJS.modules.autoconfirmed = true; // Switch on

注意編輯次數與註冊時間的長度並非由模組本身來決定,而是由FANDOM來控制決定的,因此我們無法自己控制這些設定。 Template:Bgcolor/end Template:Bgcolor

新編輯者

Enabled by default:
Default value: { days: 4, edits: 10 }
Associated Group/Tag: newuser
Works with Anonymous Users:

本模組會在您的維基上根據設定的編輯天數或編輯次數來給予用戶標籤。基本上與autoconfirmed模組的功能相同,唯本模組僅在單一維基生效(即每個維基需單獨設定)。對於辨識出傀儡帳戶可能會很有用,也能較容易辨認出一些待在維基上有一段時間但對該維基的規範不太熟悉得新手編輯者。若要進行配置,您可以設定以下這些欄位,如果想使用預設值,請將該欄保留為空白:

UserTagsJS.modules.newuser = {
	days: 5, // 須參與維基5天
	edits: 10, // 而且必須擁有10次編輯才會移除標籤
	namespace: 0 // 編輯必須在條目命名空間內才列入計算
};

以下參數分為:

參數 說明 類型 默認值
days 輸入天數,從首次編輯的當天開始計算,設定標籤在幾天後自動移除 數字 4
edits 幾天後自動移除

輸入編輯次數,設定用戶需編輯幾次才能移除標籤

數字 10
namespace 輸入命名空間編號。將該欄設置為0會使系統只將條目命名空間列入計算(不將在沙盒、用戶頁面、用戶談話頁、頁面評論區、訊息牆等命名空間的編輯列入計算)。 數字 所有命名空間

本模板也支援更高級的格式,在合理的情況下,它允許用戶能根據自己的邏輯來自行定義。但基本 上您需要對JavaScript有初步的了解才能使用。它也讓您自訂複雜的算式,例如少於3天或小於10次編輯 或(小於30次編輯且少於5天)

UserTagsJS.modules.newuser = {
	namespace: 0, // [Optional] 編輯需在條目命名空間內才列入計算
	computation: function(days, edits) {
		// 若該算式為真,則他們會被標記為新用戶
		// 若該算式不為真,則他們不會被標記
		// 舉例來說,當他們擁有30次編輯,或他們已經參與維基10天,newuser標籤就會被移除 (以先發生的為主)
		return days < 10 && edits < 30;
	}
};

這裡的命名空間參數與第一個語法相同。注意此時daysedits參數並不會執行,原因是它們只能在沒有定義任何計算功能的情況下才會執行。 沒有定義任何計算功能的情況下才會執行。 Template:Bgcolor/end Template:Bgcolor

客製化

Enabled by default:
Associated Group/Tag: 根據您所創建的客製化用戶組
Works with Anonymous Users:

本模組能讓您在用戶的全局檔案上添加客製化標籤。關於客製化的創建方法已經在核心配置段落加以說明。如果需要,您也可以添加內建的用戶組;例如您可以為用戶添加inactive(休假中)標籤作為客製的用戶組。您也可以做一些怪異的動作例如為用戶添加假的founder(創始人)或bureaucrat(行政員)用戶組,讓用戶以為自己就是創始人或行政員。本模組的配置步驟稍微複雜一些,它映射出用戶的名字來排列用戶組。

UserTagsJS.modules.custom = {
	'用戶名1': ['montheditor', 'featured'], // 添加Add Editor of the Month + Featured組別
	'用戶名2': ['featured'], // 添加featured組別
	'用戶名3': ['featured', 'templates'], // 添加featured + templates guru組別
	'用戶名4': ['inactive'] // 總是不活躍
};

注意在這個列表中組別的order(控制)並不會影響到組別標籤在螢幕上顯示出來的內容,僅對標籤的控制參數有關聯。 Template:Bgcolor/end Template:Bgcolor

用戶過濾器

Enabled by default:
Associated Group/Tag: N/A,在這裡是移除而不是添加用戶組
Works with Anonymous Users:

本模組會向所指定的用戶移除用戶組別,像是假如你想要在某人身上移除founder(創始人)標籤,或者是您已經開啟inavtive(休假中)模組,但你不想要在特定的用戶上顯示這個標籤(儘管他符合休假中的條件)。這個格式與上面的客製化相同,只是它的效果剛好是相反的(客製化是添加用戶組;用戶過濾器則是移除用戶組)

UserTagsJS.modules.userfilter = {
	'用戶名1': ['inactive'], // 移除休假中組別
	'用戶名2': ['founder'], // 移除創始人組別
	'用戶名3': ['nonuser', 'newuser', 'inactive']
};

Template:Bgcolor/end Template:Bgcolor

元素過濾器

Enabled by default:
Default value: { sysop: ['bureaucrat', 'founder'], bureaucrat: ['founder'], chatmoderator: ['sysop', 'bureaucrat'] }
Associated Group/Tag: N/A,在這裡是移除而不是添加用戶組
Works with Anonymous Users: Yes

元素過濾器是更進階的用戶過濾器版本,除了操控用戶名之外,它也操控用戶組。這個格式 雖然不同,但在某些方面上仍然與用戶過濾器類似,只是影響的範圍更廣。

UserTagsJS.modules.metafilter = {
	'inactive': ['sysop', 'bureaucrat'], // 從擁有行政員與管理員組別的用戶移除休假中組別(儘管用戶符合休假中的條件)
	'sysop': ['bureaucrat'], // 從擁有行政員組別的用戶移除「管理員」標籤
	// 從管理員及同時擁有巡查員與回退員組別的用戶移除聊天主持人組別
	'chatmoderator': ['sysop', ['patroller', 'rollback']]
};

Template:Bgcolor/end Template:Bgcolor

集合(合併)

Enabled by default:
Associated Group/Tag: 根據您所指定的
Works with Anonymous Users:

本模組允許您能將多個所指定的組別合併成一個組別。例如將bureaucrat(行政員)與inactive(休假中)的組別合併成「inactive-bureaucrat(不活躍的行政員)」組別,或者將chatmoderator(聊天主持人)patroller(巡邏員)合併成「半管理員」或任何您想要取的名稱。

UserTagsJS.modules.implode = {
	'inactive-bureaucrat': ['bureaucrat', 'inactive'], // 添加inactive-bureaucrat組別,但同時移除bureaucrat與inactive的組別。
                                                           // 即將bureaucrat與inactive替換為 「inactive-bureaucrat」
	'inactive-sysop': ['sysop', 'inactive'],
	'half-sysop': ['chatmoderator', 'patroller', 'rollback']
};

如您所見,這個格式基本上與上文的元素過濾器相同,只是方式相反。 Template:Bgcolor/end Template:Bgcolor

集合

Enabled by default: No
Associated Group/Tag: As specified by you
Works with Anonymous Users: Yes

本模組與上文的集合相同,但沒有合併的功能。也就是說,您合併成一個組別,但原本的組別並不會被移除

UserTagsJS.modules.explode = {
	'vandal-patrol': ['rollback', 'patroller'] // 新增「vandal-patrol」組別,但同時並不會移除 rollback或patroller的組別。
};

Template:Bgcolor/end Template:Bgcolor

當被封鎖時隱藏所有組別

Enabled by default: 強制執行
Associated Group/Tag: N/A,在這裡為移除而非添加
Works with Anonymous Users:

本模組會將被封鎖用戶的組別全數移除,僅留下blocked組別。因本模組是預設強制開啟,除非您想要關閉它。一般來說若沒關閉它,那麼系統將不會對被封鎖的用戶標記為休假中或新編輯者(即使他們在被封禁前並沒有太多的編輯次數)。

UserTagsJS.modules.stopblocked = false; // 手動關閉

Template:Bgcolor/end Template:Bgcolor

該用戶是否被封鎖?

Enabled by default: FORCED (in Monobook only), No (in Oasis)
Associated Group/Tag: N/A, removes them not adds
Works with Anonymous Users: Yes

本模組會檢測該用戶是否被封鎖。由於Oasis已經自動在用戶全局檔案上顯示封禁標籤,因此使用Oasis的用戶不需要使用該本模組;因此本模組僅對使用Monobook的用戶特別有效。本模組在Monobook是預設強制開啟的,除非您選擇以手動關閉它。

UserTagsJS.modules.isblocked = true; // 於Oasis版面開啟(一般來說不太需要開啟); 或
UserTagsJS.modules.isblocked = false; // 於Monobbok版面關閉 (不影響Oasis)

Template:Bgcolor/end Template:Bgcolor

Advertisement