Template: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