MediaWiki模板递归调用不生效 无法正确解析参数对应模板内容
问题原因
- 你使用的
{{style1|content}}写法仅会将字符串content作为纯文本参数传递给style1模板,MediaWiki默认不会自动将参数值识别为模板名称进行求值,因此只会直接显示参数文本content,不会拉取template:content的实际内容。 - 该写法的生效前提是
style1模板内部已做好参数作为模板名的解析逻辑,未做对应配置的情况下无法自动拉取其他模板内容。
解决方案
方案1:嵌套调用模板(无需修改现有模板,推荐)
直接在参数位嵌套调用content模板,写法如下:
{{style1|{{content}}}}
MediaWiki会优先解析内层的{{content}}得到结果abc,再将该结果传入style1应用缩小50%的样式,即可得到预期展示效果。
如果你的站点未配置模板短名调用权限,需写全命名空间:{{Template:style1|{{Template:content}}}}
方案2:修改style1模板适配动态模板名调用
如果需要保持{{style1|content}}的调用写法,可修改style1模板的内部代码,将参数解析逻辑改为自动识别模板名:
假设原style1模板代码为:
<span style="font-size:50%">{{{1}}}</span>
修改为:
<span style="font-size:50%">{{{{{1}}}}}</span>
修改后传入的参数会被作为模板名解析,自动拉取对应模板的内容应用样式。
内容的提问来源于stack exchange,提问作者rohitt
相关产品推荐
相关产品推荐

