在另一篇文章《如何在某个条目中调用其他条目的内容——采用Excerpt模板》中曾经提到过Excerpt模板,写文章的时候还一切正常,但是有朋友同样使用之后就发现并没有那么简单。

一、加载报错

首先第一条就是报错,错误内容大致为:Lua错误 在模块:TNT的第159行:Missing JsonConfig extension; Cannot load https://commons.wikimedia.org/wiki/Data:I18n/Module:Excerpt.tab
Missing JsonConfig extension.png
解决该问题的办法就是加入参数|hat=no。从解释Hide the hatnote "This section is an excerpt from..."来看隐藏了摘自哪里的消息提醒,因为维基百科是多语言站点,使用中会需要将特定语言进行转换。而我们原封不动抄代码的花,调用的这部分又恰恰被国内的网络给封了,所以不出问题才怪。
至于是不是一定要用到这个摘自哪里的功能,就看个人需要了。就算想用,不会改代码的我也只能默默地关闭。

二、连同模板一起被摘录

这个问题在最初测试时并不存在,直到我开始将页面复杂化,添加了很多模板(尤其是在序章中的信息框)。然后就成了下面这种情况:
MediaWiki-Excerpt.png
从上图可以看出,消歧义的模板被摘录进来了,然后信息框也被摘录进来了,只是我们在很多场合并不需要这些。
如果你抄的代码没有什么遗漏,那么在Module:Excerpt/config中其实将Infobox开头的模板列入了黑名单,所以除非你像我一样,把类似Infobox_person之类的改成了中文“人物信息框”,那它当然也就不起作用了。
要解决上述问题,要么修改Module:Excerpt/config中的黑名单列表,比如:

templates = {
    '.*[Ii]nfobox.*', '.*信息框.*', '[Ee]xtension', '[Tt]ool', '[Ss]kin', -- infoboxes
},

当然还有一种简单的方法,在调用模板的时候加入参数|templates=*|templates=.*则正好相反,调用所有的模板,哪怕你在设置中已经将其加入了黑名单,比如Infobox)。
如果想禁用个别模板,还可以在模板名前加上负号-,比如|templates=-测试就是禁用测试模板。

以上内容均可参见官方文档的说明。

最后修改:2022 年 10 月 14 日
如果觉得我的文章对你有用,请随意赞赏