【问题标题】:Wikipedia if statement dont work维基百科 if 语句不起作用
【发布时间】:2018-08-10 08:15:45
【问题描述】:

这是我的模板:测试

id1: {{{#if: {{{id1}}} | {{{id1}}} | text1}}} <br>
id2: {{{#if: {{{id2}}} | {{{id2}}} | text2}}} <br>
id3: {{{#if: {{{id3}}} | {{{id3}}} | text3}}} <br>
id4: {{{#if: {{{id4}}} | {{{id4}}} }}} <br>
<br>

这是使用此模板的页面TestPage的代码:

{{Test
| id1 = 123
| id2 = 
}}

我的 TestPage 的输出(用户看到的)是:

id1: 123
id2:
id3: {{{id3}}}
id4: {{{id4}}}

我希望输出是:

id1: 123
id2: text2
id3: text3
id4:

我做错了什么?为什么这不输出我想要的? 编辑: 我正在使用 mediawiki 版本 mediawiki-1.30.0。

【问题讨论】:

  • 除非您的版本与 Wikipedia 上使用的版本不同,否则它必须是 {{#if,而不是 {{{#if
  • 你也可以设置一个默认值,如果一个值不存在,输出为空:{{{id|DEFAULT}}},所以对于一个空的默认值,使用{{{id|}}}。这确保了如果未定义 id,则在 if 语句中输出/使用的值为空。
  • 我尝试删除一个 {.现在输出是 id1: {{#if: 123 | 123 |文本1}}。 {{{id|}}} 和 {{{id|DEFAULT}}} 也不起作用。我正在使用 mediawiki-1.30.0。
  • 你使用哪个版本的ParserFunctions
  • 你能复制this help page上给出的例子吗?

标签: mediawiki wikipedia mediawiki-templates


【解决方案1】:

当未给出参数时(对于您的示例包含的id3id4id2 为空但已给出){{{id3}}} 计算为文字文本{{{id3}}}。这是#if 条件中的真值。

改为使用{{{id3|}}},它在管道之后有一个“当未给出时”的默认值,这里它是空的 - 在#if 条件下被视为虚假。考虑

id1: {{{id1|text1}}}<br>
id2: {{{id2|text2}}}<br>
id3: {{{id3|text3}}}<br>
id4: {{{id4|}}}<br>

你的包含会导致输出

id1: 123
id2:
id3: text3
id4: 

由于您希望在给定参数但为空时获得默认值,因此您将使用

id1: {{#if: {{{id1|}}} | {{{id1}}} | text1}} <br>
id2: {{#if: {{{id2|}}} | {{{id2}}} | text2}} <br>
id3: {{#if: {{{id3|}}} | {{{id3}}} | text3}} <br>
id4: {{#if: {{{id4|}}} | {{{id4}}} }} <br>

【讨论】:

    猜你喜欢
    • 2015-11-18
    • 1970-01-01
    • 2019-05-24
    • 1970-01-01
    • 2012-07-16
    • 2021-04-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多