2014-10-09 66 views
4

我有一個安裝了Semantic MediaWiki擴展的MediaWiki站點。我想測試一個字符串是否爲空。對於我這樣做:MediaWiki解析器函數#if用於未定義的模板參數

{{#if: {{{transcript.lncrna}}} | Yes | No}} 

顯然,{{{transcript.lncrna}}}爲空,它不包含任何內容。但是,解析器函數#if告訴我「是」作爲答案。

出了什麼問題?

回答

5

變量是空的,和可變被未定義are two different things,當涉及到MediaWiki解析器功能。在你的情況{{{transcript.lncrna}}}最有可能沒有定義。然後,MediaWiki會像字面上一樣對待它,正如你試圖寫出文本「{{{transcript.lncrna}}}」,這當然會使if語句返回true。

要檢查參數爲空,則需要添加一個空的默認值,寫{{{transcript.lncrna|}}}(注意單槓):

{{#if: {{{transcript.lncrna|}}} | Yes | No}} 

這是與不同的可能性表

   value of {{{param}}}: undefined | nothing | whitespace | something 
-------------------------------------------------------------------------------- 
{{#if: {{{param|}}} | Yes | No}} | No  | No |  No  | Yes 
{{#if: {{{param}}} | Yes | No}} | Yes | No |  No  | Yes