打开/关闭搜索
搜索
打开/关闭菜单
15
6636
39
1万
OGAS数据中枢
导航
首页
最近更改
随机页面
特殊页面
上传文件
少女前线
简介
战术人形
装备图鉴
BGM
任务
打开/关闭外观设置菜单
通知
打开/关闭个人菜单
未登录
未登录用户的IP地址会在进行任意编辑后公开展示。
user-interface-preferences
个人工具
登录
查看“︁Module:GFInfobox”︁的源代码
来自OGAS数据中枢
更多操作
←
Module:GFInfobox
因为以下原因,您没有权限编辑该页面:
您请求的操作仅限属于该用户组的用户执行:
管理员
您可以查看和复制此页面的源代码。
local p = {} -- 基础清理函数:去除首尾空白和换行 local function cleanParam(s) if not s then return nil end s = s:gsub('^[%s\n\r\t]+', ''):gsub('[%s\n\r\t]+$', '') return s ~= '' and s or nil end -- 增强版混合内容处理 local function processMixedContent(s, frame) s = cleanParam(s) if not s then return nil end -- 将换行符替换为换行标签或保持格式,取决于你希望备注怎么排 -- 如果希望自动流式排版,就把换行转为空格 s = s:gsub('\n', ' ') return s end function p.main(frame) local args = frame:getParent().args -- 建议使用 getParent() 获取模板输入的参数 local html = mw.html.create('div') :addClass('gf-infobox') -- 1. 标题 local name = cleanParam(args['标题']) or cleanParam(args['名字']) or mw.title.getCurrentTitle().subpageText html:tag('div') :addClass('gf-title') :wikitext(name) -- 2. 图片 local image = cleanParam(args['image']) local imgContainer = html:tag('div'):addClass('gf-image-container') if image then imgContainer:wikitext(string.format('[[File:%s|280px|class=infobox-image]]', image)) local imgCaption = cleanParam(args['图片说明']) if imgCaption then imgContainer:tag('div') :css('font-size', '0.9em') :css('margin-top', '4px') :wikitext(imgCaption) end else imgContainer:addClass('gf-no-image') :wikitext('啊嘞?!<br/>这个妹子怎么没有头的样子……') end -- 3. 基础资料分区 html:tag('div'):addClass('gf-section'):wikitext('基础资料') -- 4. 信息字段映射 local fields = { {'本名', cleanParam(args['本名'])}, {'别名', processMixedContent(args['别名'], frame)}, {'发色', p.formatHairColor(args, frame)}, {'瞳色', p.formatEyeColor(args, frame)}, {'声优', p.formatVoiceActor(args)}, {'萌点', processMixedContent(args['萌点'], frame)}, {'类型', cleanParam(args['类型'])}, {'稀有度', p.formatRarity(cleanParam(args['稀有度']))}, {'所属团体', cleanParam(args['所属团体'])}, {'个人状态', cleanParam(args['个人状态'])} } for _, field in ipairs(fields) do local label, value = field[1], field[2] if value then local row = html:tag('div'):addClass('gf-row') row:tag('div'):addClass('gf-label'):wikitext(label) row:tag('div'):addClass('gf-value'):wikitext(value) end end -- 5. 相关人士分区 local related = processMixedContent(args['相关人士'], frame) if related then html:tag('div'):addClass('gf-section'):wikitext('亲属或相关人') html:tag('div'):addClass('gf-related'):wikitext(related) end return tostring(html) end -- 内部格式化函数 (保持原逻辑并修正) function p.formatHairColor(args, frame) local v = cleanParam(args['多种发色']) or cleanParam(args['发色']) if not v then return nil end return frame:preprocess('{{Hair_color|' .. v .. '}}') end function p.formatEyeColor(args, frame) local v = cleanParam(args['多种瞳色']) or cleanParam(args['瞳色']) if not v then return nil end return frame:preprocess('{{Eye_color|' .. v .. '}}') end function p.formatVoiceActor(args) local va = cleanParam(args['多位声优']) or cleanParam(args['声优']) if not va then return nil end return string.format('[[%s]]', va) end function p.formatRarity(rarity) if not rarity then return nil end local rarityColors = {[2]='#777', [3]='#33566f', [4]='#7b813f', [5]='#a7753b', [6]='#ad4229'} local num = tonumber(rarity) or (rarity:find('★') and #rarity/3) -- 简单计算星星数 if num and rarityColors[math.floor(num)] then local color = rarityColors[math.floor(num)] local stars = type(num) == "number" and string.rep('★', num) or rarity return string.format('<span style="color:%s">%s</span>', color, stars) end return rarity end return p
该页面嵌入的页面:
Module:GFInfobox/doc
(
查看源代码
)
返回
Module:GFInfobox
。
查看“︁Module:GFInfobox”︁的源代码
来自OGAS数据中枢