模板:Namespace detect

勤求古訓,博采眾方
文件圖示 模板文件[檢視] [編輯] [歷史] [清除快取]

這是{{Namespace detect}}元模板,它可以幫助其他模板檢測出它們被嵌入的頁面命名空間,並針對不同命名空間顯示通過參數指定的文本。

大致用法如下所示:

{{namespace detect
| 參數名  = 模板被包含在該參數對應的命名空間時所顯示的文本
}}

本模板支持的參數如下所示:

  • main:主/條目命名空間。
  • talk:討論命名空間,包括但不限於「Talk:」「User_talk:」「Wikipedia_talk:」開頭的頁面。
  • pseudo偽命名空間
    • mos, lta:分別對應「MOS:」和「LTA:」開頭的頁面。
  • user, wikipedia, file, mediawiki, template, help, category, portal, wikiproject:分別對應用戶命名空間、計劃命名空間(維基百科命名空間)、文件命名空間、MediaWiki命名空間、模板命名空間、幫助命名空間、分類命名空間、主題命名空間和維基專題命名空間。
  • other = 如果對應的命名空間參數沒有值,則使用此參數。

為了向下兼容,本模板仍能理解file命名空間的舊名稱image,但其現已棄用。

注意:由於此模板容易出現人為錯誤(如參數名拼寫錯誤),所以對於大部分使用情況,最好使用更簡單的命名空間檢測模板,見下列的參見部分。

用法

{{namespace detect
| main  = 條目
| talk  = 討論頁
| other = 其他頁面
}}

如果本模板用於主(條目)頁面上,將返回:

條目

如果本模板用於非條目和討論命名空間的其他頁面上,將返回:

其他頁面

上面的示例中,該模板對於所有命名空間都會返回文本。但如果不使用other參數或者留空,那麼它將不會返回任何文本,如下所示:

{{namespace detect
| file     = 文件
| category = 分類頁面
| other    =
}}

這個例子中,在除文件和分類命名空間以外的任何頁面上, 這些代碼都將不返回任何文本。

通過將參數留空,可以在特定命名空間的頁面上不呈現任何內容,如下所示:

{{namespace detect
| main  = 
| other = 其他頁面
}}

上面的代碼在主空間(條目)頁上將不會呈現任何內容,但是在其他頁面上將返回如下內容:

其他頁面

演示空間

該模板提供了demospace參數以供演示用。該參數的值可以是該模板可以理解的任何一個頁面命名空間參數(包括other)。一旦使用該參數,模板便會認為它被包含在該參數指定的命名空間中並呈現相應的文本,如下所示:

{{namespace detect 
| main  = 條目
| other = 其他頁面
| demospace = main
}}

無論以上代碼被包含在什麼命名空間中,都將呈現如下文本:

條目

您可以在自己的模板中將demospace參數傳遞給本模板,如下所示:

{{namespace detect 
| main  = 條目
| other = 其他頁面
| demospace = {{{demospace|}}}
}}

如果demospace參數為空,本模板會忽略該參數。

參數

所有參數列表:

{{namespace detect
| main  = 
...
| other =
| demospace = {{{demospace|}}} / main / talk / user / 
              wikipedia / file / mediawiki / template / 
              help / category / portal / other
}}

Note: Empty values to the "main" ... "portal" parameters do have special meaning.

技術細節

2008年12月11日,命名空間「Image」被重命名為「File」。在此之前,該模板已被更新以理解這兩個名稱,因此它仍然可以正常工作。為了向後兼容,它仍然將「image」理解為參數名,如「image=文件頁面文本」,以及值「demospace=image」。

如果您打算將表作為內容提供給此模板的編號參數,那麼您需要知道這一點:

Templates在處理包含管道「|」的參數數據時確實有問題,除非管道位於另一個模板{{name|param1}}內或管道鏈接</nowiki>内帮助</nowiki>。因此模板無法處理wikitables作為輸入,除非使用Template:Tn樣板這使得很難將Wiki表用作模板的參數。相反,通常的解決方案是對表代碼使用「HTML wikimarkup」,這更加健壯。

有關「複製到其他項目」和「基於CSS的命名空間檢測」等更多技術細節,請參閱{{main talk other}}及其討論頁面。

參看

Template:Namespace detect see also