模板:出演列表/doc
该模板为了解决某些“总出演人员一定,但每期出演人员都不固定”的节目的出演人员展示问题。
该模板是一个元模板(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”,参数值:没有项目时的显示效果。必填,建议默认值“(无)”
对于整个模板的参数,建议按上面示例从子模板的调用处传入,这样会更加灵活。
调用子模板
假设您的子模板名为“PastelPalettes出演列表”,如果您按上方示例创建了模板,请按以下方式调用:
{{PastelPalettes出演列表|aya|hina|chisato|maya|eve}}(全员出演) {{PastelPalettes出演列表|aya|eve}}(部分人员出演) {{PastelPalettes出演列表|eve|aya}}(出演人员的顺序不重要,输出的顺序一定是定义的顺序) {{PastelPalettes出演列表|aya|eve|size=50|split=,|empty=没有人}}(带命名参数调用) {{PastelPalettes出演列表}}(没有出演人员) {{PastelPalettes出演列表|empty=没有人}}(没有出演人员,且自定义了显示效果)
其中匿名参数(即没有用“参数名=”标示参数名的参数,或名字为数字的参数),用来传递出演人员的名称。该名称与模板定义中“def_名字”中的“名字”相同。
命名参数(size=、split=、empty=)详见上述#创建子模板章节,一般可以不传入,使用默认值。
注意事项
- 调用子模板时,请注意不要传入定义之外的出演人员。
- 为了优化性能,模板未对传入参数进行检查。传入未定义参数时将没有报错提示。
- 相关的变量:(如果被别的模板嵌套,请注意这些变量值在调用后会被改变)
- 出演列表_名字_apply:针对(调用中的)每一个“名字”,对应的变量被清空。(“出演列表”四个字为变量名的一部分,如“出演列表_aya_apply”)
- last_item:被覆盖为(定义和调用的交集中的)最后一个出演人员的标识(按定义顺序)
- num:被覆盖为(调用中的)出演人员的数量
- name:被覆盖为(调用中的)最后一个出演人员的标识(按调用顺序)
效果示例
情况 | 图标 | 说明 |
---|---|---|
全员出演 | ||
彩和伊芙出演 | 没有出演的人员为空,保证每人位置不变 | |
千圣和麻弥出演 | 同上,首尾为空也能正常排列显示 | |
没有人出演 | (无) | 没有出演显示默认文字“(无)”,可调 |
表格的源代码 |
---|
{| class="wikitable" |- ! 情况 !! 图标 !! 说明 |- | 全员出演 || {{PastelPalettes出演列表|aya|hina|chisato|maya|eve}} || |- | 彩和伊芙出演 || {{PastelPalettes出演列表|aya|eve}} || 没有出演的人员为空,保证每人位置不变 |- | 千圣和麻弥出演 || {{PastelPalettes出演列表|chisato|maya}} || 同上,首尾为空也能正常排列显示 |- | 没有人出演 || {{PastelPalettes出演列表}} || 没有出演显示默认文字“(无)”,可调 |} |
可尝试将上述表格复制到记事本中,可以发现图标部分的文字正常显示,各出演人员之间用顿号分隔。
源代码
模板内的源代码为了节约空间,删除了注释。以下为未处理前的源代码:
源代码 |
---|
<!-- 先扫一遍所有项目,确定最后一个非空项目,保证最后一个项目后不加split符号(顿号) -->{{#vardefine:last_item|}}<!-- -->{{#fornumargs:num|name|<!-- -->{{#ifeq:{{#var:出演列表_{{#var:name}}_apply|}}|1|<!-- -->{{#vardefine:last_item|{{#var:name}}}}|<!-- -->}}<!-- -->}}<!-- 应用模板,输出结果 -->{{#if:{{#var:last_item}}|<!-- 有出演者 -->{{#fornumargs:num|name|<!-- -->{{#ifeq:{{#var:出演列表_{{#var:name}}_apply|}}|1|<!-- 有出演 -->[[File:{{{{{#var:name}}_image}}}|{{{size}}}px|link={{{{{#var:name}}_link|}}}|alt={{{{{#var:name}}|}}}{{#ifeq:{{#var:name}}|{{#var:last_item}}||{{{split}}}}}]]|<!-- 未出演 --><img width={{{size}}}px/><!-- -->}}<!-- (不必在这里清除"出演列表_xxx_apply"变量,而是在子模板处理。因为这里无法考虑到传入的未定义参数) -->}}|<!-- 无出演者 -->{{{empty}}}<!-- -->}} |