2014-08-30 10 views
5

Tôi cần mẫu bảng kết quả truy vấn ngữ nghĩa, trong đó tôi có thể có cả kết quả ô được phân tách bằng dòng mới cho một số cột và cột phân cách bằng dấu phẩy trong cùng một bảng.Định dạng mẫu kết quả truy vấn Semantic MediaWiki với dòng mới của ô

Nếu tôi sử dụng các định dạng chuẩn = broadtable, ví dụ, kết quả được phân cách bằng dòng mới bên trong các tế bào bảng cho tất cả các cột:

{{#ask:[[Category:Items]] 
|?Description 
|?Models 
|?Addons 
|format=broadtable 
}} 

Nếu tôi tạo ra một mẫu, tất cả tôi có thể đạt được là kết quả bằng dấu phẩy:

<includeonly> 
{| class="wikitable sortable" 
! style="width: 30%;" | Page 
!! style="width: 30%;" | Description 
!! style="width: 20%;" | Models 
!! style="width: 20%;" | Addons 
|- 
</includeonly> 

{{#ask:[[Category:Items]] 
|?Description 
|?Models 
|?Addons 
|format=template 
|template=QResTemplate 
}} 

<includeonly> 
|} 
</includeonly> 

Dưới đây là QResTemplate:

<includeonly> 
| {{{1}}} || {{{2}}} || {{{3}}} || {{{4}}} 
|- 
</includeonly> 

Mọi mục đều có nhiều Mô hình và Addons, do đó, nó là cột 3 và 4 trong bảng mà tôi cần một trong số chúng được phân tách bằng dấu phẩy trong khi mục khác được phân tách bằng dòng mới.

Nếu tôi thêm thứ gì đó sau {{{3}}}, như một dòng mới, nó sẽ được thêm sau Mô hình cuối cùng trên hàng của bảng, không phải sau mỗi Mô hình như tôi muốn.

Trả lời

2

Sử dụng Extension:Arrays để định dạng dấu phẩy đầu ra tách của bạn như bạn muốn:

<includeonly><!-- 

     store arrays 

-->{{#arraydefine:models|{{{3}}}}}<!-- 
-->{{#arraydefine:addons|{{{4}}}}}<!-- 

     print row 

--> 
| {{{1}}} || {{{2}}} || {{#arrayprint:models|<br/>}} || {{#arrayprint:addons|, }} 
|- 
</includeonly> 

Trước tiên, bạn lưu trữ cả hai danh sách như mảng. arraydefine giả định rằng danh sách của bạn được phân cách bằng dấu phẩy, trừ khi bạn chỉ định mọi thứ khác. Sau đó, bạn in lại mảng của mình với #arrayprint, nhưng lần này bạn có thể quyết định cách bạn muốn tách các giá trị đó ra.

Nếu bạn không thể sử dụng dấu phẩy (ví dụ: vì một số giá trị chứa dấu phẩy, bạn có thể thêm ví dụ sep=¤ hỏi truy vấn của bạn, và sau đó làm {{#arraydefine:models|{{{3}}}|¤}} nói arraydefine mà bạn đang sử dụng một tách khác nhau.

Các vấn đề liên quan