如何在不使用 #invoke 的情况下仅在包含模板时替换魔术词?



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

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:}}是可能的,但我没有那个选择。有人可以帮助我吗?

考虑模板的存储方式。如果您递归替换模板,则模板的内容将存储在包含页面的wiki文本中,CURRENTTIMESTAMP替换为实际时间戳。如果您不替换模板,wiki文本将只包含{{MyTemplate}},并且编辑的时间戳不会存储在任何地方;当解析器渲染文章并遇到CURRENTTIMESTAMP时,它将只使用当前时间戳。无论#invoke与否,都没有办法解决这个问题。

您可以做的是将时间戳转换为参数,因此在包含页面中,您将写入{{MyTemplate|{{subst:CURRENTTIMESTAMP}}}}然后将时间戳存储在页面中。您可以使用该确切内容创建一个包装器模板,以便用户只需键入{{subst:MyTemplateWrapper}}这更容易一些。您甚至可以使模板在使用时显示错误/添加错误类别而无需订阅,尽管这涉及更多。

相关内容

  • 没有找到相关文章

最新更新