将参数从动态页面列表传递到Semantic Mediawiki

时间:2013-02-19 20:45:42

标签: mediawiki mediawiki-templates semantic-mediawiki dynamic-pages

我正在尝试创建一个模板,该模板将通过生成带有动态页面列表的页面列表来输出动态报表,然后使用Semantic Mediawiki在每个页面上运行查询,从而在表格中输出整个页面。模板的结构如下所示:

{| class="wikitable sortable collapsible collapsed" width="100%"
|- valign="bottom"
! width="15%" | Compound ID
! width="15%" | Generic name
! width="15%" | Trade name
! width="15%" | Developer
! width="10%" | Phase of development
! width="30%" | Target
{{#dpl:
 | category=compounds
 | linksto={{PAGENAME}}{{#dpl: linksto={{PAGENAME}} | redirects=only | mode=userformat | format=,{{!}},%TITLE%, | suppresserrors=true }}
 | ignorecase=true
 | distinct=strict
 | format=,{{!}}- valign="top"\n{{indication-based compound list/row|%TITLE%}}\n
 | noresultsheader={{!}}-\n{{!}} colspan="6" align="center" {{!}} ''No compounds have yet been studied for this indication.''
}}
|}

{{indication-based compound list/row}}包含以下内容:

<includeonly>{{!}} {{#show: {{{#ask}}} | ?compound id }}
{{!}}{{!}} {{#show: {{{#ask}}} | ?compound generic name }}
{{!}}{{!}} {{#show: {{{#dpl}}} | ?compound trade name }}
{{!}}{{!}} {{#show: {{{#dpl}}} | ?developer }}
{{!}}{{!}} {{#ask: [[category:clinical studies]][[compound number::{{{1|}}}]] | ?Study phase=| limit=1| mainlabel=-| searchlabel=| sort=Study phase| order=descending }}
{{!}}{{!}} {{#show: {{{1|}}} | ?target }}</includeonly>

{{indication-based compound list/row|infliximab}}查询是这不仅仅是一个简单的DPL表的原因:因为特定指示的特定化合物的临床开发的当前阶段是频繁变化的动态数据,唯一的选择似乎是使用{{#dpl}}查询来找出满足参数的临床试验中研究阶段的最高值。但是这个模板将调查自动生成的页面,我没有办法自动加载每个化合物的指示列表(应用语义标记),所以相反它是基于指示链接的列表生成的由每个复合页面上的{{#dpl}}函数生成。

我已经逐步完成了这个步骤,以下都不是问题所在:

  1. 模板代码合理,并生成适当的结构。
  2. 表格行模板是合理的,如果我删除format = ,{{template}}函数并将其替换为模板和复合页面名称作为参数,例如{{#show}},它创建了我正在寻找的输出。
  3. 使用默认输出格式时,{{#ask}}函数会生成正确的页面列表。
  4. 当{{1}}使用简单虚拟模板(只是无序列表)时,{{1}}函数会将列表作为顺序参数正确传递。
  5. 然而,当我把所有的碎片放在一起时,我只得到空的桌子。 {{1}}和{{1}}函数似乎无法接受DPL输入作为参数。是否有一个额外的论点或中间步骤,我正在跳过,可以消毒输入,使整个事情工作?或者DPL和SMW在这方面根本不兼容?

    • DynamicPageList 2.01
    • Semantic MediaWiki 1.8
    • MediaWiki 1.20.2
    • PHP 5.3.19(apache2handler)
    • MySQL 5.1.30

1 个答案:

答案 0 :(得分:2)

看起来问题是当您使用PAGE%参数时,Semantic Mediawiki无法解析动态页面列表生成的%TITLE%format变量,并且没有办法解决这个问题因为DPL在函数完成之前不会将它们呈现为实际数据。