0

我正在研究 wiki,其中每个项目都有自己的页面,并且获取它的方式被列为

[[Is acquired::somewhere]]
[[Is acquired::somewhere else]]
[[Is acquired::some third acquisition way, really long one with some [[wiki]] links in it]]

该属性Is acquired已定义 type text

我的主要问题是:如何显示仅分配了一种获取方式(即一个Is acquired属性值)的那些项目的列表?

其次是:如何列出那些只有一种获取方式并且包含一些特定文本的项目?

我已阅读Extension:Arrays以及Count formatSubqueries文档,但我就是不知道如何将所有内容放在一起。

请注意,如果可能的话,最好避免使用Extension:Arrays因为我正在处理的 wiki 目前不支持此功能。

4

1 回答 1

1

我相信 SMW 没有办法过滤属性值的数量,所以你应该Extension:Arrays在这里使用。

引入将用作标志的新属性,例如。Is only one way带有值Yes/ No。在您的页面(包含Is acquired属性)的底部添加如下代码:

{{#arraydefine:test_arr|{{#show: {{PAGENAME}}|?Is acquired}}|,}}
{{#ifeq:{{#arraysize:test_arr}}|1|[[Is only one way::Yes]]|[[Is only one way::NO]]}}

这样,您的所有页面都将包含一个Is only one way带有值的属性,Yes或者No您可以对其进行过滤:

{{#ask: [[Is acquired::+]] [[Is only one way::Yes]] }}

将为您提供仅设置一个Is acquired属性值的页面。

于 2016-11-01T08:36:07.280 回答