【问题标题】:MediaWiki: replace a tag in transclusionMediaWiki:在嵌入中替换标签
【发布时间】:2018-09-09 09:45:45
【问题描述】:

在基于 MediaWiki 安装 1.29 的自定义 wiki 中,我想在模板页面中包含一个示例。

为了包含这个示例,我希望打印模板的代码并显示它。所以我需要将文本写下两次:一次被<pre> 标签包围以显示文本,另一次以纯文本形式显示解释示例。

为了只维护一次文本,我考虑将示例插入到这样的子页面中 <pre>{{SomeTemplate|SomeParameter}}</pre> 并将此文本转换为在说明页面中显示。

因此,对于代码,我只是将 {{/subpage}} 嵌入,而要显示实际模板,我的计划是使用来自 https://www.mediawiki.org/wiki/Extension:ParserFunctions#replace 函数将 <pre></pre> 替换为空字符串。

第一部分完美无缺,第二部分我无法让它工作。我用于替换的代码是

{{#replace:{{#replace:{{/subpage}}|<nowiki><pre></nowiki>|}}|<nowiki></pre></nowiki>|}}

但这总是返回一个空字符串。事实上,即使是部分

{{#replace:{{/subpage}}|<nowiki><pre></nowiki>|}}

返回相同的空字符串。

足够有趣,连代码都可以

{{#replace:<nowiki><pre>{{SomeTemplate|SomeParameter}}</pre></nowiki>|<nowiki><pre></nowiki>|}}

什么都不返回。

我的计划是否可行并且我在语法上做错了什么,或者它在概念上是错误的并且永远不会起作用?

谢谢

卢卡

【问题讨论】:

  • 该函数是 mediawiki.org/wiki/Extension:ParserFunctions 的一部分。我很遗憾没有提到它:因为它内置在 MediaWiki 中并且我很久以前就启用了它,我错误地认为它是理所当然的。谢谢。
  • 使用{{#tag:pre}} 代替&lt;pre&gt; 有效吗?
  • 不幸的是,使用 {{#tag:pre}} 会导致相同的结果,显然是一个空字符串。

标签: mediawiki mediawiki-templates


【解决方案1】:

经过大量研究,我发现我从错误的角度处理问题。

我发现(这里是https://www.mediawiki.org/wiki/Help:Templates#Usage)前缀msgnw: 允许在不调用模板的情况下嵌入文本。 所以实现我的目标最简单的方法是创建一个只有代码的子页面,没有&lt;pre&gt;,然后使用:

&lt;code&gt;{{msgnw:/Subpage}}&lt;/code&gt;

显示底层代码,并且

{{/Subpage}}

显示示例。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-13
    • 2010-09-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多