• 首页
  • 随机
  • 最近更改
  • 特殊页面
  • 社群首页
  • 设置
  • 关于戏曲百科
  • 免责声明
戏曲百科
  • 登录

模板:NavboxV2

  • 监视
  • 查看源代码
    • 链入页面
    • 固定链接
    • 页面信息
模板文档[查看] [编辑] [历史] [清除缓存]
-{H|zh-cn:用户; zh-tw:使用者; zh-hk:用戶;}-

这是{{NavboxV2}}的Lua实现代码。

目录

  • 1 简介
  • 2 设计用途
  • 3 效果
    • 3.1 对比例子
  • 4 参数
  • 5 自{{Navbox}}系列模板转换
  • 6 转换注意

简介

合并了{{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}}系列,参考基准 本模板
行式 User:Cwek/工作室/Navbox/行式 User:Cwek/工作室/Navbox/testcase/行式
行式有子层 User:Cwek/工作室/Navbox/行式有子代 User:Cwek/工作室/Navbox/testcase/行式有子代
列式 User:Cwek/工作室/Navbox/列式 User:Cwek/工作室/Navbox/testcase/列式
列式有子层 User:Cwek/工作室/Navbox/列式有子代 User:Cwek/工作室/Navbox/testcase/列式有子代
折叠 User:Cwek/工作室/Navbox/折叠 User:Cwek/工作室/Navbox/testcase/折叠
折叠混合(包括行式、列式、折叠的子层) User:Cwek/工作室/Navbox/折叠列式 User:Cwek/工作室/Navbox/testcase/折叠列式
Template:哈利波特 Special:固定链接/60036259 User:Cwek/工作室/Navbox/T:哈利波特
Template:广州 Special:固定链接/60035252 User:Cwek/工作室/Navbox/T:广州
Template:广州地铁 Special:固定链接/59586101 User:Cwek/工作室/Navbox/T:广州地铁
Template:粵港澳大灣區公共交通 Special:固定链接/59654656 User:Cwek/工作室/Navbox/T:粵港澳大灣區公共交通
Template:JR東日本的車輛 Special:固定链接/61531803 Special:固定链接/62385808

参数

与{{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。
  • removeGroupPadding:用于区别{{Navbox|child}}和{{Navbox subgroup}},后者在Groupn字段的单元格增加一组padding的配置,适用于子Navbox层。任意值,存在则可,为移除该padding配置(对应{{Navbox|child}})。

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

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

例子
{{Navbox}}系列 本模板
<syntaxhighlight lang="text">
  • 查
  • 论
  • 编
{{{title}}}
{{{above}}}
{{{imageleft}}}
{{{group1}}}
  • 查
  • 论
  • 编
{{{list1-title}}}
{{{list1-above}}}
{{{list1-imageleft}}}
{{{list1-group1}}}
{{{list1-list1}}}
{{{list1-image}}}
{{{list1-group2}}}
{{{list1-list2}}}
{{{list1-below}}}
{{{image}}}
{{{group2}}}
{{{list2-group1}}}
{{{list2-list1}}}
{{{list2-group2}}}
{{{list2-list2}}}
{{{below}}}

</syntaxhighlight>

<syntaxhighlight lang="text">
  • 查
  • 论
  • 编
{{{title}}}
{{{above}}}
{{{imageleft}}}
{{{group1}}}
  • 查
  • 论
  • 编
{{{list1-title}}}
{{{list1-above}}}
{{{list1-imageleft}}}
{{{list1-group1}}}
{{{list1-list1}}}
{{{list1-image}}}
{{{list1-group2}}}
{{{list1-list2}}}
{{{list1-below}}}
{{{image}}}
{{{group2}}}
{{{list2-group1}}}
{{{list2-list1}}}
{{{list2-group2}}}
{{{list2-list2}}}
{{{below}}}

</syntaxhighlight>

转换注意

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

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

上述文档嵌入自模块:NavboxV2/doc。 (编辑 | 历史)
编者可以在本模板的沙盒 (创建 | 镜像)和测试样例 (创建)页面进行实验。
本模板的子页面。
检索自“https://wiki66.com/index.php?title=模板:NavboxV2&oldid=46843”
分类:​
  • 含有受损文件链接的页面
  • 放置于模板的noteTA
  • 没有使用水平列表的导航框
  • Name參數和實際不同的導航框
最后编辑于2021年6月17日 (星期四) 05:00

语言

    此页面在其他语言不可用。

    戏曲百科
    • 本页面最后编辑于2021年6月17日 (星期四) 05:00。
    • 错误反馈
    • 关于戏曲百科
    • 免责声明
    • 豫ICP备13003402号-1
    • 桌面版