2016-05-29 5 views
0

mediawikiの#if値でパラメータを使用するにはどうすればよいですか?私は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>{{{ref}}}</ref>

を得ることのほとんどはOKに動作しますが、私は refまたは ndbパラメータを渡すと、 #ifが正しく動作しません。

または

<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>が期待通りの順序で処理されないためです。 Template:Google

ソースコード:後でテンプレート処理段階でパーサまたは拡張タグを生成する#tagが必要

<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. Google: foo bar
関連する問題