2023年政策修订增补工作正在进行中,欢迎参与!
Template:Choose
跳转到导航
跳转到搜索
一个提供类似RandomSelection功能的随机显示模板,可以在每次页面刷新时随机显示一段内容。
基础用法
您可以像使用{{#choose}}
一样使用本模板。
- 代码
{{Choose|foo|bar|baz}}
- 效果
foo
bar
baz
选择多个
您可以使用| count = [正整数]
来规定随机挑选的个数。这个数应大于0且小于选项总数。
- 代码
{{Choose|count=2|foo|bar|baz}}
- 效果
foo
bar
baz
权重选择
您可以使用| weight-✟ = [正整数]
来规定选项“✟”出现的权重。这个数应该是正整数。
- 代码
{{Choose|weight-3=999|foo|bar|baz}}
- 效果(“baz”出现的概率远高于其他)
foo
bar
baz
规定标签
您可以使用| wrapper-tag = 标签名
以及| options-tag = 标签名
选项分别规定外部和内部元素的标签。这在需要行内元素的场合很有用。
例如:
你真是一个{{Choose|wrapper-tag=span|options-tag=strong|机智的|愚蠢的}}人。
- 效果
你真是一个机智的愚蠢的人。
当然,如果内部与外部要使用同一种的标签,您只需简单的指定| tag = 标签名
,这在您只是打算把内外均设置为 span 来让元素在行内显示时非常有用。在下一个小节中就用到了这种方法。
复杂案例
选项的内容物可以是任何东西,甚至可以嵌套另一个{{Choose}}。
- 代码
{{Choose | 1 = '''粗体''' ''斜体'' <del>删除</del> <code>短代码</code> {{Color|red|红色}} * 一个 * 无序 * 列表 : 另一个{{Tl|Choose}}:{{Choose|tag=span|foo|bar|baz}} }}
- 效果
最佳实践
- 您可以使用具名正整数键名来代替匿名传参来传递选项
如果您想要传递的选项比较多,而每一个都有不同的权重,那么您可以使用具名正整数键名来传递选项,这样更方便得知选项的顺位。例如:
{{Choose | 1 = 选项1 | weight-1 = 114514 | 2 = 选项2 | weight-2 = 1919810 | 3 = 选项3 | weight-3 = 10492 }}
这么做还有另一个好处就是可以防止选项的内容物里存在“=”。
- 不要拼接 wikitext
形如下面这种写法是无法正常解析的:
[[File:{{Choose|Foo|Bar}}.png]]
你可以采用如下写法:
{{Choose| [[File:Foo.png]] | [[File:Bar.png]] }}
这是由于本模板事实上是使用 JavaScript 来实现的,而不是使用 MediaWiki 原生解析器。
- 不要尝试使用本模板来实现随机背景图
形如下面这种写法是无法正常解析的:
{{Choose | {{背景图片|Foo.png}} | {{背景图片|Bar.png}} }}
本模板在设计之初就不打算实现随机背景图片的功能。
这是由于传递给本模板的全部选项事实上都存在于解析后的 HTML 中,你只是看不见未被挑选到的元素,因此可能导致一些不能重复使用的模板出现错误。
全部参数
参数 | 必填 | 类型 | 默认值 | 说明 |
---|---|---|---|---|
✟ [1] |
是 | 任意 | (无) | 任意键名为数字的参数(以及匿名参数)都被认为是此随机挑选的可选项(与<option> 语义一致)。
|
count |
否 | 正整数 | 1 |
随机挑选的个数。大于0且小于选项总数。 |
weight-✟ [1] |
否 | 正整数 | 1 |
选项✟ 的权重。必须是正整数,小于0的传参将被认为是0,小数点后的内容将被抛弃(1.9 → 1 )。
|
class |
否 | 字符串 | (空) |
外部元素的 CSS 类名 |
style |
否 | 字符串 | (空) |
外部元素的样式 |
wrapper-tag |
否 | 字符串 | div |
外部元素的标签名 |
options-class |
否 | 字符串 | (空) |
内部选项元素的 CSS 类名 |
options-tag |
否 | 字符串 | div |
内部选项元素的标签名 |
tag |
否 | 字符串 | div |
快速设置内部及外部元素标签的语法糖,优先级没有 wrapper-tag 和 options-tag 高 |