2014-08-30 13 views
5

Potrzebuję szablonu tabeli wyników semantycznego zapytania, w którym mogę otrzymać wyniki dla dwóch kolumn rozdzielonych przecinkami dla niektórych kolumn i kolumn rozdzielanych przecinkami w tej samej tabeli.Formatowanie semantycznego pliku MediaWiki z tabelą wyników z liniami komórkowymi

Jeśli używam standardowego formatu = broadtable, na przykład, wynik jest oddzielone znakami nowej linii wewnątrz komórek tabeli dla wszystkich kolumn:

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

Jeśli utworzyć szablon, wszystko jestem w stanie realizacji jest oddzielony przecinkami wynik:

<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> 

Oto QResTemplate:

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

Każda pozycja ma wiele modeli i dodatków, więc kolumna 3 i 4 w tabeli jest taka, że ​​jeden z nich jest potrzebny do rozdzielenia przecinkami, podczas gdy drugi jest oddzielony nową linią.

Jeśli dodam coś po {{{3}}}, np. Znak nowej linii, zostanie dodane po ostatnim Modelu w wierszu tabeli, a nie po każdym Modelu, jak tego chcę.

Odpowiedz

2

użytkowania Extension:Arrays formatowanie oddzielone przecinkami wyjścia, jak chcesz:

<includeonly><!-- 

     store arrays 

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

     print row 

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

Najpierw trzeba przechowywać zarówno list, jak tablice. arraydefine zakłada, że ​​twoja lista jest rozdzielana przecinkami, chyba że określisz coś innego. Następnie ponownie drukujesz tablice przy pomocy #arrayprint, ale tym razem możesz zdecydować, w jaki sposób chcesz rozdzielić te wartości.

Jeśli nie można używać przecinków (na przykład dlatego, że jakaś wartość zawiera przecinek, można dodać np sep=¤ do zadawania zapytań, a następnie wykonaj {{#arraydefine:models|{{{3}}}|¤}} powiedzieć arraydefine że używasz innego separatora.

Powiązane problemy