模組:Carousel
外观
页面轮展模块,可用于首页特色条目、优良条目展示。
用法
Step 1: 创建JSON页面
首先,需要创建一个JSON页面,其中记录了要轮展嵌入的页面,以及轮展的顺序。以下是一个例子(User:PhiLiP/carousel-example.json):
[
{
"title": "1689年波士顿起义",
"displayTimeRanges": [
[
20150304123013,
null
]
]
},
{
"title": "孔子鸟属",
"displayTimeRanges": [
[20060313005324, 20090614110222]
]
},
{
"title": "1850年大西洋飓风季",
"displayTimeRanges": [
[
20141030151730,
null
]
]
},
{
"title": "1873年铸币法案",
"displayTimeRanges": [
[
20160805143015,
null
]
]
},
{
"title": "1880年民主党全国大会",
"displayTimeRanges": [
[
20141213150114,
null
]
]
}
]
Step 2: 调用轮展模块
效果:
第13行Lua错误:attempt to concatenate field '?' (a table value)
在要显示轮展内容的位置,按下述方式调用模块:
{{#invoke:Carousel|main|candidateList=User:PhiLiP/carousel-example.json}}
可选参数
效果:
(当前时间戳为20250526041351,显示第1条)
第13行Lua错误:attempt to concatenate field '?' (a table value)
除了candidateList
外,有两个可选参数timeStart
和timeInterval
。timeStart
定义轮展的起始时间(以MediaWiki时间戳规定的UTC时间,默认值19700101000000,即UTC时间1970年1月1日0时0分0秒);timeInterval
定义每轮展示的秒数(默认值86400秒,即1天)。下为示例:
(从UTC时间2025年5月26日0时0分0秒起,每小时更换一次。)
{{#invoke:Carousel|main|candidateList=User:PhiLiP/carousel-example.json|timeStart=20250526000000|timeInterval=3600}}
local p = {}
function getCandidateList(args)
local page = mw.title.new(args.pageName)
return mw.text.jsonDecode(page:getContent(), mw.text.JSON_TRY_FIXING)
end
function p.main(frame)
local candidateList = getCandidateList{pageName = frame.args.candidateList}
local timeStart = frame.args.timeStart or 0
local timeInterval = frame.args.timeInterval or 86400
local index0 = math.floor((os.time() - timeStart) / 86400) % #candidateList
return "{{:" .. candidateList[index0 + 1] .. "}}"
end
return p