七日内新公告:全站维护公告
  • 你好~!欢迎来到萌娘百科镜像站!如需查看或编辑,请联系本站管理员注册账号。
  • 本镜像站和其他萌娘百科的镜像站无关,请注意分别。

Template:出演列表

猛汉♂百科,万男皆可猛的百科全书!转载请标注来源页面的网页链接,并声明引自猛汉百科。内容不可商用。
跳转到导航 跳转到搜索
模板文档  [查看] [编辑] [历史] [刷新]

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

该模板是一个元模板(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:被覆盖为(调用中的)最后一个出演人员的标识(按调用顺序)

效果示例

情况 图标 说明
全员出演 丸山彩、冰川日菜、白鹭千圣、大和麻弥、若宫伊芙
彩和伊芙出演 丸山彩、Images must have the src attribute setImages must have the src attribute setImages must have the src attribute set若宫伊芙 没有出演的人员为空,保证每人位置不变
千圣和麻弥出演 Images must have the src attribute setImages must have the src attribute set白鹭千圣、大和麻弥Images must have the src attribute set 同上,首尾为空也能正常排列显示
没有人出演 (无) 没有出演显示默认文字“(无)”,可调
表格的源代码
{| 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}}}<!--
-->}}

注释

  1. ↑ 为什么一定要先用匿名参数定义顺序?为了保证在Lua内调用模板时(如使用{{ptl}}时)参数顺序可以保留。