跳转到内容
打开/关闭搜索
搜索
打开/关闭菜单
451
条目
808
文件
22
用户
9259
编辑
Blockland Wiki
导航
首页
最近更改
随机页面
MediaWiki帮助
特殊页面
打开/关闭外观设置菜单
无法加载外观设置。请检查您的网络连接并重试。
重试
打开/关闭个人菜单
未登录
未登录用户的IP地址会在进行任意编辑后公开展示。
user-interface-preferences
个人工具
创建账号
登录
查看“︁模块:Infobox settlement”︁的源代码
来自Blockland Wiki
查看
阅读
查看源代码
查看历史
相关页面
模块
讨论
更多操作
更多
工具
链入页面
相关更改
页面信息
Cargo数据
←
模块:Infobox settlement
因为以下原因,您没有权限编辑该页面:
您请求的操作仅限属于该用户组的用户执行:
用户
您可以查看和复制此页面的源代码。
local p = {} -- 辅助函数:检查参数是否存在且不为空 local function hasValue(arg) return arg and arg:match('%S') end -- 构建分组子标题行 (浅灰色背景,靠左对齐) local function buildSubheader(label) if hasValue(label) then local row = mw.html.create('tr') row:tag('th') :attr('colspan', '2') :css('background', '#f0f0f0') -- 浅灰色 :css('text-align', 'left') :css('padding-left', '0.4em') :css('font-weight', 'bold') :wikitext(label) return tostring(row) end return '' end -- 构建信息框的单行数据(标签+数据) local function buildRow(label, data) if hasValue(data) then local row = mw.html.create('tr') -- 使用 vertical-align:top 确保长短不一的内容对齐 row:tag('th'):css('width', '30%'):css('text-align', 'left'):css('vertical-align', 'top'):wikitext(label) row:tag('td'):wikitext(data) return tostring(row) end return '' end -- 主函数,生成整个信息框 function p.main(frame) local args = frame:getParent().args local root = mw.html.create('table') root:addClass('infobox') :css('width', '300px') :css('font-size', '90%') -- 1. 标题 和 副标题 local title = args.name or mw.title.getCurrentTitle().text local title_cell = root:tag('tr'):tag('th') :attr('colspan', '2') :css('text-align', 'center') :css('font-size', '125%') :css('padding', '0.2em') :wikitext(title) if hasValue(args.native_name) then title_cell:wikitext('<br /><span style="font-size:85%; font-weight:normal;">' .. args.native_name .. '</span>') end -- 2. 行政区分类子标题 (模仿维基百科样式) if hasValue(args.type) then local type_row = mw.html.create('tr') type_row:tag('th') :attr('colspan', '2') :css('background', '#cddeff') -- 淡蓝色背景 :css('text-align', 'center') :css('font-weight', 'bold') :wikitext(args.type) root:wikitext(tostring(type_row)) end -- 3. 图片和图注 if hasValue(args.image) then local image_cell = root:tag('tr'):tag('td') :attr('colspan', '2') :css('text-align', 'center') local image_wikitext = '[[File:' .. args.image .. '|290x220px|frameless]]' if hasValue(args.image_caption) then image_wikitext = image_wikitext .. '<br /><span style="font-size:90%;">' .. args.image_caption .. '</span>' end image_cell:wikitext(image_wikitext) end -- 4. 坐标行 (模仿维基百科样式) if hasValue(args.lon) or hasValue(args.lat) then local coord_row = mw.html.create('tr') coord_row:tag('td') :attr('colspan', '2') :css('text-align', 'center') :css('font-size', '95%') :wikitext('坐标:' .. (args.lat or '') .. ' ' .. (args.lon or '')) root:wikitext(tostring(coord_row)) end -- 5. 开始构建数据行 local rows = {} -- 【已恢复】地理位置与行政部分 table.insert(rows, buildRow('国家', args.country)) table.insert(rows, buildRow('省', args.province)) table.insert(rows, buildRow('设立', args.established)) table.insert(rows, buildRow('市长', args.mayor)) -- 人口信息 if hasValue(args.population) then local pop_header_text = '人口' if hasValue(args.population_as_of) then pop_header_text = pop_header_text .. ' (' .. args.population_as_of .. ')' end table.insert(rows, buildSubheader(pop_header_text)) table.insert(rows, buildRow(' • 总计', args.population .. '人')) end -- 时区信息 if hasValue(args.timezone) then table.insert(rows, buildSubheader('时区')) local tz_data = args.timezone if hasValue(args.utc_offset) then tz_data = tz_data .. ' (' .. args.utc_offset .. ')' end table.insert(rows, buildRow(' ', tz_data)) -- 标签留空,让内容靠左 if hasValue(args.timezone_DST) then local tz_dst_data = args.timezone_DST if hasValue(args.utc_offset_DST) then tz_dst_data = tz_dst_data .. ' (' .. args.utc_offset_DST .. ')' end table.insert(rows, buildRow(' • 夏时制', tz_dst_data)) end end -- 将所有行添加到表格中 root:wikitext(table.concat(rows)) return tostring(root) end return p
此页面嵌入的页面:
模块:Infobox settlement/doc
(
查看源代码
)
返回
模块:Infobox settlement
。
查看“︁模块:Infobox settlement”︁的源代码
来自Blockland Wiki