如何在mediawiki中的#if值中使用参数?

时间:2016-05-29 05:38:47

标签: mediawiki mediawiki-templates

我正在尝试创建一个mediawiki模板:

|-
| {{{name}}}{{#if:{{{ref|}}}|<ref>{{{ref}}}</ref>|}}{{#if:{{{ndb|}}}|<ref>https://ndb.nal.usda.gov/ndb/foods/show/{{{ndb}}}</ref>|}} || {{{size|--}}} || {{{carbs|--}}} || {{{sugar|--}}} || {{{fiber|--}}} || {{{fat|--}}} || {{{protein|--}}}

大多数都可以正常运行,但如果我传递refndb参数,则#if无法正常运行

<ref>{{{ref}}}</ref>

<ref>https://ndb.nal.usda.gov/ndb/foods/show/{{{ndb}}}</ref>

我没有得到我期望的结果:

<ref>http://the.passed.value/</ref>

<ref>https://ndb.nal.usda.gov/ndb/foods/show/passed_value</ref>

1 个答案:

答案 0 :(得分:1)

#if似乎不是问题的原因。原因是<ref>未按您期望的顺序处理。您需要#tag在稍后的模板处理阶段生成解析器或扩展标记:

Template:Google源代码:

<includeonly><!--
-->{{#if: {{{ref|}}}
   | {{#tag: ref |{{{ref}}}}}
   }}<!--
-->{{#if: {{{q|}}}
   | {{#tag: ref |[https://google.com/search?q={{#urlencode:{{{q}}}}} Google: {{{q}}}]}}
   }}<!--
--></includeonly>

页面源代码:

{{Google
| ref = http://google.com/search?q=foo+bar
| q = foo bar
}}

<references/>

页面输出:

  

[1] [2]

     
      
  1. http://google.com/search?q=foo+bar
  2.   
  3. Google: foo bar
  4.