Как использовать параметр в значении #if в mediawiki?
Я пытаюсь создать шаблон 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>
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]