模块:Navpills
来自OGAS数据中枢
更多操作
此模块的文档可以在Module:Navpills/doc创建
local mArguments -- 延迟加载
local p = {}
-- 获取带数字后缀的参数列表 (例如 page1, page2 -> {1, 2})
local function getArgNums(prefix, args)
local nums = {}
for k, v in pairs(args) do
local num = tostring(k):match('^' .. prefix .. '([1-9]%d*)$')
if num then table.insert(nums, tonumber(num)) end
end
table.sort(nums)
return nums
end
function p.navpills(frame)
mArguments = require('Module:Arguments')
local args = mArguments.getArgs(frame)
-- 创建主容器
local root = mw.html.create('div'):addClass('adaptive-nav')
-- 遍历所有 pageN 参数
local nums = getArgNums('page', args)
for _, i in ipairs(nums) do
local num = tostring(i)
local moduleContainer = root:tag('div'):addClass('nav-module')
-- 1. 生成胶囊按钮
local navpill = moduleContainer:tag('div')
:addClass('template-navpill mw-customtoggle nav-pill-btn')
:addClass('mw-customtoggle-game' .. num) -- 绑定折叠 ID
-- 处理背景图
if args['image' .. num] then
navpill:addClass('has-bg')
navpill:tag('div'):addClass('template-navpill-background')
:wikitext(string.format('[[File:%s|x64px|link=]]', args['image' .. num]))
end
-- 按钮文字
navpill:tag('span'):wikitext(args['text' .. num] or args['page' .. num])
-- 2. 生成对应的内容块
local content = moduleContainer:tag('div')
:addClass('mw-collapsible mw-collapsed nav-pill-content')
:attr('id', 'mw-customcollapsible-game' .. num)
:tag('div'):addClass('pill-inner-content')
:wikitext(args['content' .. num] or (args['page' .. num] .. ' 的内容开发中...'))
end
-- 引入样式表并输出 HTML
return frame:extensionTag{ name = 'templatestyles', args = { src = 'Template:Navpills/styles.css' } }
.. tostring(root)
end
return p