我在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
定义了类型text
。
我的主要问题是:我如何才能显示那些只分配了一种获取方式的项目列表(即。一个Is acquired
属性值)?
次要是:如何列出那些只有一种获取方式的项目和这种方式包含一些特定的文本?
我读过扩展:数组和计数格式和子查询文档,但我只是不能弄清楚如何把所有东西放在一起。
请注意,最好是我想避免使用Extension:Arrays
,如果可能的话,因为这目前不支持我正在工作的wiki。
我相信在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
属性值设置的页面