打开/关闭菜单
打开/关闭外观设置菜单
打开/关闭个人菜单
未登录
未登录用户的IP地址会在进行任意编辑后公开展示。

模块:Navpills

来自OGAS数据中枢
秋绘君留言 | 贡献2026年4月2日 (四) 13:01的版本

此模块的文档可以在Module:Navpills/doc创建

local mArguments -- 延迟加载
local p = {}

-- 辅助函数:获取参数中的数字后缀并排序
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 html = mw.html.create('div'):addClass('adaptive-nav')

    -- 遍历所有带有数字后缀的 page 参数
    local nums = getArgNums('page', args)
    for _, i in ipairs(nums) do
        local num = tostring(i)
        local moduleWrap = html:tag('div'):addClass('nav-module')

        -- 1. 创建胶囊按钮
        local navpill = moduleWrap:tag('div')
            :addClass('template-navpill mw-customtoggle nav-pill-btn')
            :addClass('mw-customtoggle-game' .. num) -- 绑定折叠ID

        -- 插入背景图层 (参考星际公民风格)
        if args['image' .. num] then
            navpill:tag('div'):addClass('template-navpill-background')
                :wikitext(string.format('[[File:%s|x64px|link=]]', args['image' .. num]))
            navpill:addClass('has-bg')
        end

        -- 插入文字
        -- 找到生成 span 的地方,确保添加了 pill-text 类名
		navpill:tag('span')
			:addClass('pill-text')
			:wikitext(args['text' .. num] or args['page' .. num])

        -- 2. 创建对应的展开内容块
        moduleWrap: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

    -- 引入样式表
    return frame:extensionTag{ name = 'templatestyles', args = { src = 'Module:Navpills/styles.css' } } 
           .. tostring(root)
end

return p