中医百科
搜索
切换搜索
切换菜单
切换个人菜单
查看“Module:NavboxV2/doc”的源代码
勤求古训,博采众方
更多语言
阅读
查看源代码
查看历史
模块
讨论
更多操作
←
Module:NavboxV2/doc
因为以下原因,您没有权限编辑该页面:
您请求的操作仅限属于该用户组的用户执行:
用户
您必须确认您的电子邮件地址才能编辑页面。请通过
参数设置
设置并确认您的电子邮件地址。
您可以查看和复制此页面的源代码。
{{NoteTA |G1 = IT |1 = zh-cn:用户; zh-tw:使用者; zh-hk:用戶; }} <!--咱行文稍稍正式点好不好。。--> ==简介== 合并了{{tl|Navbox}}相关的一系列模板。融合了{{tl|Navbox}}的行式、{{tl|Navbox subgroup}}的子代模块包含、{{tl|Navbox with columns}}的列式,{{tl|Navbox with collapsible groups}})的折叠行式。 改写自[[模块:Navbox]]。 ==设计用途== 在引用模板后大小超过限制的页面中,有相当一部分页面是由于{{tl|Navbox}}模板超载导致。 *根据[https://zh.wikipedia.org/wiki/Wikipedia:%E6%A8%A1%E6%9D%BF%E9%99%90%E5%88%B6 模板限制]中“嵌套展开”的说法,相同页面的多次嵌套调用是会被分次统计的(例如:页面A嵌入页面B,页面B嵌入页面C,页面C相对页面A统计到的展开字节数是被计算了2次)。而现在Navbox的子代块、列式,折叠行式的实现都是基于Navbox行式的模板调用或类似样式结构迭代,这样就符合内部多次调用Navbox的条件,页面很容易会超过模版展开后大小的限制。 *其次,实际上Lua的运行限制条件相当宽裕,50MB的内存限制,10秒的运行时限制,很多页面实际使用只在十分之一左右或以下,可以被大量压榨性能。 所以将Navbox所有的实现全部以Lua实现,希望能腾出解释器运行量到Lua运行量,降低解析器触发展开后大小限制的可能。 ==效果== :在对于包含一层子Navbox的情况,展开后大小下降最多有50~60%左右。 ===对比例子=== ==参数== 与{{tl|Navbox}}系列模板几乎兼容。但新增部分参数填入: *<code>type</code>:Navbox的类型,对应值为<code>vertical</code>(对应{{tl|Navbox}})、<code>horizontal</code>(对应{{tl|Navbox with columns}})、<code>vertical_collapsible</code>(对应{{tl|Navbox with collapsible groups}}),默认值为<code>vertical</code>。 *<code>border</code>:Navbox的隐藏参数,用于控制Navbox的边框机制来使子Navbox能被嵌入到父Navbox的值字段(例如<code>list</code>、<code>col</code>等)中,实际对应{{tl|Navbox subgroup}}的实现机制。对应值为<code>child</code>、<code>subgroup</code>任一个。 ::在本模板添加子Navbox层时,必须传入这两个参数,这是本模板区分是否存在子Navbox层的依赖。本模板首层Navbox层无需添加<code>border</code>,按需添加<code>type</code>。 *<code>removeGroupPadding</code>:用于区别{{tl|Navbox|child}}和{{tl|Navbox subgroup}},后者在Group<sub>n</sub>字段的单元格增加一组padding的配置,适用于子Navbox层。任意值,存在则可,为移除该padding配置(对应{{tl|Navbox|child}})。 ==自{{tl|Navbox}}系列模板转换== 将原有嵌入{{tl|Navbox}}系列模板的值字段<code>list<sub>n</sub></code>(其他类同)改为<code>list<sub>n</sub>-</code>,并作为相应嵌套子Navbox模板的参数的前缀来加入,使这些模板嵌套转换为扁平化的一层模板参数。 {| class="wikitable" |+例子 |- ! {{tl|Navbox}}系列 !! 本模板 |- |<syntaxhighlight lang="text"> {{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}}} }} </syntaxhighlight> |<syntaxhighlight lang="text"> {{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}}} }} </syntaxhighlight> |} ==转换注意== 由于{{tl|Navbox}}系列的实现较为复杂和涉及自我嵌套,本模板的实现也为此做了对应兼容性调整,可能会出现一些参数被过度透传(可能在样式控制部分,原因是原有设计通过控制参数传入来隔离,而本设计为了使参数扁平化,导致部分这些参数无法隔离)。而且模板参数非常依赖命名规律,在转换替换前,请进行testcase检查,确认转换后能与原来的样式、功能基本一致,才应用转换。如果出现问题,请保留案例并联系本模板维护编辑协助处理,或者'''放弃'''。 虽然可以在值字段(例如<code>list</code>、<code>col</code>等)重新嵌入{{tl|Navbox}}系列模板,但这和原有做法一样,失去了本模板降低解析器限制的作用,不建议这样做。
该页面使用的模板:
Template:NoteTA
(
查看源代码
)
Template:Tl
(
查看源代码
)
Template:Transclude
(
查看源代码
)
Module:Crc32lua
(
查看源代码
)
Module:NoteTA
(
查看源代码
)
Module:WikitextLC
(
查看源代码
)
返回
Module:NavboxV2/doc
。