如何在不使用#invoke的情况下转换模板时,如何替换魔术字?

时间:2017-07-18 05:17:25

标签: mediawiki mediawiki-templates

我正在尝试制作一个显示其放置时间的模板。我试过这个:

This is a template ({{<includeonly>subst:</includeonly>CURRENTTIMESTAMP}})

但是当它被转换时,它将显示为This is a template ({{subst:CURRENTTIMESTAMP}})而不是替换时间戳。然后我尝试了

This is a template ({{{{{|safesubst:}}}CURRENTTIMESTAMP}})

但那并没有替代它;时间戳会不断更新。接下来,我试过

This is a template ({{<includeonly>{{{|safesubst:}}}</includeonly>CURRENTTIMESTAMP}})

但没有骰子。

我知道{{#invoke:}}有可能,但我没有这个选择。有人可以帮助我吗?

1 个答案:

答案 0 :(得分:0)

考虑如何存储模板。如果以递归方式替换模板,则模板的内容将存储在包含页面的wiki文本中,并将CURRENTTIMESTAMP替换为实际时间戳。如果您不替换模板,则wiki文本将仅包含{{MyTemplate}},并且编辑的时间戳不会存储在任何位置;当解析器呈现文章并遇到CURRENTTIMESTAMP时,它将只使用当前时间戳。没有办法,#invoke或不。{/ p>

您可以做的是将时间戳作为参数,因此在包含页面中您将编写{{MyTemplate|{{subst:CURRENTTIMESTAMP}}}},然后时间戳将存储在页面中。您可以使用该确切内容创建包装器模板,以便用户只需键入{{subst:MyTemplateWrapper}}即可。您甚至可以使模板显示错误/添加错误类别在使用时不使用,但that's a bit more involved