ホーム > サポート・マニュアル > チュートリアル > カスタムフィールド > カスタムフィールドをキーにしたエントリーの表示順設定
カスタムフィールドをキーにしたエントリーの条件検索時に、検索結果のエントリーの表示順を設定する方法を説明します。(v1.3.0より)
1. エントリーフィールドを作成して、エントリーを登録する
まずはエントリーにカスタムフィールドを追加します。
ここでは例として、「price」というエントリーフィールドを用意し、いくつかエントリーを登録しておきます。
/themes/適用するテーマ/admin/entry/edit.html に、エントリーフィールドを作成します。
以下のソースは、/themes/適用するテーマ/admin/entry/edit.html のカスタムフィールド部分です。
<table class="entryFormTable">
<tr>
<th>価格</th>
<td>
<input type="text" name="price" value="{price}" size="10" />
<input type="hidden" name="field[]" value="price" />
</td>
</tr>
</table>
エントリーフィールドが作成できたら、[エントリー作成]ボタンでエントリー作成画面にエントリーフィールドが表示されていることを確認してください。そして、そのエントリーフィールドに値を入力し、いくつかエントリーを登録しておきます。
これで検索対象になるエントリーが用意できました。
2. カスタムフィールドをキーに検索するフォームを作成する
手順1で作成したエントリーフィールドをキーにして検索するフォームを作成します。以下のソースは、エントリーフィールド「price」をキーにして検索するフォームです。
<!-- BEGIN_MODULE Field_Search -->
<dt>演算子検索</dt>
<dd>
<form action="" method="post">
<!-- 宣言 -->
<input type="hidden" name="field[]" value="price" />
<!-- 演算子 -->
<input type="hidden" name="price@operator" value="lte" />
<p>
価格
<select name="price">
<option value="">上限なし</option>
<option value="300"{price:selected#300}>300円以下</option>
<option value="200"{price:selected#200}>200円以下</option>
<option value="100"{price:selected#100}>100円以下</option>
</select>
</p>
<p>
<input type="hidden" name="tpl" value="search" />
<input type="hidden" name="cid" value="%{CID}" />
<input type="hidden" name="bid" value="%{BID}" />
<input type="submit" name="ACMS_POST_2GET" value="search" />
</p>
</form>
</dd><!-- END_MODULE Field_Search -->
これでカスタムフィールドの値をキーにして検索するフォームができました。
3. 表示順の設定をする
検索結果のエントリーの表示順を設定をする方法は3つあります。
- (A) モジュールのコンフィグ [優先度:低]
- (B)モジュールIDの引数設定 [優先度:中]
- (C) input要素での指定 [優先度:高]
(A)モジュールまたはモジュールIDのコンフィグ [優先度:低]
検索結果のエントリー表示で使用しているモジュールのコンフィグの「表示順」の設定で、以下の4つの中から選択します。
- フィールド(昇順)
- フィールド(降順)
- 数値フィールド(昇順)
- 数値フィールド(降順)
カスタムフィールドを「数値」として扱いたい場合は「数値フィールド」を選択します。
■フィールドと数値フィールドの違い
数値フィールドの昇順にすると、3、20、100…のように数値として小さい値から順になりますが、フィールドの昇順の場合、数値ではなく「文字列」として扱われるため、100、20、3…のようにアルファベット順になります。アルファベット順の昇順の場合、1が2より先にくるためです。
例)Entry_Bodyの表示順設定
(B)モジュールIDの引数設定 [優先度:中]
検索結果のエントリー表示で使用しているモジュールIDの引数設定で、以下の4つの中から設定します。
| 表示順 | 意味 |
|---|---|
| field-asc | フィールド(昇順) |
| field-desc | フィールド(降順) |
| intfield-asc | 数値フィールド(昇順) |
| intfield-desc | 数値フィールド(降順) |
モジュールIDの引数設定の例
カスタムフィールドを数値として扱いたい場合は「intfield-asc」「intfield-desc」を使用します。
(C)input要素での指定 [優先度:高]
手順2で作成したフォームのsubmitボタンの記述部分に、表示順を指定する記述を追加します。この記述の情報はURLコンテキストに反映されるため、指定を反映させるにはモジュールIDの引数設定にチェックを入れてください。
表示順を設定する記述
<input type="hidden" name="order" value="表示順" />
| 表示順 | 意味 |
|---|---|
| field-asc | フィールド(昇順) |
| field-desc | フィールド(降順) |
| intfield-asc | 数値フィールド(昇順) |
| intfield-desc | 数値フィールド(降順) |
カスタムフィールドを数値として扱いたい場合は「intfield-asc」「intfield-desc」を使用します。
今回の例では、価格は数値として扱い降順に表示する場合は、以下のような記述と設定になります。
<input type="hidden" name="order" value="intfield-desc" />
<input type="hidden" name="tpl" value="search" />
<input type="hidden" name="cid" value="%{CID}" />
<input type="hidden" name="bid" value="%{BID}" />
<input type="submit" name="ACMS_POST_2GET" value="search" />
モジュールIDの引数設定にチェックを入れる
表示順のチェックと表示順指定を両方設定した場合
引数設定の表示順にチェックを入れ、かつ表示順を入力して指定すると、URLコンテキストに表示順の情報があるときにはURLコンテキストが優先され、URLコンテキストに表示順の情報がないときには、引数設定に入力された表示順が適用されます。
引数設定に表示順を入力した場合
これで、エントリーをソート表示する検索フォームができました。
表示順設定の優先度について
先述の(A)〜(C)の3つの表示順設定が、(A)〜(C)いずれか1つではなく重複している場合は、優先度がより高いものが適用されます。
表示順の設定の使い分け
基本的にはモジュールやモジュールIDの設定で表示順を設定します。1ページに複数の検索フォームがある場合で、それぞれのフォームで検索結果の表示順を変えたいときには、モジュールIDの引数入力か、input要素で指定します。
このドキュメントと関連している内容のエントリー
- 関連度 3 : カスタムフィールドをキーにしたエントリーの条件検索
- 関連度 2 : カスタムフィールドの検索に複雑な条件を指定したい
- 関連度 1 : カスタムフィールドグループの追加時に必要な記述
- 関連度 1 : ユニットグループ機能を使ってレイアウトする
- 関連度 1 : ダイレクト編集機能を使った更新
ドキュメントの内容に関するお知らせフォーム
内容に誤り・現行バージョンと異なる部分がありましたら、下記のフォームよりお知らせください。



