“模板:.../doc”的版本间的差异
< 模板:...
1.38>牛腩面 (创建页面,内容为“== 简介 == 该模板通过传入一个表示数个命名参数的序列化字符串,实现类似[https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Operators/Spread_syntax JavaScript中展开运算符]的…) |
小 (导入1个版本) |
(没有差异)
|
2022年7月8日 (五) 21:14的版本
简介
该模板通过传入一个表示数个命名参数的序列化字符串,实现类似JavaScript中展开运算符的功能(该模板的命名也源于这个语法),以便于对模板传入一组可复用的参数。
用法
{{... |__tl= <!-- 要使用的模板名 --> |__args= <!-- 要传入的序列化参数字符串,不支持匿名(数字)参数 --> <!-- 可以继续传入参数,无论是匿名还是命名,当与args中的参数名重复时,将依据参数序列化时定义的混合模式进行混合 --> }}
参数序列化
该模板提供了一个用于序列化的方法,注意不支持匿名(数字)参数:
{{.../stringify |__blendModes= 参数名:混合模式, 参数名:混合模式 |参数名=参数值 |参数名=参数值 }}
其中,__blendModes
参数为设置各个参数的混合模式,以使stringify中的参数和模板使用时的参数发生重复时,能更好地工作。该参数不是必须的。
混合模式共有4种类型:
- rewrite:重写,使用时的参数将覆盖stringify的参数,这是默认值。
- begin:添加到stringify参数值的开头。
- end:添加到stringify参数值的结尾。
- middle:添加到stringify中魔术字符串
${__arg}
的位置。
示例
示例1
{{... |__tl= bilibiliVideo |__args= {{.../stringify|id=7610055}} }}
- 效果
宽屏模式显示视频
示例2
这里将演示一个更加典型的用法。
仔细观察可以发现,该模板中有多个参数是重复的(实际上大多数样式简单navbox模板都是这个模式)。虽然我们可以通过对其再次封装一次达到只传一次颜色,但{{navbox}}模板还有相当数量的其他参数,如果不在封装的模板中写出将导致无法使用,这里使用该模板达到参数复用的目的。
{{navbox |name=来自风平浪静的明天 |title={{coloredlink|#00AECF|来自风平浪静的明天}} |titlestyle = background:white; color:#00AECF; |abovestyle = background:#00AECF; |groupstyle = background:#00AECF; color:white; |oddstyle = background:{{ColorOps|-90|#00AECF}}; |evenstyle = background:white; |above = <div style="height:2px;"></div> |group1=主要角色 |list1=先岛光 • 向井户爱花 |group2=其他角色 |list2=鳞大人• 先岛灯 }}
|
假设新建模板:navboxPlainStyles:
{{.../stringify |__blendModes= titlestyle:middle, abovestyle:end, groupstyle:end, oddstyle:end, evenstyle:end |titlestyle = background:white; ${__arg}; color:{{{1}}}; |abovestyle = background:{{{1}}}; |groupstyle = background:{{{1}}}; color:white; |oddstyle = background:{{ColorOps|-90|{{{1}}}}}; |evenstyle = background:white; |above = <div style="height:2px;"></div> |title= {{coloredlink|{{{1}}}|{{{title}}}}} |name={{{title}}} }}
使用该模板:
{{...|__tl= navbox |__args= {{navboxPlainStyles|#00AECF|title=来自风平浪静的明天}} |groupstyle = color:orange; <!-- 由于设置了该参数的混合模式为“end”,这里的样式被添加到了navboxPlainStyles模板中定义的样式的后面,覆盖了其中设置的白色文字颜色 --> |titlestyle = background:#ccc; color:grange; <!-- 设置的混合模式为“middle”,将${__arg}放在了background和color的中间,导致只有背景颜色被覆盖 --> |group1=主要角色 |list1=先岛光 • 向井户爱花 |group2=其他角色 |list2=鳞大人• 先岛灯 }}
|
相关模板
- {{ApplyToArray}}:从{{Array}}中读取参数并应用于模板的模板;支持位置参数,但不提供参数混合功能。