欢迎来到我的世界玩家社区Wiki!如需参与编辑,请每一位编辑者务必仔细阅读Wiki方针
全站通知:

帮助:模板

来自我的世界玩家社区WIKI_BWIKI_哔哩哔哩
跳到导航 跳到搜索
模板-编辑帮助-困难.png
这是一篇困难难度的编辑帮助

这篇文章比较困难,适合想要深入学习Wiki的用户阅读。

  回到帮助中心  -  查看所有编辑帮助  
这篇帮助文档难度相对较高,仅适合资深编辑者、有一定的编程基础或HTML/CSS基础的编辑者阅读。

什么是模板

“模板”名字空间

主条目:帮助:名字空间

模板是做什么的

就像模具可以用于生产同一款产品一样,模板用于制作页面中一些大同小异的部分——比如每个MOD页面都有的一个MOD介绍框。

在Wiki中,模板一般是指放在“模板:”名字空间里的页面。编辑者可以用{{模板名}}的方式调用这个模板,或者说,把模板页面里面的东西显示在其他页面里。

  • 其实最准确的写法是:{{页面名}}——任何页面的内容都可以以这种形式显示在其他页面。
    • 有兴趣的话,可以看看沙盒的代码。(调用了沙盒/handler页面的内容作为版头,一般不建议这么做)
    • 拆分长页面时,可能会使用到这种技巧。

虽然任何页面的内容都可以显示在其他页面,但一般来讲,“模板:”名字空间的页面才是“真正的模板”

  • 当这个名字空间的模板改变时,服务器会清理缓存,刷新所有用到这个模板的页面。
  • 一个页面使用的模板会在页面的编辑界面一一显示。
  • {{页面名}}调用主名字空间的页面时,需要在最前面加“:”

使用模板的优点

  1. 模板可以复用,调用时只需要写{{模板名}}即可。
  2. 当代码改变时,仅需修改模板,调用模板的页面会自动更新。
  3. 模板可以隐藏大量重复使用的代码,提高代码可读性。
  4. 模板可以接受参数,提供一定范围内的自定义效果。

模板名

主条目:project:格式规范#模板
  • 模板命名有一定的规则,实在想不出叫什么名字的话,可以去群里问问。

参数

{{模板|A=1|B=2|C=3}}

其中,“A”“B”和“C”是“参数名”,“1”“2”和“3”是参数的值,参数名与参数值之间用“=”分割。

模板内获取参数值的时候这么写:{{{A}}}{{{B}}}

匿名参数

调用模板时,有时会这么写:{{color|darkred|深红色的文字}},其中“darkred”和“深红色的文字”都是“color”模板的“参数”。

直接跟在管道符“|”(就是一个竖线)后面、没有“=”规定参数名的参数,就是匿名参数。

  • 匿名参数并非没有参数名,参数名是“1”“2”“3”“4”...
    • {{color|darkred|深红色的文字}} 其实等价于 {{color|1=darkred|2=深红色的文字}}

模板内调用时这么写:{{{1}}}{{{2}}}{{{3}}}{{{4}}}分别对应参数名“1”“2”“3”“4”(第1、2、3、4个匿名参数)。

  • 即使写了“6=abc”而没有前5个匿名参数的话,{{{6}}}依旧可以使用。

命名参数

命名参数前文已经介绍过了,模板内调用时只需要写{{{参数名}}}。

参数混用

假设现在有个模板:{{我是}}

里面内容是:我是{{{姓}}}{{{名}}}

现在调用这个模板:{{我是|姓=盐|名=酱}}-->我是盐酱

那么问题来了:我不想写“姓=”“名=”这些参数名,我该怎么做?

将内容改为:我是{{{1}}}{{{2}}}

现在调用模板是这样的:{{我是|盐|酱}}-->我是盐酱

又有问题出现了:我想让写命名参数和匿名参数都起效,我该怎么做?

将内容改为:我是{{{1|{{{姓}}}}}}{{{2|{{{名}}}}}}

  • {{{参数名1|备用内容}}}:当参数名1不存在的时候,显示备用内容。
  • {{{参数名1|{{{参数名2}}}}}}:当参数名1不存在的时候,显示参数名2的内容。
    • 参数名2可以继续套娃。

