共建WIKI编辑招募
如果你热爱《塞尔达传说》系列并且愿意为之添砖添瓦的话
可以加群一起共同建设,招募详情页见攻略组招募公告
全站通知:
模块:信息框
刷
历
编
跳到导航
跳到搜索
目的
通过信息框来显示角色,武器和物品等的基本信息,不会对页面分类,同时也没有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