跳至內容

模組: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關閉):

模組構成

[編輯]

重新導向

[編輯]

參見

[編輯]