說明:模板
本頁為操作指南,用於介紹中文維基百科社群的一些實作和操作方式。 本文只是論述,不屬於方針或指引。如果本指南與方針或指引起衝突或不一致,請以方針或指引的條文為準。 |
維基代碼 |
---|
模板(英語:Template)是維基百科的系統中的一項功能,類似於電腦語言中的子程序。本文提供在MediaWiki建立模板的技術指南;維基百科使用MediaWiki並對模板有一定的規範。另外也可參考:
- 模板擴充語法:Help:解析器函數
- 模板分類:Category:維基百科模板和Wikipedia:模板訊息
- 模板命名空間的幫助資訊:Wikipedia:模板命名空間
- 模板索引:所有模板
什麼是模板,為什麼要用模板
[編輯]模板是您在條目的上方看到各種各樣的條條框框,比如「本條目需要清理」、「本條目應避免有陳列雜項、瑣碎資料的部分。」等。有時候條目右側也能看到一個灰色的框,裏面寫着有關這個條目的基本資訊,比如一位藝人的「生日」、「出生地」、「國籍」等。條目最下方有時候也會見到一個大方框,裏面陳列着和這個條目相關的內容(稱為「導航模板」,比如這個)。這些都是「模板」。模板的形式還有很多很多,有的是直接鑲嵌在條目正文裏面的,有的雖然看不到但是卻依然影響到條目顯示的內容(比如字詞轉換模板)。但是如果你翻閱這些條目的原始碼,就會發現這些模板都長成類似「{{模板名字|模板參數}}
」這樣子,用一對雙大括號將模板的內容擴起來。
為什麼會有這些模板?有時候,一段內容會在多個條目中反覆出現,這時候如果一遍一遍複製那些內容,一遍遍貼上到各個條目裏面可能不太方便,而且大段大段的對閱讀也有影響;而且,萬一日後內容有變動,又要進到各個條目裏面把這些內容一個個全改一遍,這會產生大量的重複勞動。模板就是為了這樣的目的:只需要給重複的部分放到一個模板裏、起個名字,以後需要用到這些內容的時候直接呼叫模板就行了。需要變更內容的時候,也只需要在模板里改動,那些呼叫了模板的條目也會隨着模板自動變更,增加了工作效率。
所有的模板都會放在一個叫「Template」的命名空間,即「模板命名空間」,標題名稱是「Template:模板名字
」、「模板:模板名字
」這樣。在寫作條目時,只需要在合適的位置放上「{{模板名字}}
」,模板就會在合適的地方顯示出來了。有時候對於同一個模板,雖然顯示的內容稍有差異,但大體的框架是一致的,這個時候就會用到「模板參數」,即「{{模板名字|模板參數}}
」的形式,具體的用法請見下文。
需要注意的一點是,維基百科的系統——MediaWiki本身並不會自動為條目掛上模板。因此,當看到條目裏面顯示了「本條目需要補充更多來源」等文字時,是其他維基人人工將模板掛上去。在模板所述問題修正之後,可以自行將模板從原始碼中刪除,這段提示文字將自動消失。
呼叫模板
[編輯]呼叫模板就是把模板內容嵌入到呼叫方頁面。
在Template命名空間里的頁面才是模板,所以模板都由Template:開頭,在中文維基,以模板:開頭同樣有效。呼叫時必須使用模板標籤,即{{Template:模板名}}的形式,「Template:」可以在無歧義的情況下省略。如Template:tc是一個模板,內容為「in」。如果把{{tc}}
加入某個頁面,則{{tc}}的內容會在此頁面顯示,即{{tlc|...}}
。
如果「Template:模板名」不存在,{{模板名}}
的作用就與[[Template:模板名]]
相同,提供一個連接到不存在頁面的連結:Template:模板名。
模板可以被重新導向。例如Template:請求來源被重新導向到Template:Citation needed,所以{{请求来源}}效果等同於{{Citation needed}}。有時移動模板並建立重新導向後,原呼叫重新導向的頁面可能會出錯,只要過一段時間(幾小時)等伺服器清除快取即可。
設定參數
[編輯]在模板名後可用管道符(即豎線)追加參數(這種做法稱為傳參)。參數有編號參數和命名參數兩種。在模板的說明文件里一般會列出該模板的所有參數。
例如,{{fact|1=維基百科的編者大部分是男性|time=2024-12-28}}
得到「維基百科的編者大部分是男性[來源請求]」。
「維基百科的編者大部分是男性」的參數名為1
。「2024-12-28」的參數名為time
。參數名為數字就是編號參數,否則就是命名參數。
編號參數的參數名(1、2、3、4等)和等號可以省略。上例的效果和{{fact|维基百科的编者大部分是男性|time=2024-12-28}}
是一樣的。注意,以省略形式賦值的第一個編號參數的參數名是1,而不是很多程式語言習慣的0。
呼叫 | 效果 |
---|---|
{{catnav|頁面分類|地理|大洲|亞洲|亞洲國家}} |
|
{{catnav|0=页面分类|1=地理|2=大洲|3=亞洲|4=亞洲國家}} |
|
{{catnav|1=頁面分類|2=地理|3=大洲|4=亞洲|5=亞洲國家}} |
|
{{catnav|5=亞洲國家|4=亞洲|3=大洲|2=地理|1=頁面分類}} |
|
{{catnav|1=頁面分類|2=地理|大洲|4=亞洲|亞洲國家}}
要麼不省略編號參數名,要麼全都省略,否則極易出錯。 可以理解為參數1第一次賦值為「頁面分類」,然後「大洲」作為隱藏的參數1第二次賦值覆蓋了第一次賦值的內容。 如此類推。 在編輯預覽中會警示這種重複賦值問題。 |
需要跳脫的參數
[編輯]- 如果參數值中含有等號(
=
),傳參時則必須使用參數名,即使是編號參數也要使用。也可以使用{{=}}
代替[1]。 - 如果參數值中含有兩個連續的右大括號(
}}
),呼叫參數時必須將其放入nowiki標記中,例如<nowiki>}}</nowiki>
。 - 如果參數值中含有豎線(
|
),呼叫參數時必須將其放入nowiki標記中,例如<nowiki>|</nowiki>
,或用{{!}}
代替[1][2]。 - 參數值中可以包含一對雙方括號(即兩個左方括號,兩個右方括號),用於連結一個條目,或是其他命名空間的頁面,但不能先寫右雙方括號,然後再接左雙方括號。例如Template:數數1中的內容是:
[[一二{{{1}}}六七]]
{{數數1|三]]四[[五}}
會造成模板呼叫失敗,顯示為:
{{數數1|三]]四[[五}}
- 而不是你所期望的
一二三四五六七
{{數數1|三{{))!}}四{{((!}}五}}
會變成:
一二三四五六七
替換引用
[編輯]放置修飾詞「subst:」(substitute,替代)位於模板標籤的「{{」之後,模板名之前,即可替換引用。它能在呼叫方頁面儲存時,將所調模板展開,而不是每次顯示頁面的時候讀取有關模板。這樣可以按模板當前的形式編輯條目,並使條目免受模板變化的影響,並減輕伺服器負擔。所以對模板的替換引用不會顯示在頁面歷史和模板的連入頁面中。
例如{{fact/auto}}和{{未簽名}}都是應被替換引用的模板。
嵌入頁面
模板標籤不僅可以呼叫模板,也可以呼叫(嵌入)其他頁面,就是像模板一樣把被調頁面的內容加入到呼叫方頁面。
{{帮助讨论:模板}}
會將說明討論:模板中的內容加入到該頁來。- 如果呼叫主命名空間的條目,為了避免和呼叫同名模板產生歧義,需要在條目名前加冒號。如
{{:福寿岭站}}
會將福壽嶺站中的內容加入到該頁來,而不是呼叫{{福寿岭站}}(Template:福壽嶺站)。
這樣一來,所有頁面都可以當作是模板。但是,使用在模板命名空間的頁面(即真正的模板)有以下獨特的好處:
- 所有被頁面使用的模板都在頁面編輯頁顯示出來。
- 當模板改變時,所有使用模板頁面的伺服器快取(相對於瀏覽器快取)自動被清空;而位於其他命名空間的頁面,伺服器快取往往要手工清空。
而模板命名空間以外的頁面一般在如下情況下被嵌入其他頁面:
- 引用維基百科命名空間的介面訊息。
- 將一個長頁面(可以屬於主條目命名空間,假設名字就叫做「長頁面」,例子)拆分為較短頁面時,可以將短頁面命名為「長頁面/第一部分」、「長頁面/第二部分」等,然後使用
{{/第一部分}}<br />{{/第二部分}}
來拼成長頁面。Wikipedia:互助客棧 (全部)就是一個好例子。
一個模板可以呼叫另一個模板,它也可以呼叫它自己,但自我呼叫只有一層有效。例如:Template:模板1的內容是“一次,{{模板1}}”
,在Template:模板1中將顯示:“一次,一次,{{模板1}}”,如果其他條目呼叫該模板,所加入的文字將是
一次,檢測到模板迴圈:Template:模板1
在2010年前,如果把其他模板重新導向至某模板,該模板又引用重新導向,且多次自我呼叫均為不同重新導向,則該模板可以實現多次自我呼叫。MediaWiki後來取消此功能。如{{RR|7}}的結果為RR-檢測到模板迴圈:Template:RR7。
模板中變數在呼叫模板的地方被賦值。因此,如果一個模板中含有{{PAGENAME}}
,該模板被某頁面呼叫,相應的位置顯示的將是呼叫方的名稱,而不是被調模板的名稱。
一個頁面所呼叫的所有模板都在該頁編輯頁面中列出,並提供相應的連結,而且:
- 一個段落的編輯頁面不會列出任何模板;
- 編輯舊版本的頁面,這個列表仍然是當前最新的;
- 可加入模板擴展語法#if, #ifeq, #ifexist, #ifexpr, 或 #switch;
- 如果不真正提交編輯,僅僅在預覽中使用的模板不被列出。
- 如果模板名裏面巢狀另一個模板,如{{{{tc}}{{CURRENTDAY}}}},則會得到{{
{{tlc|...}}
28}};編輯頁面裏會顯示[[Template:{{tlc|...}}
28]]。 - 模板名#後的內容會忽略。
請注意,如果頁面結尾沒有換行,編輯頁面中總是在結尾添加一個換行,但這並不影響模板的某些效果,即這個換行不真正起作用。例如:
{{编号演示}}{{编号演示}} {{编号演示}}
的結果是:
- 北京
- 上海
- 北京
- 上海
- 北京
- 上海
建立並編輯模板
維基百科現存大量模板供編者使用,如果有現存模板可以完成您的任務,則應該呼叫現有模板,而不是另建新模板。
您在新建模板前,請先搜尋相應的模板名稱,如「Template:維基百科模板」。新建模板後,請在Wikipedia:模板訊息內添加您新建的模板的資訊,並請對模板進行分類。模板分類的方法請參考Category:維基百科模板以及Category talk:維基百科模板中的相關內容。
當您在模板中需要使用圖示時,建議使用維基共享資源水晶風格圖示庫中提供的圖示。
模板頁面會自動呼叫這個模板本身,實際上相當於一次沒有參數賦值的模板呼叫,因此如果參數有預設值,將被顯示。例如:模板Template:數一數的內容是
一二三{{{1|四五六}}}七八九
模板頁面的內容是
- 一二三四五六七八九
讀取參數
在模板頁面中,用三個大括號可以讀取參數,例如:{{{參數1|參數1的預設值}}}
可以讀取參數1,如果在模板呼叫中參數1沒有賦值,則使用參數1的預設值作為參數1的賦值。另見Help:預設參數
注意:參數預設值和參數賦空值是不同的。
例1:含有命名參數的模板
例如:Template:姓名的模板,內容為:
我是{{{姓}}}{{{名}}}。
如果用{{姓名}}
呼叫這個模板,將會看到:
- 我是{{{姓}}}{{{名}}}。
如果用{{姓名|姓=张|名=飞}}
,我們則看到:
- 我是張飛。
例2:含有編號參數的模板
再來一個例子,說明一個編號參數的定義和呼叫:我們還是先要定義一個帶參數的模板,例如模板Template:數數的內容是
一二三{{{1|四五六}}}七八九
賦值呼叫{{数数|六五四}}
的結果是:
- 一二三六五四七八九
賦空值呼叫{{数数|}}
的結果是:
- 一二三七八九
未賦值呼叫,就會呼叫預設值,{{数数}}
的結果是:
- 一二三四五六七八九
編號參數還是命名參數?
編號參數的優點
- 呼叫模板時參數名和等號可以省略,從而節約打字時間和儲存空間。參見#設定參數。
- 阿拉伯數字是世界性的,翻譯時較為簡單,也可以被不懂中文的人理解。
命名參數的優點
- 參數的順序可以變化,模板的參數可以任意添加和修改,而不會對呼叫模板的頁面產生致命影響。
- 參數的意義容易理解。
- 當模板具有大量預設參數時,命名參數使語法更為清晰
- 一些特殊的技巧利用這樣一個特性:在一次模板呼叫中允許對同一個參數多次賦值,這導致最後一次賦值的內容生效;這種做法隱式保證了在本次模板呼叫中該參數至少被賦值一次
未賦值且沒有預設值的參數
例如:模板Template:再數數的內容是
一-{{{1}}}-三-{{{2}}}-五
{{再数数||}}
的結果是
- 一--三--五
{{再数数|二|}}
的結果是
- 一-二-三--五
{{再数数||二}}
的結果是
- 一--三-二-五
{{再数数|二|{{{1}}}}}
的結果是
- 一-二-三{{1}}五
{{再数数|{{{1}}}|四}}
的結果是
- 一{{1}}三-四-五
{{再数数|{{{1}}}|{{{2}}}}}
的結果是
- 一{{1}}三{{2}}五
例4:參數賦值中包含參數
如果一個參數未賦值,則在三個大括號中的參數名在模板呼叫時不起參數的作用。如果要它起作用,一定要賦值。
- 模板Template:數數A的內容是
{{再数数|二}}
{{数数A|四}}
的結果是:- 一-二-三{{2}}五
- 模板Template:數數B的內容是
{{再数数|二|{{{1}}}}}
- 呼叫
{{数数B|四}}
的結果是:- 一-二-三-四-五
- 模板Template:數數C的內容是
{{再数数|二|2={{{1}}}}}
- 呼叫
{{数数C|四}}
的結果是:- 一-二-三-四-五
例5:參數迭代
當模板需要隔層叫用時(例如有一個父模板,然後建立許多子模板,子模板使用父模板的功能)要讓底層(A模板叫用B模板,B模板為A模板的底層)層使用上層參數時,則需要參數迭代。
最簡單的參數迭代辦法就是在模板中用同樣的參數名。
{{姓名|姓={{{姓}}}|名={{{名}}}}}{{{国籍}}}人。
- 我現在叫用「
{{姓名国籍|姓=王|名=小奇|国籍=火星}}
」- 結果為「我是王小奇。火星人。」
您可能會認為,Template:姓名模板也有包含{{{姓}}}
和{{{名}}}
參數。
因此我們可以試着將Template:姓名國籍改成
{{姓名}}{{{国籍}}}人。
- 此時叫用「
{{姓名国籍|姓=王|名=小奇|国籍=火星}}
」- 結果為「我是{{{姓}}}{{{名}}}。火星人。」
這是因為在Template:姓名模板中,無法讀取到Template:姓名國籍中傳遞的「|姓=王|名=小奇|国籍=火星
」參數
由於每一層模板呼叫參數都互不相關,因此要讓參數能一層一層傳遞下去,則每層都需要迭代一次參數。
進一步
像{{再数数||四}}
這樣的呼叫將空值賦給參數1,而不是沒有賦值,所以結果是
- 一--三-四-五
如果我們希望參數1不賦值,則應該將參數2用命名參數形式賦值,如
{{再数数|2=四}}
結果則是
- 一{{1}}三-四-五
如果這樣的參數值被賦給如<font size>
這樣的標記,會使編碼錯誤,但這些錯誤會被系統(MediaWiki)忽略,而不產生奇怪的結果。請參看英文的例子:字型大小。
參數「02」和參數「2」是不同的,例如模板Template:例5的內容是
{{{1}}}{{{2}}}{{{02}}}
呼叫{{例5|3|4|5|6}}
的結果是
- 34{{{02}}}
注意:維基系統命名空間的參數名是不同的,它們是$1, $2, ...
,參見WP:命名空間、Special:所有訊息和MediaWiki:Blockedtext。
參數及模板命名
參數命名可以呼叫其他參數,如Template:XYZ內容為{{{{{{XYZ}}}}}},則呼叫{{XYZ|XYZ=SDF|SDF=789}}會把參數XYZ的值SDF作為參數名,顯示參數SDF的值,即789。MediaWiki會把{{{{{{XYZ}}}}}}解析為{{{ {{{XYZ}}} }}}而不是{{ {{ {{XYZ}} }} }}(結果是{{ {{ {{{{{{XYZ}}}}}} }} }})。這裏空格是敏感的。另外,呼叫其他參數僅可呼叫1層。如Template:XYZ2內容為{{{{{{{{{XYZ}}}}}}}}},則{{XYZ2|XYZ=SDF|SDF=ABC|ABC=789}}結果為789。
又如,Template:1a2b內容為{{{第一個|第一個未定}}}-{{{第二個|第二個未定}}},Template:nanb內容為{{1a2b|{{{1|第一個}}} = {{{1|第一個}}}已定}},則{{nanb}}結果為第一個已定-第二個未定,{{nanb|第一個}}結果為第一個已定-第二個未定,{{nanb|第二個}}結果為第一個未定-第二個已定,{{nanb|第三個}}<結果為第一個未定-第二個未定。
又如,Template:testif內容為{{{test{{{test|}}}|{{{then}}}}}},則{{testif|test=11|test11=233}}結果為233,{{testif|test=11|then=255}}結果為255,{{testif|then=333}}結果為333,{{testif|test=|then=335}}結果為。
另外,如果模板名為參數,如Template:Sample2內容為{{{{{tc}}}}},則呼叫{{Sample2|tc=!}}相當於{{!}},顯示為|。這裏,{{{{{tc}}}}}解析為{{ {{{tc}}} }}而不是{{{ {{tc}} }}}。如果Template:Sample3內容為{{{ {{tc}} }}},{{tc}}內容為in,則{{Sample3|in=11}}顯示為{{{ {{tlc|...}}
}}}。
模板呼叫時,模板名可以是解析器函數。如{{{{NAMESPACE}}1}}相當於{{help1}},結果為這是{{Help1}}的內容。。
模板名可以是另一個模板。如Template:tctc內容為{{tc}},{{{{tctc}}}}相當於{{tc}},結果為{{{{tctc}}}}。
可以使用參數選擇模板名。如Template:Hist3內容為{{{{{2}}}x|{{{1}}}}}-{{{{{3}}}x|{{{1}}}}}-{{{{{4}}}x|{{{1}}}}},Template:1x內容為{{{1}}},Template:2x內容為{{{1}}}{{{1}}},Template:3x內容為{{{1}}}{{{1}}}{{{1}}},則{{Hist3|4|3|2|1}}結果為444-44-4。又如Template:a2b2c2d內容為{{{{{1}}}|a{{{2}}}b{{{2}}}c{{{2}}}d}},Template:t2內容為start_{{{1}}}_middle_{{{2}}}_end,{{a2b2c2d|t2|V}}相當於{{t2|aVbVcVd}},即start_aVbVcVd_middle_{{{2}}}_end。
模板可以多次巢狀。如{{3x|{{2x|{{3x|{{1x|{{2x|{{tc}}}}}}}}}}}}結果是{{tlc|...}}
{{tlc|...}}
{{tlc|...}}
{{tlc|...}}
{{tlc|...}}
{{tlc|...}}
{{tlc|...}}
{{tlc|...}}
{{tlc|...}}
{{tlc|...}}
{{tlc|...}}
{{tlc|...}}
{{tlc|...}}
{{tlc|...}}
{{tlc|...}}
{{tlc|...}}
{{tlc|...}}
{{tlc|...}}
{{tlc|...}}
{{tlc|...}}
{{tlc|...}}
{{tlc|...}}
{{tlc|...}}
{{tlc|...}}
{{tlc|...}}
{{tlc|...}}
{{tlc|...}}
{{tlc|...}}
{{tlc|...}}
{{tlc|...}}
{{tlc|...}}
{{tlc|...}}
{{tlc|...}}
{{tlc|...}}
{{tlc|...}}
{{tlc|...}}
。
模板分類
[編輯]模板也要進行分類,目的是為了更好的整理模板,以便更好的使用和管理模板。模板的分類同條目的分類相似,可以參閱有關條目分類的幫助檔案,如Help:分類等,不同之處在於對於模板的分類需要使用<noinclude>
標識,如果不加<noinclude>
標識,則不僅模板被分類,所有使用該模板的條目也被分入同一類。
所有模板的根目錄(即分類)是Category:維基百科模板,所有模板分類名最後一定要含有「模板」二字,以區別於普通條目的分類。
例7:模板分類別方法
[編輯]將例1中的模板Template:姓名分為Category:人物模板,需要加入:
我是{{{姓}}}{{{名}}}。<noinclude>[[Category:人物模板]]</noinclude>
標識
[編輯]注意:以下內容只限於模板中使用的情況,在其他命名空間使用的情況請參考相關幫助文擋。
<noinclude>、<includeonly>和<onlyinclude>
[編輯]在模板中使用<noinclude> 標識時要小心!<noinclude> 應接在模板原始碼(例如結尾雙大括號}})或文字最後一列的後方,不要新起一列;也不要在</noinclude> 之後加空行(雖然系統會自動忽略</noinclude> 之後的單個空行),否則空行將被當作模板的一部分反映在呼叫模板的條目中。 |
<noinclude>
標識的作用是將<noinclude>
和</noinclude>
之間的文字加入所在的模板頁中,而不加入呼叫模板的條目或模板中,針對模板的說明、分類都可以置於該標識之間。
<includeonly>
標識的作用跟<noinclude>
標識的作用正好相反,是將<includeonly>
和</includeonly>
之間的文字不加入所在的模板頁中,而加入呼叫模板的頁面中。
<onlyinclude>
標識不常用,其作用是只有被<onlyinclude>
和</onlyinclude>
包含的文字才出現在呼叫模板的頁面中,模板的其他內容不出現在呼叫模板的頁面中。
原始碼 | 原始頁面看到的 | 其他頁面看到的 |
---|---|---|
<noinclude> text1 </noinclude> text2
|
text1 text2
|
text2
|
<onlyinclude> text1 </onlyinclude> text2
|
text1 text2
|
text1
|
<includeonly> text1 </includeonly> text2
|
text2
|
text1 text2
|
subst與preload過程中的noinclude、includeonly和IncludeOnly
[編輯]- 以下部分行為是錯誤的,是舊版本軟件的缺陷,並將隨MediaWiki 1.17的部署被修正(bugzilla:5210)。
- 解釋與傳遞
模板原始碼 | includeonly | noinclude | includeonly | noinclude | include<includeonly></includeonly>only |
模板顯示 | interpret | interpret | interpret | 同noinclude | 解釋內層,傳遞外層 |
嵌入過程 | interpret | interpret | interpret | 解釋內層,傳遞外層 | |
subst過程 | interpret | 傳遞 | interpret | 成為includeonly | |
preload過程 | interpret | 傳遞 | 傳遞 | 成為includeonly |
- 巢狀
模板原始碼 | includeonly pair中的includeonly pair | noinclude pair中的includeonly pair |
模板顯示 | 錯亂[1] | |
嵌入過程 | ? | / |
subst過程 | / | |
preload過程 | 正常 | / |
Nowiki
[編輯]注意:以下內容只限於模板中使用的情況,在其他命名空間使用的情況請參考相關幫助文擋。
對於一些模板,我們不希望模板參數的Wikitext語法被辨識。比如:我們希望傳入文件的參數以其原本的狀態居中顯示。
如果我們寫Template:居中Nowiki,內容為:
<div style="text-align:center"><nowiki>{{{1}}}</nowiki></div>
那麼用{{居中Nowiki|'''居中的内容'''}}
呼叫此模板返回的結果會是:
因為<nowiki>...</nowiki>
會在模板的原始碼頁面就發揮作用,所以<nowiki>{{{1}}}</nowiki>
在模板中並非代表傳入的參數,而代表的是「{{{1}}}」這串字元本身。因此,此時需要用到另一個方式來達成此目的。我們寫Template:居中Nowiki1,內容為:
<div style="text-align:center">{{#tag:nowiki | {{{1}}}}}</div>
那麼用{{居中Nowiki1|'''居中的内容'''}}
呼叫此模板返回的結果會是:
簡而言之,<nowiki>内容</nowiki>
和{{#tag:nowiki | 内容}}
的區別是:前者在模板的原始碼頁面起作用,而後者會在使用模板的頁面起作用。
特殊的模板引用
[編輯]- 子頁面引用
- 格式:{{/子页面}}
模板原始碼 | includeonly | noinclude | IncludeOnly | NoInclude | include<includeonly></includeonly>only |
模板顯示 | interpret | interpret | interpret | 同noinclude | 解釋內層,傳遞外層 |
嵌入過程 | interpret | interpret | interpret | 解釋內層,傳遞外層 | |
subst過程 | interpret | 傳遞 | interpret | 成為includeonly | |
preload過程 | interpret | 傳遞 | 傳遞 | 成為includeonly |
- 巢狀
模板原始碼 | includeonly pair中的includeonly pair | noinclude pair中的includeonly pair |
模板顯示 | 錯亂[2] | |
嵌入過程 | ? | / |
subst過程 | / | |
preload過程 | 正常 | / |
- 引用過程中「子頁面」的意義是引用模板的頁面的子頁面,而非被引用的模板的子頁面。
- 其它命名空間的模板引用
- 格式:{{命名空间:子页面}}如{{Template talk:!}}
一般用法
[編輯]模板的一般用法有:
- 模板訊息,例如:Template:stub傳遞「小作品」的訊息。
- 導航模板,用於給讀者提供類似的條目,例如:Template:洲。
- 資訊框模板,用於同一類條目中提供統一格式的資訊,例如:Template:Infobox 網球在條目右邊繪製資訊框,提供網球運動員的相關資訊。
- 提供跨語言文字。
- 提供合成圖片,例如:圍棋棋譜Template:Game of Go Position和國際象棋棋譜和Template:Chess position。
- 以上幾種的組合。
提及模板
[編輯]在某些情況下,我們可能需要提及某一個模板(而非呼叫它)。提及模板可用nowiki標籤,但是已經有熱心的用戶建立了專門的模板,用於提及模板。
您所輸入的 | 您所看到的 | ||
---|---|---|---|
請您不要再隨意刪除{{afd}}模板。 | 請您不要再隨意刪除
| ||
請您不要再隨意刪除<nowiki>{{afd}}</nowiki>模板。 | 請您不要再隨意刪除{{afd}}模板。 | ||
請您不要再隨意刪除{{tl|afd}}模板。 | 請您不要再隨意刪除{{afd}}模板。 | ||
歡迎新用戶可以使用{{tls|welcome}}語法,但不要使用{{tl|welcome}}語法。 | 歡迎新用戶可以使用{{subst:welcome}}語法,但不要使用{{welcome}}語法。 | ||
[[:Template:nosign]]的用法如下: {{tlx|nosign|用户留言时间|用户名}} |
Template:nosign的用法如下:{{nosign|用户留言时间|用户名}}
| ||
{{tnull|nosign|用户留言时间|用户名}}用於補簽名。 | {{nosign|用户留言时间|用户名}} 用於補簽名。
|
類似語法
[編輯]{{CURRENTYEAR}}、{{DISPLAYTITLE:}}等等為魔術字。魔術字可以返回關於當前頁面、wiki站點或日期的資訊,也可以設置數據。參見Help:魔術字#變數。
呼叫解析器函數的語法是{{#xxx:}}。如{{#ifeq:{{{lang}}}|zh|我使用中文|I<ins> don't</ins> use Chinese}}給出I don't use Chinese。
讀取模板參數是三個大括號,形如{{{1|}}}、{{{date}}}。詳見#讀取參數。
常見問題
[編輯]我可以在多個語言維基百科中使用同一個模板嗎?
- 不能。如果你要這麼做,只能在各個維基百科中分別建立該模板。
開頭是「Template:」,「template:」,還是「模板:」?
- 都行。英文不區分大小寫,中文會繁簡自動轉換。一定要用英文半形冒號。
我可以使用參數嗎?
- 可以。請參閱此頁上方。
一個頁面中最多可以使用多少模板?
- 2MB。參見Wikipedia:模板限制。
我已經修改了模板,但為什麼頁面不更新呢?
- 有很多原因。第一、你可能沒有重新整理頁面。在你的瀏覽器里使用重新整理(Refresh)功能。第二、系統可能存在快取漏洞(bug)。一種解決方法是編輯使用模板的頁面,然後什麼也不修改就儲存,這樣你就強制該頁面進行重新整理了。這一操作不會在歷史中留下記錄。
我可以修改模板的名字嗎?
- 可以。移動模板跟移動普通頁面一樣。模板也可以重新導向。
我可以在一個模板中使用另一個模板嗎?
- 可以。當然可以在一個模板的內容中呼叫另一個模板。但如果使用諸如{{一个模板{{另一个模板}}}}這樣的陳述式,假設{{另一个模板}}的內容為「123」,則實際上是{{一个模板123}}。
參考資料
[編輯]- ^ 1.0 1.1 Help:魔术字#其他特殊符號. 2015-08-02.
- ^ MediaWiki更新记录. 2015-08-02.