Zelda Top Logo.jpg

共建WIKI编辑招募
如果你热爱《塞尔达传说》系列并且愿意为之添砖添瓦的话
可以加群一起共同建设,招募详情页见攻略组招募公告

全站通知:

模块:信息框

来自塞尔达传说 王国之泪WIKI_BWIKI_哔哩哔哩
跳到导航 跳到搜索

目的

通过信息框来显示角色,武器和物品等的基本信息,不会对页面分类,同时也没有css排版

用法

{{#invoke:信息框|函数名称  目前只有一个函数 创建
| 名称= 数据的名称,同时也是信息框的标题
| 分类= 数据的分类,同时也是生成的页面的分类
| 自定义参数=  一或多对的 键 = 值
}}

示例

输入

{{#invoke:信息框|创建
|名称= 塞尔达
|分类=角色
|自定义参数=
喜欢的事物 = 林克
身份 = 永远的公主
}}

输出

塞尔达
喜欢的事物
林克
年龄
秘密
身份
永远的公主
性别




代码


local p = {}


p["创建"] = function(frame) 
    local database_name = frame.args["分类"]
    local module_name = string.format("Module:%s数据", database_name)
    local data_all = require(module_name)
    --
    local id = frame.args['名称']
    local data = data_all[id]

    -- Split the "extra_params" value into individual key-value pairs
    local extra_params_str = frame.args["自定义参数"] or ""
    for key, value in string.gmatch(extra_params_str, "%s*(%S+)%s*=%s*(%S+)%s*") do
        if key ~= "分类" and key ~= "名称" then
            data[key] = value
        end
    end
	

	local infobox_html = mw.html.create("div")
        :attr("role", "region")
    	:addClass("portable-infobox pi-background pi-border-color")
    infobox_html
        :tag("div")
        :addClass("pi-item pi-item-spacing pi-title pi-secondary-background pi-border-color")
        :wikitext(data["名称"])

    local resp_tabs = infobox_html
        :tag("div")
            :addClass("pi-item pi-data pi-item-spacing pi-border-color")
            :tag("div")
                :addClass("resp-tabs")

    local resp_tabs_list = resp_tabs
        :tag('div')
        :addClass("resp-tabs-list tabcontainer tabcontainer--align-x-center tabcontainer--columns")
    
    resp_tabs_list
        :tag("span")
            :addClass("bili-list-style explain tab tab--lable-align-y-center active")
            :cssText("max-width: calc(100% / 4 - 2 * 3px)")
            :attr("title", "官方原画 by Nintendo")
            :wikitext("原画")
    resp_tabs_list
        :tag("span")
            :addClass("bili-list-style explain tab tab--lable-align-y-center active")
            :cssText("max-width: calc(100% / 4 - 2 * 3px)")
            :attr("title", "游戏内建模")
            :wikitext("模型")
    resp_tabs_list
        :tag("span")
            :addClass("bili-list-style explain tab tab--lable-align-y-center active")
            :cssText("max-width: calc(100% / 4 - 2 * 3px)")
            :attr("title", "游戏内Icon")
            :wikitext("图标")
    
    local resp_tabs_container = resp_tabs
        :tag("div")
            :addClass("resp-tabs-container tabcontents tabcontents--align-x-center tabcontents--align-y-top")

    resp_tabs_container
        :tag("div")
            :addClass("resp-tab-content")
            :cssText("display: block")
            :wikitext(string.format("[[file:%s | center | 320x325px]]", data["原画"]))

    resp_tabs_container
        :tag("div")
            :addClass("resp-tab-content")
            :wikitext(string.format("[[file:%s | center | 320x325px]]", data["模型"]))

    resp_tabs_container
        :tag("div")
            :addClass("resp-tab-content")
            :wikitext(string.format("[[file:%s | center | 320x325px]]", data["图标"]))

	data["id"] = nil
	data["名称"] = nil
	data["原画"] = nil
	data["模型"] = nil
	data["图标"] = nil

    for key, value in pairs(data) do
        local pi_data = infobox_html
            :tag("div")
            :addClass("pi-item pi-data pi-item-spacing pi-border-color")
        pi_data
            :tag("div")
                :addClass("pi-data-label pi-secondary-font")
                :wikitext(key)
        pi_data
            :tag("div")
                :addClass("pi-data-value pi-font")
                :wikitext(value)
        end

		
    return tostring(infobox_html)
end

p["获取数据"] = function(frame)
    local database_name = frame.args["分类"]
    local module_name = string.format("Module:%s数据", database_name)
    local data_all = require(module_name)
    --
    local id = frame.args['名称']
    local data = data_all[id]

    -- Split the "extra_params" value into individual key-value pairs
    local extra_params_str = frame.args["自定义参数"] or ""
    for key, value in string.gmatch(extra_params_str, "%s*(%S+)%s*=%s*(%S+)%s*") do
        if key ~= "分类" and key ~= "名称" then
            data[key] = value
        end
    end
    local output = ''
    for key, value in pairs(data) do
    	output = output .. key .. '=' .. value .. ','
    end
    return output
end

return p