Module:Navpills:修订间差异
来自OGAS数据中枢
更多操作
测试首页导航条 |
无编辑摘要 |
||
| 第2行: | 第2行: | ||
local p = {} | local p = {} | ||
-- | -- 辅助函数:获取参数中的数字后缀并排序 | ||
local function getArgNums(prefix, args) | local function getArgNums(prefix, args) | ||
local nums = {} | local nums = {} | ||
| 第16行: | 第16行: | ||
mArguments = require('Module:Arguments') | mArguments = require('Module:Arguments') | ||
local args = mArguments.getArgs(frame) | local args = mArguments.getArgs(frame) | ||
local html = mw.html.create('div'):addClass('adaptive-nav') | |||
local | |||
-- | -- 遍历所有带有数字后缀的 page 参数 | ||
local nums = getArgNums('page', args) | local nums = getArgNums('page', args) | ||
for _, i in ipairs(nums) do | for _, i in ipairs(nums) do | ||
local num = tostring(i) | local num = tostring(i) | ||
local | local moduleWrap = html:tag('div'):addClass('nav-module') | ||
-- 1. | -- 1. 创建胶囊按钮 | ||
local navpill = | local navpill = moduleWrap:tag('div') | ||
:addClass('template-navpill mw-customtoggle nav-pill-btn') | :addClass('template-navpill mw-customtoggle nav-pill-btn') | ||
:addClass('mw-customtoggle-game' .. num) -- | :addClass('mw-customtoggle-game' .. num) -- 绑定折叠ID | ||
-- | -- 插入背景图层 (参考星际公民风格) | ||
if args['image' .. num] then | if args['image' .. num] then | ||
navpill:tag('div'):addClass('template-navpill-background') | navpill:tag('div'):addClass('template-navpill-background') | ||
:wikitext(string.format('[[File:%s|x64px|link=]]', args['image' .. num])) | :wikitext(string.format('[[File:%s|x64px|link=]]', args['image' .. num])) | ||
navpill:addClass('has-bg') | |||
end | end | ||
-- | -- 插入文字 | ||
navpill:tag('span'):wikitext(args['text' .. num] or args['page' .. num]) | navpill:tag('span'):wikitext(args['text' .. num] or args['page' .. num]) | ||
-- 2. | -- 2. 创建对应的展开内容块 | ||
moduleWrap:tag('div') | |||
:addClass('mw-collapsible mw-collapsed nav-pill-content') | :addClass('mw-collapsible mw-collapsed nav-pill-content') | ||
:attr('id', 'mw-customcollapsible-game' .. num) | :attr('id', 'mw-customcollapsible-game' .. num) | ||
:tag('div'):addClass('pill-inner-content') | :tag('div'):addClass('pill-inner-content') | ||
:wikitext(args['content' .. num] or (args['page' .. num] .. ' | :wikitext(args['content' .. num] or (args['page' .. num] .. ' 的详细导航内容正在建设中...')) | ||
end | end | ||
-- | -- 引入样式表 | ||
return frame:extensionTag{ name = 'templatestyles', args = { src = 'Template:Navpills/styles.css' } } | return frame:extensionTag{ name = 'templatestyles', args = { src = 'Template:Navpills/styles.css' } } | ||
.. tostring( | .. tostring(html) | ||
end | end | ||
return p | return p | ||
2026年4月2日 (四) 12:14的版本
此模块的文档可以在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
-- 插入文字
navpill:tag('span'):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 = 'Template:Navpills/styles.css' } }
.. tostring(html)
end
return p