我正在尝试创建一个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|--}}}
大多数都可以正常运行,但如果我传递ref
或ndb
参数,则#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>
答案 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]