Template:Infobox3
跳到导航
跳到搜索
新特性一:使用
| 可用于生成信息栏,供用户使用 | 元模块,不应使用 | |||
|---|---|---|---|---|
| Module:Infobox3|main | $\Longleftarrow$
|
Template:Infobox3 | $\Longleftarrow$
|
Module:Infobox3Base |
| Module:Infobox3|legacy | $\Longleftarrow$
|
Template:Infobox3/legacy | $\Longleftarrow$
|
Module:Infobox3Base/legacy |
表1 Infobox3大家族
| 体验新版样式 | 兼容{{信息栏2.0}} | |
|---|---|---|
| 需要接收 前缀参数 |
Module:Infobox3|main | Module:Infobox3|legacy |
没有上述需求
|
Template:Infobox3 | Template:Infobox3/legacy |
表2 我应该使用哪一个Infobox3?
新特性一:使用 :: 而不是 = 来传递自定义参数
在Infobox3里,不能像从前一样使用 = 传递自定义参数。原因有三:
- 运营方出于一些考虑,移除了Variables
- Scribunto不保证传入非匿名参数的顺序
- 萌娘百科长期受益于Variables而形成的惯性
在运营方出于另一些考虑不去修改Scribunto的情况下,萌娘百科编辑User:Liliaceae提出了这样一种解决方案(注)此方案在{{时间线}}中被首次采用:约定使用 :: 来分割键值对。这样,在视觉上它看似具名参数,但实际上传入的是匿名参数,键值的分割由模块完成。Infobox3采纳了这种方案。
| Lua错误:bad argument #1 to 'match' (string expected, got nil)。示例:双冒号的使用¶ |
|---|
{{Infobox3
|title = Infobox3
|image = MoegirlPedia-Title-green.svg
|size = 150px
|alt = 万物皆可萌,Variables除外
|-横栏1 :: 送杜少府之任蜀州
|_内容 :: 海内存知己,天涯若比邻。
|-横栏2 :: 横栏
|项目1 :: 内容1
|项目2 :: 内容2
|bottom = ヾ(≧▽≦*)o
}}
|
在此示例中,title、image等参数是模板内置的参数,不属于自定义参数,仍可使用=;而-横栏1等参数名是用户自定义的,因此需要使用::传参。
新特性二:前缀参数
考虑这个嵌入链条:
| ×××条目 | $\Longleftarrow$
|
Template:×××信息栏 | $\Longleftarrow$
|
(信息栏模板) |
表3 一个典型的嵌入链条
为了更加灵活地使用信息栏,一些编者希望能够向Template:×××信息栏传入一些以特定前缀开头的参数(例如相关人物-×××),并让它们出现在指定位置。在过去,这一功能通过{{#forargs:以一种巧妙的方式实现;在Variables被移除后,Infobox3内置了这一功能。
在Module:Infobox3中,只要传入形如*[前缀] :: [序号]的参数,就可以接收第[序号]个前缀参数。须注意:用户在Template:×××信息栏传参时同样需要使用::!
特别地,[前缀]可以留空;而如果[序号]是-1,则接收所有相关前缀参数。
Lua错误:bad argument #1 to 'match' (string expected, got nil)。示例:接收前三个以相关人物-为前缀的参数¶
|
|---|
×××条目 姓名
企鹅 萌百娘
亲密无间的战友,共同跨越第二次WAF危机。 |
<!-- Template:×××信息栏 里的内容 -->
{{#invoke:Infobox3|main
|姓名 :: {{{姓名|}}}
|*相关人物- :: 1
|*相关人物- :: 2
|*相关人物- :: 3
}}
<!-- ×××条目 里的内容 -->
{{×××信息栏
|姓名 = 企鹅
|相关人物-萌百娘 :: 亲密无间的战友,共同跨越第二次WAF危机。
}}
|