将等号('=')传递给MediaWiki模板中的参数

时间:2014-01-03 05:49:43

标签: mediawiki mediawiki-templates

如何在不破坏模板解析器的情况下在模板参数中使用'='字符?我不是MediaWIKI的开发人员,所以我没有调试代码或检查日志,我希望这里的某个人有一个提示,可以转义传递给模板的字符。

使用以下内容创建名为“Test”的模板:

{{{ Test | R = 3/(2-(1+1)) }} 
}

像这样:

{{1}}

将渲染{{{1}}}而不是复杂的公式!我已经确定'='字符是罪魁祸首。

4 个答案:

答案 0 :(得分:20)

如果MediaWiki模板参数字符串包含等号,则符号前的所有内容都将作为参数的名称。如果包含等号,则将参数字符串分配给下一个可用的数字参数。

因此,最简单的解决方法是,如果您确实希望编号参数值包含等号,则要明确地对其进行编号,如下所示:

{{ Test | 1 = R = 3/(2-(1+1)) }}

这会导致模板中的{R = 3/(2-(1+1))}扩展为字符串{{ Test | equation = R = 3/(2-(1+1)) }} ,就像:

{{{equation}}}

将导致{{1}}扩展为相同的字符串。

答案 1 :(得分:11)

您可以创建值为{{=}}的{​​{1}}模板。然后使用该模板代替模板中的等号:

=

答案 2 :(得分:3)

我很惊讶没有人提到过这个,但是逃避这个角色呢?

使用message_id将有效。如果您无法记住代码,则可以使用=作为唯一内容创建模板Template:=(在该模板中使用非转义的=只会导致同样的问题)然后将其包含为=

答案 3 :(得分:1)

如果启用了扩展名:变量,请使用变量。变量定义几乎保留了所有符号,包括=|,它们只执行模板扩展。因此,在处理复杂的表达式和URL时,这是一种相当安全的方法。

{{ #vardefine: myequation | R = 3/(2-(1+1)) }}
{{ Test | {{ #var: myequation }} }}