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

模板:出演列表/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}}}<!--
-->}}

註釋

  1. 為什麼一定要先用匿名參數定義順序?為了保證在Lua內調用模板時(如使用{{ptl}}時)參數順序可以保留。