【问题标题】:MediaWiki: Calling Template, ParserFunctions condition depending on External data valuesMediaWiki:调用模板,ParserFunctions 条件取决于外部数据值
【发布时间】:2013-10-22 11:40:34
【问题描述】:

我正在尝试在我的 MediaWiki 页面的表中显示来自 MySQL DB 的数据。使用外部数据扩展函数#get_db_data 和#for_external_table 获取数据,这些函数运行良好。不过,我还想做两件事:

  • 使用获取的值作为模板名称:当 DB 中的值为 x 时,插入 Template:X(或 {{X}})

  • 在使用 ParserFunctions 扩展的条件中使用(另一个)获取的值。具体来说,返回一个数字。如果数字小于 100,则显示在括号中,否则不显示。

这是目前为止的代码:

{{#get_db_data:
db=pravidla
|from=alch
|order by=nazev
|data=nazev=nazev,prima=prima,primaproc=prima_proc,sekunda=sekunda,sekundaproc=sekunda_proc,dominanta=dominanta
}}

{| class="wikitable sortable" style="border: solid 1px black"
|+ Tabulka přísad
|''Přísada''
|''Prima''
|''Sekunda''
|''Dominanta'' {{#for_external_table:<nowiki/>
{{!}}-
{{!}} {{{nazev}}}
{{!}} {{{prima}}} ({{{primaproc}}} %)
{{!}} {{{sekunda}}} ({{{sekundaproc}}} %)
{{!}} {{{dominanta}}} }}
|}

prima、sekunda和dominida变量中的值应替换为同名模板。 {{{{{prima}}}}}{{Lcb}}{{Lcb}}{{{prima}}}{{Rcb}}{{Rcb}}(其中 Lcb={ 和 Rcb=})都不起作用。

中间两个单元格中的值的括号应该只在值小于100(百分比)时显示,所以像{{#ifeq: {{{primaproc}}} | 100 | | ({{{primaproc}}} %) }}这样的东西应该是有序的,但是尽管尝试了我还是没有运气。

感谢您阅读本文,欢迎提供任何见解。

【问题讨论】:

    标签: mysql templates if-statement mediawiki


    【解决方案1】:

    通过将 ExternalData 扩展函数 #for_external_table 替换为 #display_external_table,我设法解决了这两个问题。后者将检索到的数据作为变量传递给模板;当放置在单独的Template:Table row 页面中时,相同的代码可以工作。所以解决方案是这样的:

    原始页面,显示表格:

    {{#get_db_data:
    db=pravidla
    |from=alch
    |order by=nazev
    |data=nazev=nazev,prima=prima,primaproc=prima_proc,sekunda=sekunda,sekundaproc=sekunda_proc,dominanta=dominanta
    }}
    
    {| class="wikitable sortable" style="border: solid 1px black"
    |+ Tabulka přísad
    |''Přísada''
    |''Prima''
    |''Sekunda''
    |''Dominanta'' 
    {{#display_external_table:
    template=Table row
    |data=nazev=nazev,prima=prima,primaproc=primaproc,sekunda=sekunda,sekundaproc=sekundaproc,dominanta=dominanta}}
    |}
    

    新创建的Template:Table row页面:

    {{!}}-
    {{!}} {{{nazev}}}
    {{!}} {{ {{{prima}}} }} {{#ifeq: {{{primaproc}}} | 100 |  | ({{{primaproc}}} %) }}
    {{!}} {{ {{{sekunda}}} }} {{#ifeq: {{{sekundaproc}}} | 100 |  | ({{{sekundaproc}}} %) }}
    {{!}} {{ {{{dominanta}}} }}
    

    现在都使用 prima、sekunda 和dominanta 值来调用具有相同名称的模板和括号中百分比的条件显示现在就像一个魅力。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-04-20
      • 2018-07-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多