如何在MediaWiki中使用Lua模块显示图表

我目前有一个Lua模块,对传递给它的数据进行一些操作,然后我想在一篇文章中显示一个图表。

然而,我无法正确地显示图表,我已经尝试了几种方法:

  • 采用{{Graph:Chart|variablesHere}}的形式输出,使用推荐的扩展页面上的图表模板,通常情况下这种方法都是有效的。问题在于,因为它来自模块,所以我认为文本实际上并没有被MediaWiki处理,因此只显示纯文本。
  • 使用require('Module:Graph'),并将输出打印到页面上,然而它并没有正确生成图表,因为它没有正确格式化,我也无法理解如何像Template:Graph:Chart那样进行转换。

希望能得到关于如何继续前进的任何建议。

点赞
用户9383219
用户9383219

使用 frame:preprocess(string_containing_templates) 来展开包含模板如 Template:Graph:Chart 的字符串。

如果想避免预处理,可以调用 Module:Graphchart 函数,但要得到与展开 Template:Graph:Chart 相同的结果很复杂,因为需要将 Template:Chart:Graph 的内容翻译成 Lua。要生成与 frame:preprocess("{{Graph:Chart|width=100|height=100|x=1|y=1}}") 相同的内容,可以使用下面的代码:

 frame:extensionTag("templatestyles", nil, { src = "Graph:Chart/styles.css" })
  .. frame:extensionTag (
    "graph",
    require("Module:Graph").chart { args = { width = '100', height = '100', x = '1', y = '1' } }
  )

这里的 frame 必须是一个 frame 对象。这不太美观,如果模板有任何更改,将不会反映在模块代码中。因此,最好还是预处理模板。

2018-12-03 23:10:20