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

模板:出演列表

萌娘百科,萬物皆可萌的百科全書!轉載請標註來源頁面的網頁連結,並聲明引自萌娘百科。內容不可商用。
跳至導覽 跳至搜尋
模板文檔  [查看] [編輯] [歷史] [刷新]

該模板為了解決某些「總出演人員一定,但每期出演人員都不固定」的節目的出演人員展示問題。

該模板是一個元模板(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}}時)參數順序可以保留。