Template:NavboxV2
| 此模板被引用於約36,000個頁面。 為了避免造成大規模的影響,所有對此模板的編輯應先於沙盒、測試樣例或您的沙盒上測試。实施修改前,建议先在討論頁發起討論。 模板引用數量會自動更新。 |
| 此模板不能在维基百科的移动版網頁中显示,只能在桌面版網頁中显示。 |
| 此模板已被模板保護。僅限模板編輯員及管理員編輯。 |
| 此模板使用Lua语言: |
| 导航框系列 |
|---|
|
{{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}}系列模板基本兼容,首層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。
- 在本模板添加子Navbox层时,必须传入这两个参数,这是本模板区分是否存在子Navbox层的依赖。本模板首层Navbox层无需添加
removeGroupPadding:用于区别{{Navbox|child}}和{{Navbox subgroup}},后者在Groupn字段的单元格增加一组padding的配置,适用于子Navbox层。任意值,存在则可,为移除该padding配置(对应{{Navbox|child}})。- {{Navbox subgroup}}是{{Navbox generic}}改型为{{Navbox}}后的遗漏产物,在此变更后等效于{{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關閉):
- Category:没有使用水平列表的导航框:未檢測到
hlist或plainlist樣式。 - Category:使用背景颜色的导航框:在
titlestyle、groupstyle、basestyle中硬編碼行內background顏色。 - Category:name參數和實際不同的導航框:傳入的
name參數與當前頁面實際標題不一致。
模组构成
- Module:NavboxV2:主邏輯模組,負責參數解析、DOM生成與輸出。
- Module:NavboxV2/NavboxContext:上下文管理模組,封裝前綴路徑與各層嵌套數據。
- Module:NavboxV2/EvenoddContext:統一維護跨層級奇偶行樣式。
- Module:Navbar:導航列生成模組(提供「查·論·編」按鈕)。
重定向
- {{Navbox2}}