模板:出演列表
該模板為了解決某些「總出演人員一定,但每期出演人員都不固定」的節目的出演人員展示問題。
該模板是一個元模板(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}}}<!-- -->}} |