ListPagesモジュールを使用する事でデータフォームのフィールドからデータを取得1し、データフォームのフィールドの値に応じた並び替えをする事ができます。
取得
データフォームにフィールドを追加するか、既存のフィールドを使用します。下記のバンドの例では、バンドが次のツアーでスコットランドを訪れるかどうかを記入するフィールドを追加しました:
scotland:
label: 次のツアーでスコットランドを訪れるか
type: select
values:
info: No Info
visit: "Yes"
novisit: "No"
値が "Yes"のものをリスト表示する場合、ListPagesモジュールを使用し、アンダースコアで始まるフィールド名、(この場合は_scotland)を記載し続けて=記号と必要なフィールドのプロパティを追加します(_scotland = "visit")。
[[module ListPages category="band" _scotland="visit" perPage="10" order="name" separate="false" prependLine="||~ Band||~ Type ||" appendLine="||||||~ ||"]]
|| %%title_linked%% || %%form_data{type}%% ||
[[/module]]
これで丁度2つのバンドが表示されるリストが生成されました:
スコットランドへのバンドツアー
Band | Type |
---|---|
Coast | Rock |
Fairport Convention | Folk |
データフォームにある複数のフィールドを選択条件に組み込む事で検索範囲を絞り込むことができます。たとえば、スコットランドを巡るフォーク・バンドを選択する場合、scotland="visit"とtype="2"の取得条件を併用します(このデータフォームではtypeとは音楽の種類を表し、2はフォークである値を格納するプロパティです)。
type:
label: Music type
type: select
values:
0: Classical
1: Country
2: Folk
3: Indie
4: Jazz
5: Pop
6: Rock
default: 6
異なる選択条件を組み合わせるとAND演算子が使用されます。その為、結果はこれらの全ての条件に一致したものになります。検索結果を表示するListPagesコードは次のようになります。
[[module ListPages category="band" _scotland="visit" _type="2" perPage="10" order="name" separate="false" prependLine="||~ Band||~ Type ||" appendLine="||||||~ ||"]]
|| %%title_linked%% || %%form_data{type}%% ||
[[/module]]
そしてリストは以下の出力をします。
Band | Type |
---|---|
Fairport Convention | Folk |
_field=""を使用すると、特定のフィールドが空のページを検索できます。
並び替え
また、データフォームのフィールドプロパティでソートすることもできます。バンドの例では、バンドによってリリースされたアルバム/ CDの数を格納するフィールドを作成しました:
albums:
label: Albums/CDs released
type: select
values:
"00": 0
"01": 1
"02": 2
"03": 3
"04": 4
"05": 5
"06": 6
"07": 7
"08": 8
"09": 9
..
アルバムの数を降順に並べ替えるには、Listpagesモジュールに設定したorder=パラメータの次にアンダースコアを付け、さらにその後、フィールドの名前、// desc //属性を使用します:
@@order="_albums desc"
[[module ListPages category="band" perPage="10" order="_albums desc" separate="false" prependLine="||~ Band||~ Albums ||" appendLine="||||||~ ||"]]
|| %%title_linked%% || %%form_data{albums}%% ||
[[/module]]
ソートが正しく機能するためには、上記の例のデータフォームフィールドのように、値においては1,2,3等を持つ事ができますが、プロパティにおいて10未満の数値は01,02,03等が設定されている必要があります。この値は、以下に示すように、ListPagesモジュールに表示される値です。 (01、02、03、…)は8進数で扱われるため、ダブルクォーテーション( "01"、 "02"、 "03" …)で囲む必要があります。なぜなら08と09は8進数には存在しない為、そのままだと両方とも0になるからです。
Band | Albums |
---|---|
Fairport Convention | 54 |
Barclay James Harvest | 49 |
FleetWoot Mac | 29 |
Queen | 14 |
Dire Straits | 13 |
Coast | 2 |