2023年政策修订增补工作正在进行中,欢迎参与!
  • Moegirl.ICU:萌娘百科流亡社群 581077156(QQ),欢迎对萌娘百科运营感到失望的编辑者加入
  • Moegirl.ICU:账号认领正在试运行,有意者请参照账号认领流程

User:AlexGuo1998/沙盒/出演列表模板

萌娘百科,万物皆可萌的百科全书!转载请标注来源页面的网页链接,并声明引自萌娘百科。内容不可商用。
跳转到导航 跳转到搜索

该模板为了解决某些“总出演人员一定,但每期出演人员都不固定”的节目的出演人员展示问题。

该模板是一个元模板(meta-template),请您使用该模板创建子模板后,再应用到具体的页面。

使用方法

创建子模板

对于“总出演人员一定,但每期出演人员都不固定”的节目,您可能想要以“出演人员图标”的形式来表示每期具体出演情况。

这种情况请用该模板创建子模板(可以先在链入页面寻找一下,是否有别人先创建过),并用子模板修饰表格。 如果没有找到现有的子模板,请创建“Template:模板名”的页面。一个建议的模板名是“(某团体)出演列表”。

您可以复制粘贴并修改以下代码,或者从别人创建的子模板复制代码。 您也许会希望删掉模板中“<!-- 注释内容 -->”这样的块注释。

