模組:NavboxV2/doc
外觀
{{NavboxV2}}之Lua實現代碼。
簡介
[纂]並{{Navbox}}之模板。融{{Navbox}}之行式、{{Navbox subgroup}}之子代模块包含、{{Navbox with columns}}之列式,{{Navbox with collapsible groups}})之折疊行式。
改自模块:Navbox。
已隱藏部分未翻譯内容,歡迎參與翻譯。
设计用途
[纂]在Category:引用模板后大小超过限制之页面中,有相当一部分页面是由于{{Navbox}}模板超载导致。
- 根据WP:模板限制中“嵌套展开”之说法,相同页面之多次嵌套调用是会被分次统计之(例如:页面A嵌入页面B,页面B嵌入页面C,页面C相对页面A统计到之展开字节数是被计算了2次)。而现在Navbox之子代块、列式,折叠行式之实现都是基于Navbox行式之模板调用或类似样式结构迭代,这样就符合内部多次调用Navbox之条件,页面很容易会超过模版展开后大小之限制。
- 其次,实际上Lua之运行限制条件相当宽裕,50MB之内存限制,10秒之运行时限制,很多页面实际使用只在十分之一左右或以下,可以被大量压榨性能。
所以将Navbox所有之实现全部以Lua实现,希望能腾出解释器运行量到Lua运行量,降低解析器触发展开后大小限制之可能。
效果
[纂]- 在对于包含一层子Navbox之情况,展开后大小下降最多有50~60%左右。
对比例子
[纂]参数
[纂]与{{Navbox}}系列模板几乎兼容。但新增部分参数填入:
type
:Navbox之类型,对应值为vertical
(对应{{Navbox}})、horizontal
(对应{{Navbox with columns}})、vertical_collapsible
(对应{{Navbox with collapsible groups}}),默认值为vertical
。border
:Navbox之隐藏参数,用于控制Navbox之边框机制来使子Navbox能被嵌入到父Navbox之值字段(例如list
、col
等)中,实际对应{{Navbox subgroup}}之实现机制。对应值为child
、subgroup
任一个。
- 在本模板添加子Navbox层时,必须传入这两个参数,这是本模板区分是否存在子Navbox层之依赖。本模板首层Navbox层无需添加
border
,按需添加type
。
- 在本模板添加子Navbox层时,必须传入这两个参数,这是本模板区分是否存在子Navbox层之依赖。本模板首层Navbox层无需添加
removeGroupPadding
:用于区别{{Navbox|child}}和{{Navbox subgroup}},后者在Groupn字段之单元格增加一组padding之配置,适用于子Navbox层。任意值,存在则可,为移除该padding配置(对应{{Navbox|child}})。
将原有嵌入{{Navbox}}系列模板之值字段listn
(其他类同)改为listn-
,并作为相应嵌套子Navbox模板之参数之前缀来加入,使这些模板嵌套转换为扁平化之一层模板参数。
{{Navbox}}系列 | 本模板 |
---|---|
{{Navbox
|name = Navbox/doc
|state = uncollapsed
|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 = uncollapsed
|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}}系列模板,但这和原有做法一样,失去了本模板降低解析器限制之作用,不建议这样做。
此頁面為 模組:NavboxV2 的說明文件