跳转到内容

模組:NavboxV2/doc

本页使用了标题或全文手工转换
维基百科,自由的百科全书

这是Module:NavboxV2的文档页面

{{NavboxV2}}是新一代高效能、整合化的多功能導航框模板,合并了{{Navbox}}相关的一系列模板。融合了{{Navbox}}的行式、{{Navbox subgroup}}的子代模块包含、{{Navbox with columns}}的列式,{{Navbox with collapsible groups}}的折叠行式。

若有进一步降低模板展开后长度的需要,可将{{NavboxV2|...替换为{{#invoke:NavboxV2|navbox|...,以直接调用底層Lua模組。

机制/原理

[编辑]

简介

[编辑]

合并了{{Navbox}}相关的一系列模板。融合了{{Navbox}}的行式、{{Navbox subgroup}}的子代模块包含、{{Navbox with columns}}的列式,{{Navbox with collapsible groups}})的折叠行式。

改写自模块:Navbox(oldid=42280913)。

设计用途

[编辑]

在Category:引用模板后大小超过限制的页面中,有相当一部分页面是由于{{Navbox}}模板超载导致:

  • 根据WP:模板限制中“嵌套展开”的说法,相同页面的多次嵌套调用是会被分次统计的(例如:页面A嵌入页面B,页面B嵌入页面C,页面C相对页面A统计到的展开字节数是被计算了2次)。而现在Navbox的子代块、列式,折叠行式的实现都是基于Navbox行式的模板调用或类似样式结构迭代,这样就符合内部多次调用Navbox的条件,页面很容易会超过模版展开后大小的限制。
  • 实际上Lua的运行限制条件相当宽裕,50MB的内存限制,10秒的运行时限制,很多页面实际使用只在十分之一左右或以下,可以被大量压榨性能。

所以将Navbox所有的实现全部以Lua实现,希望能腾出解释器运行量到Lua运行量,降低解析器触发展开后大小限制的可能。

效果

[编辑]
在对于包含一层子Navbox的情况,展开后大小下降最多有50~60%左右。

对比例子

[编辑]
项目 {{Navbox}}系列,参考基准 本模板
Template:哈利波特 Special:固定链接/60036259 User:Cwek/工作室2/Navbox/T:哈利波特
Template:广州 Special:固定链接/60035252 User:Cwek/工作室2/Navbox/T:广州
Template:广州地铁车站 Special:固定链接/59586101 User:Cwek/工作室2/Navbox/T:广州地铁
Template:粵港澳大灣區公共交通 Special:固定链接/59654656 User:Cwek/工作室2/Navbox/T:粵港澳大灣區公共交通
Template:JR東日本的車輛 Special:固定链接/61531803 Special:固定链接/62385808
Template:中华人民共和国广播电视付费频道 Special:固定链接/77500465 Special:固定链接/77504799

用法

[编辑]

参数

[编辑]

與{{Navbox}}系列模板基本兼容,首層Navbox無需加入border,按需指定type即可,並新增部分参数填入:

  • type:Navbox的类型,对应值为vertical(对应{{Navbox}})、horizontal(对应{{Navbox with columns}})、vertical_collapsible(对应{{Navbox with collapsible groups}}),默认值为vertical。
  • border:Navbox的隐藏参数,用于控制Navbox的边框机制,来使子Navbox能被嵌入到父Navbox的值字段(例如list、col等)中,实际对应{{Navbox subgroup}}或{{Navbox|child}}的实现机制。对应值为child、subgroup任一个。
在本模板添加子Navbox层时,必须传入这两个参数,这是本模板区分是否存在子Navbox层的依赖。本模板首层Navbox层无需添加border,按需添加type。
  • removeGroupPadding:用于区别{{Navbox|child}}和{{Navbox subgroup}},后者在Groupn字段的单元格增加一组padding的配置,适用于子Navbox层。任意值,存在则可,为移除该padding配置(对应{{Navbox|child}})。

主参数

[编辑]
參數名 預設值 說明
type vertical Navbox類型:

vertical:垂直列表行式(對應{{Navbox}}) horizontal:水平分欄列式(對應{{Navbox with columns}}) vertical_collapsible:折疊行式(對應{{Navbox with collapsible groups}})

border 空 用於控制Navbox邊框機制。嵌入子Navbox時填入child或 ubgroup(兩者等效);若設為none則無邊框。
name 空 模板頁面名稱,用於生成查·論·編的{{Navbar}}導航連結。
state autocollapse 折疊狀態:autocollapse、collapsed、expanded、plain、off。
navbar 空 設為off或plain時關閉Navbar。
evenodd 空 控制列表斑馬紋:odd、even、swap(對調順序)、off(關閉)。
removeGroupPadding 空 (已廢棄) 原用於區分{{Navbox|child}}與{{Navbox subgroup}}。在此變更後兩者等效,該參數已不再使用。

子Navbox层识别参数

[编辑]

在本模板添加子Navbox層時,必須同時傳入以下兩個前綴參數,這是本模板區分是否存在子Navbox層的判定依據:

| <list/content>N-type = vertical | horizontal | vertical_collapsible
| <list/content>N-border = child | subgroup

例如:在list1嵌入子導航框,應宣告list1-type = vertical及list1-border = child。

外观与總样式

[编辑]
參數名 說明
navboxclass / bodyclass 容器與內部表格的CSS類別(推薦設置hlist)。
style / bodystyle 外層容器樣式。
basestyle 同時套用於title、above、below、group的基礎樣式。
titlestyle / titleclass 標題列樣式與類別。
groupstyle / groupwidth 分組表頭統一樣式與寬度。
liststyle / listpadding 列表單元格統一樣式與內邊距。
oddstyle / evenstyle 奇數、偶數行單元格樣式。
templatestyles 額外載入的TemplateStyles頁面。

垂直列表模式参数(type=vertical,上限35组)

[编辑]
參數名 說明
groupn 第n項分組表頭文字。
listn 第n項列表內容。
groupnstyle / listnstyle 第n項專用樣式。

水平分栏模式参数(type=horizontal,上限20欄、10列)

[编辑]
參數名 說明
colwidth/fullwidth 欄位統一寬度/是否強制表格寬度為100%。
colnheader 第n欄表頭。
coln 第n欄主要內容。
colnfooter 第n欄頁腳。
colnwidth 第n欄獨立寬度。
colnheadercolspan 第n欄表頭跨欄數。

折叠分组模式参数(type=vertical_collapsible,上限20组)

[编辑]
參數名 說明
groupn / sectn / sectionn 第n個可折疊分組的標題。
contentn / listn 第n個折疊組展開後的內容。
abbrn 分組簡稱。搭配頂層selected = <abbrN>指定預設展開的分組。
staten 指定第n個分組的折疊狀態(collapsed或expanded)。

範例

[编辑]

標準

[编辑]

即type=vertical。

{{NavboxV2
| type = vertical
| name = Template:主要作業系統
| title = 主要[[作業系統]]
| state = autocollapse
| bodyclass = hlist
| above = 按內核架構與授權類型分類的現代常見作業系統
| group1 = [[類Unix]]系統
| list1 =
[[Linux]]
** [[Android]]
** [[Ubuntu]]
** [[Debian]]
** [[Fedora]]
[[BSD]]
** [[FreeBSD]]
** [[OpenBSD]]
[[macOS]]
[[iOS]]
| group2 = [[Windows NT]]系列
| list2 =
[[Windows 10]]
[[Windows 11]]
[[Windows Server 2022]]
[[Windows Server 2025]]
| group3 = 即時與微核心
| list3 =
[[QNX]]
[[VxWorks]]
[[FreeRTOS]]
[[鴻蒙|HarmonyOS]]
| below = 參見:[[作業系統列表]] · [[作業系統歷史]]
}}

水平列式

[编辑]

即type=horizontal。

{{NavboxV2
| type = horizontal
| name = Template:電腦核心硬體
| title = 個人電腦主要核心硬體架構
| state = autocollapse
| colwidth = 25%
| fullwidth = true
| col1header = [[中央處理器]](CPU)
| col1 =
[[算術邏輯單元]](ALU)
[[控制單元]](CU)
[[快取]](L1/L2/L3 Cache)
[[暫存器]]
| col1footer = 運算與指令處理核心
| col2header = [[圖形處理器]](GPU)
| col2 =
[[串流多處理器]](SM)
光線追蹤單元(RT Core)
張量計算單元(Tensor Core)
視訊編解碼器
| col2footer = 大規模並行渲染
| col3header = [[隨機存取記憶體]](RAM)
| col3 =
[[DDR SDRAM]](DDR4 / DDR5)
[[LPDDR]]
[[ECC記憶體|ECC 糾錯]]
雙通道 / 四通道匯流排
| col3footer = 高速揮發性資料暫存
| col4header = [[電腦數據存儲|持久化儲存]](Storage)
| col4 =
[[固態硬碟]](PCIe NVMe SSD)
[[硬碟]](SATA HDD)
[[快閃記憶體]](NAND Flash)
主控晶片
| col4footer = 非揮發性檔案存儲
| below = 參見:[[馮·諾曼架構]] · [[主機板]] · [[匯流排]]
}}

折疊分組

[编辑]

即type=type = vertical_collapsible。

{{NavboxV2
| type = vertical_collapsible
| name = Template:漫威電影宇宙
| title = [[漫威電影宇宙]](MCU)系列作品
| state = autocollapse
| bodyclass = hlist
| selected = phase3 <!-- 預設僅展開第三階段,第一、第二階段保持折疊 -->
| sect1 = 第一階段:復仇者集結(2008年-2012年)
| abbr1 = phase1
| list1 =
《[[鋼鐵人 (電影)|鋼鐵人]]》(2008)
《[[無敵浩克]]》(2008)
《[[鋼鐵人2]]》(2010)
《[[雷神索爾 (電影)|雷神索爾]]》(2011)
《[[美國隊長 (電影)|美國隊長]]》(2011)
《[[復仇者聯盟 (電影)|復仇者聯盟]]》(2012)
| sect2 = 第二階段(2013年-2015年)
| abbr2 = phase2
| list2 =
《[[鋼鐵人3]]》(2013)
《[[雷神索爾2:黑暗世界]]》(2013)
《[[美國隊長2:酷寒戰士]]》(2014)
《[[星際異攻隊 (電影)|星際異攻隊]]》(2014)
《[[復仇者聯盟2:奧創紀元]]》(2015)
《[[蟻人 (電影)|蟻人]]》(2015)
| sect3 = 第三階段:無限傳奇完結(2016年-2019年)
| abbr3 = phase3
| list3 =
《[[美國隊長3:英雄內戰]]》(2016)
《[[奇異博士 (電影)|奇異博士]]》(2016)
《[[星際異攻隊2]]》(2017)
《[[蜘蛛人:返校日]]》(2017)
《[[雷神索爾3:諸神黃昏]]》(2017)
《[[黑豹 (電影)|黑豹]]》(2018)
《[[復仇者聯盟3:無限之戰]]》(2018)
《[[蟻人與黃蜂女]]》(2018)
《[[驚奇隊長 (電影)|驚奇隊長]]》(2019)
《[[復仇者聯盟:終局之戰]]》(2019)
《[[蜘蛛人:離家日]]》(2019)
| below = 參見:[[漫威電影宇宙電影列表]] · [[漫威電影宇宙電視劇]]
}}

混合

[编辑]
{{NavboxV2
| name = Template:太陽系探測
| title = [[太陽系]]空間探測任務
| state = autocollapse
| bodyclass = hlist
| above = 人類發射前往地月系以外天體的無人探測器與深空任務
| group1 = [[太陽]]
| list1 =
[[尤利西斯號]]
[[SOHO (太空船)|SOHO]]
[[日地關係天文台|STEREO]]
[[帕克太陽探測器]]
[[太陽軌道載具]]
| group2 = [[行星]]
| list2-type = vertical
| list2-border = child
| list2-group1 = [[水星]]
| list2-list1 =
[[水手10號]]
[[信使號]]
[[貝皮可倫坡號]]
| list2-group2 = [[金星]]
| list2-list2 =
[[水手2號]]
[[金星先鋒號]]
[[麥哲倫號]]
[[破曉號]]
| list2-group3 = [[火星]]
| list2-list3 =
[[海盜號]]
[[火星全球探勘者號]]
[[好奇號]]
[[毅力號]]
[[天問一號]]([[祝融號火星車|祝融號]])
| list2-group4 = 外行星
| list2-list4 =
[[先鋒10號]]
[[航海家1號]]
[[航海家2號]]
[[伽利略號]]
[[卡西尼-惠更斯號]]
[[朱諾號]]
| group3 = 參與機構
| list3-type = horizontal
| list3-border = child
| list3-colwidth = 25%
| list3-col1header = 美洲
| list3-col1 =
[[NASA]](美國)
[[加拿大太空局|CSA]](加拿大)
| list3-col2header = 歐洲
| list3-col2 =
[[歐洲太空總署|ESA]](歐洲多國)
[[法國國家太空研究中心|CNES]](法國)
[[德國航空太空中心|DLR]](德國)
| list3-col3header = 亞洲
| list3-col3 =
[[國家航天局|CNSA]](中國)
[[宇宙航空研究開發機構|JAXA]](日本)
[[印度太空研究組織|ISRO]](印度)
| list3-col4header = 其他
| list3-col4 =
[[俄羅斯航太|Roscosmos]](俄羅斯)
[[阿聯酋太空總署|UAESA]](阿聯)
| below = 參見:[[太陽系探測任務列表]] · [[深空網路]] · [[火星探測]]
}}

自{{Navbox}}系列模板转换

[编辑]

将原有嵌入{{Navbox}}系列模板的值字段listn(其他类同)改为listn-,并作为相应嵌套子Navbox模板的参数的前缀来加入,使这些模板嵌套转换为扁平化的一层模板参数。

例子
{{Navbox}}系列 本模板
{{Navbox
|name = Navbox/doc
|state = expanded
|image = {{{image}}}
|imageleft = {{{imageleft}}}
|title = {{{title}}}
|above = {{{above}}}
|group1 = {{{group1}}}
|list1 = {{Navbox subgroup
 | title = {{{list1-title}}}
 | above = {{{list1-above}}}
 | below = {{{list1-below}}}
 | imageleft = {{{list1-imageleft}}}
 | image = {{{list1-image}}}
 | group1 = {{{list1-group1}}}
 | list1  = {{{list1-list1}}}
 | group2 = {{{list1-group2}}}
 | list2  = {{{list1-list2}}}
}}
|group2 = {{{group2}}}
|list2 = {{Navbox subgroup
| group1 = {{{list2-group1}}}
| list1  = {{{list2-list1}}}
| group2 = {{{list2-group2}}}
| list2  = {{{list2-list2}}}
}}
|below = {{{below}}}
}}
{{NavboxV2
|name = Navbox/doc
|state = expanded
|tracking = no
|image = {{{image}}}
|imageleft = {{{imageleft}}}
|title = {{{title}}}
|above = {{{above}}}
<!--  list1 -->
|group1 = {{{group1}}}
<!-- list1-sub-->
|list1-type =vertical <!--作为list1的子Navbox层,全部相应参数加上对应前缀“list1-”,下同,如此类推 -->
|list1-border=child
|list1-title = {{{list1-title}}}
|list1-above = {{{list1-above}}}
|list1-below = {{{list1-below}}}
|list1-imageleft = {{{list1-imageleft}}}
|list1-image = {{{list1-image}}}
|list1-group1 = {{{list1-group1}}}
|list1-list1  = {{{list1-list1}}}
|list1-group2 = {{{list1-group2}}}
|list1-list2  = {{{list1-list2}}}
<!--  list2 -->
|group2 = {{{group2}}}
<!-- list2-sub-->
|list2-type =vertical <!--作为list2的子Navbox层,全部相应参数加上对应前缀“list2-”,下同,如此类推 -->
|list2-border=child
|list2-group1 = {{{list2-group1}}}
|list2-list1  = {{{list2-list1}}}
|list2-group2 = {{{list2-group2}}}
|list2-list2  = {{{list2-list2}}}
<!--end-->
|below = {{{below}}}
}}

注意事项

[编辑]

转换注意

[编辑]

由于{{Navbox}}系列的实现较为复杂和涉及自我嵌套,本模板的实现也为此做了对应兼容性调整,可能会出现一些参数被过度透传(可能在样式控制部分,原因是原有设计通过控制参数传入来隔离,而本设计为了使参数扁平化,导致部分这些参数无法隔离)。而且模板参数非常依赖命名规律,在转换替换前,请进行testcase检查,确认转换后能与原来的样式、功能基本一致,才应用转换。如果出现问题,请保留案例并联系本模板维护编辑协助处理,或者放弃。

虽然可以在值字段(例如list、col等)重新嵌入{{Navbox}}系列模板,但这和原有做法一样,失去了本模板降低解析器限制的作用,不建议这样做。

限制大小

[编辑]

模組內部設定了容量上限,超出範圍的參數將不予處理: 垂直行式(vertical):最多支援35個列表項。 水平列式(horizontal):最多支援20欄,每欄最多支援10個list。 折疊分組(vertical_collapsible):最多支援20個分組。 子代深度:最多支援嵌套遞迴至第10層。

技术细节

[编辑]

自动维护分类

[编辑]

在模板命名空間(排除/doc、/sandbox、/testcases)下,本模組會自動將有問題的導航框歸入相應分類(可透過tracking = no或nocat = true關閉):

模组构成

[编辑]

重定向

[编辑]

参见

[编辑]