请注意不要在模板里保留换行,特别是在“{{#fornumargs:”和“{{出演列表”之间。如果为了美观一定要换行,请在上一行尾使用“<!--”,下一行首使用“-->”将换行注释掉,保证换行符不会意外输出。

示例子模板代码
<includeonly>{{#fornumargs:num|name|{{#vardefine:出演列表_{{#var:name}}_apply|1}}}}<!--
 !-- 请不要修改此行内容。将传入的匿名参数转换为{{#vardefine:出演列表_xxx_apply|1}}的形式,以供元模板使用
-->{{出演列表
<!-- 匿名参数,定义出演人员的标识及顺序 -->
|aya|hina|chisato|maya|eve
<!--   ^ 出演人员分别标识为aya、hina、chisato、maya、eve -->
<!-- 针对每个出演人员的参数 -->
<!-- 第一个出演者 -->
|aya=丸山彩
<!--   ^ 标识为“aya”的出演者名字为“丸山彩” -->
|aya_image=Aya_icon.png
<!--   ^ “aya”的小头像为“https://commons.moegirl.org.cn/File:Aya_icon.png”。只需要填“File:”后面的内容 -->
|aya_link=丸山彩
<!--   ^ “aya”的页面名为“丸山彩”,点击后可以打开页面。如果不希望点击后打开页面,请删掉这一行 -->
<!-- 第一个出演者完 -->
<!-- 第二个出演者 -->
|hina=冰川日菜
|hina_image=Hina_icon.png
|hina_link=冰川日菜
<!-- 第三个出演者 -->
|chisato=白鹭千圣
|chisato_image=Chisato_icon.png
|chisato_link=白鹭千圣
<!-- 第四个出演者 -->
|maya=大和麻弥
|maya_image=Maya_icon.png
|maya_link=大和麻弥
<!-- 第五个出演者 -->
|eve=若宫伊芙
|eve_image=Eve_icon.png
|eve_link=若宫伊芙
<!-- 针对每个出演人员的参数完 -->
<!-- 整个模板的参数 -->
|size={{{size|30}}}
<!-- ^ 每个小头像的大小,单位为px(像素)。这里的意思是如果传入size则使用size参数,不传入则默认30px -->
|split={{{split|、}}}
<!-- ^ 复制纯文本时,用来分隔出演者的符号。同上,不传入则默认为顿号“、” -->
|empty={{{empty|(无)}}}
<!-- ^ 不指定出演者时的显示效果。同上,不传入则默认为“(无)” -->
<!-- 整个模板的参数完 -->
}}{{#fornumargs:num|name|{{#vardefine:出演列表_{{#var:name}}_apply|}}}}<!--
 !-- 请不要修改此行内容。将定义的变量“出演列表_xxx_apply”清空,方便下一次调用
--></includeonly><noinclude>使用方法详见[[Template:出演列表]]<noinclude>

详细解释:

匿名参数定义了各个项目(即:每一个出演人员)的名称及顺序。[1]

针对每一个项目(如:每一个出演人员),有以下参数:

  • 参数名:“名字”,参数值:该项目的替代文字,会在直接复制到剪贴板时作为替代文字。必填
注意:这里的参数名“名字”为调用模板时应填写的参数值,和输出结果无关;但“替代文字”与输出结果有关
  • 参数名:“名字_image”,参数值:该项目图标的路径,不需要填写“File:”前缀。必填
  • 参数名:“名字_link”,参数值:该项目点击时打开的页面。非必填,如果不填写则无法点击打开

针对整个模板,有以下参数:(为了避免对输出参数进行双重检查、提高性能,模板内没有预置默认值,故以下参数均为必填)

  • 参数名:“size”,参数值:每张图的尺寸,直接填写数字,单位为px。必填,建议默认值30px
  • 参数名:“split”,参数值:复制到剪贴板时,用于分隔项目的符号。必填,建议默认值全角顿号“、”
  • 参数名:“empty”,参数值:没有项目时的显示效果。必填,建议默认值“(无)”

对于整个模板的参数,建议按上面示例从子模板的调用处传入,这样会更加灵活。

调用子模板

假设您的子模板名为“User:AlexGuo1998/沙盒/PastelPalettes出演列表”,如果您按上方示例创建了模板,请按以下方式调用:

{{User:AlexGuo1998/沙盒/PastelPalettes出演列表|aya|hina|chisato|maya|eve}}(全员出演)
{{User:AlexGuo1998/沙盒/PastelPalettes出演列表|aya|eve}}(部分人员出演)
{{User:AlexGuo1998/沙盒/PastelPalettes出演列表|eve|aya}}(出演人员的顺序不重要,输出的顺序一定是定义的顺序)
{{User:AlexGuo1998/沙盒/PastelPalettes出演列表|aya|eve|size=50|split=,|empty=没有人}}(带命名参数调用)
{{User:AlexGuo1998/沙盒/PastelPalettes出演列表}}(没有出演人员)
{{User:AlexGuo1998/沙盒/PastelPalettes出演列表|empty=没有人}}(没有出演人员,且自定义了显示效果)

其中匿名参数(即没有用“参数名=”标示参数名的参数,或名字为数字的参数),用来传递出演人员的名称。该名称与模板定义中“def_名字”中的“名字”相同。

命名参数(size=、split=、empty=)详见上述#创建子模板章节,一般可以不传入,使用默认值。

注意事项

  • 调用子模板时,请注意不要传入定义之外的出演人员。
为了优化性能,模板未对传入参数进行检查。传入未定义参数时将没有报错提示。
  • 相关的变量:(如果被别的模板嵌套,请注意这些变量值在调用后会被改变)
    • 出演列表_名字_apply:针对(调用中的)每一个“名字”,对应的变量被清空。(“出演列表”四个字为变量名的一部分,如“出演列表_aya_apply”)
    • last_item:被覆盖为(定义和调用的交集中的)最后一个出演人员的标识(按定义顺序)
    • num:被覆盖为(调用中的)出演人员的数量
    • name:被覆盖为(调用中的)最后一个出演人员的标识(按调用顺序)

效果示例

情况 图标 说明
全员出演 丸山彩、冰川日菜、白鹭千圣、大和麻弥、若宫伊芙
彩和伊芙出演 丸山彩、若宫伊芙 没有出演的人员为空,保证每人位置不变
千圣和麻弥出演 白鹭千圣、大和麻弥 同上,首尾为空也能正常排列显示
没有人出演 (无) 没有出演显示默认文字“(无)”,可调
表格的源代码
{| class="wikitable"
|-
! 情况 !! 图标 !! 说明
|-
| 全员出演 || {{User:AlexGuo1998/沙盒/PastelPalettes出演列表|aya|hina|chisato|maya|eve}} ||
|-
| 彩和伊芙出演 || {{User:AlexGuo1998/沙盒/PastelPalettes出演列表|aya|eve}} || 没有出演的人员为空,保证每人位置不变
|-
| 千圣和麻弥出演 || {{User:AlexGuo1998/沙盒/PastelPalettes出演列表|chisato|maya}} || 同上,首尾为空也能正常排列显示
|-
| 没有人出演 || {{User:AlexGuo1998/沙盒/PastelPalettes出演列表}} || 没有出演显示默认文字“(无)”,可调
|}

可尝试将上述表格复制到记事本中,可以发现图标部分的文字正常显示,各出演人员之间用顿号分隔。

源代码

模板内的源代码为了节约空间,删除了注释。以下为未处理前的源代码:

源代码
略,移动到文档页后再添加。

注释

  1. 为什么一定要先用匿名参数定义顺序?为了保证在Lua内调用模板时(如使用{{ptl}}时)参数顺序可以保留。
    (个人猜测:用命名参数传递时顺序其实可以保留,只是Lua模块Arguments将命名参数转换为Table,而Lua中的Table不保留插入顺序,故导致命名参数的顺序信息丢失;各种其他Lua模块又依赖Arguments模块来处理参数,所以一般使用Lua模块时无法得知命名参数的顺序。猜测未经证实。)