现在,无论是{{我是|姓=盐|名=酱}}还是{{我是|盐|酱}}都会正常显示我是盐酱

参数的限制

  1. 如果值里面含有“=”,如“众所周知,1+1=2”,那么无论是否为匿名参数,都需要按照命名参数的写法来写。
  2. 如果值里面含有“}}”,则必须使用<nowiki></nowiki>包裹,如<nowiki>}}</nowiki>
  3. 如果值里面含有“|”,则必须使用<nowiki></nowiki>包裹,如<nowiki>|</nowiki>
    1. 如果这个“|”是要在下一级起效果的,如{{模板|[[页面名|代称]]}},则需要将“|”替换为{{!}}。
  4. 模板值里的方括号必须匹配

参数的分配

{{模板|A=盐|B=酱|可|爱}}
请问:参数“A”“B”“1”“2”各是什么?

A:盐

B:酱

1:可

2:爱

{{模板|3=盐|1=酱|可|爱}}
请问:参数“1”“2”“3”“4”各是什么?

1:可

2:爱

3:盐


没有“4”。

首先忽略“命名参数”,匿名参数的分配是“1=可”“2=爱”。

所以这几个参数是:{{模板|3=盐|1=酱|1=可|2=爱}}

“1”被赋值了两次,取最后一次赋值。

{{模板|1=盐|2=酱|||可|爱}}
请问:参数“1”“2”“3”“4”各是什么?

1:

2:

3:可

4:爱

“1”和“2”均为空(和没有是两码事)。

{{模板|1=盐|2=酱|1=|2=|3=可|4=爱}}

标识

includeonly与noinclude标识 

  • includeonly意思是:这里的代码不属于这个页面,而属于调用这个模板的页面。
  • noinclude意思是:这里的代码不属于调用这个模板的页面,而属于这个页面。

可能语言描述不太好理解,这里用图片演示一下:

模板页的代码:

▮▮▮▮▮▮▮▮▮▮

<includeonly> ▮▮▮▮▮▮▮▮▮▮ </includeonly>

<noinclude> ▮▮▮▮▮▮▮▮▮▮ </noinclude>

模板页的显示:

▮▮▮▮▮▮▮▮▮▮

▮▮▮▮▮▮▮▮▮▮

这一行是保证格式用的


调用模板的页面的代码:

{{模板|参数}}

▮▮▮▮▮▮▮▮▮▮

这一行是保证格式用的

调用模板的页面显示:

▮▮▮▮▮▮▮▮▮▮

▮▮▮▮▮▮▮▮▮▮

▮▮▮▮▮▮▮▮▮▮

  • 没有标识的内容()会出现在模板页和调用页里。(一般不会出现这种内容)
  • includeonly标识里的内容()没有出现在模板页,但出现在了调用页。
  • noinclude标识里的内容()没有出现在调用页,但出现在了模板页。

一般来讲,模板会这么写(注意</includeonly><noinclude>之间什么都没有,换行都没有):

<includeonly>模板的内容</includeonly><noinclude>模板的文档、分类</noinclude>

onlyinclude标识

  • onlyinclude标识内的内容同“includeonly”,以外的内容同“noinclude”。
  • onlyinclude标识存在时,“includeonly”和“noinclude”均会被忽略。
  • 会降低代码的可读性,因此不建议使用。

示例

参数使用示例

接受参数“颜色”“color”,默认值为“#000”:

{{{颜色|{{{color|#000}}}}}}

参数“颜色1”“颜色2”,覆盖整体设置参数“颜色”,默认值为“#000”:

{{{颜色1|{{{颜色|#000}}}}}}{{{颜色2|{{{颜色|#000}}}}}}

简单示例

给文字添加背景色:

<span style="background:{{{1}}}">{{{2}}}</span>

调用:{{模板名|pink|文字}}-->文字


给站内链接添加颜色:

[[{{{1}}}|{{color|{{{颜色|{{{3}}}}}}|{{{2}}}}}]]

调用:{{模板名|首页|文字|DeepSkyBlue}}{{模板名|首页|文字|颜色=DeepSkyBlue}}-->文字


显示完整的页面名(参看系统变量):

{{FULLPAGENAME}}

调用:{{模板名}}-->帮助:模板