ホーム > サポート・マニュアル > チュートリアル > カスタムフィールド > カスタムフィールドをキーにしたエントリーの表示順設定

チュートリアル

カスタムフィールドをキーにしたエントリーの条件検索時に、検索結果のエントリーの表示順を設定する方法を説明します。(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つの中から選択します。

  1. フィールド(昇順)
  2. フィールド(降順)
  3. 数値フィールド(昇順)
  4. 数値フィールド(降順)

カスタムフィールドを「数値」として扱いたい場合は「数値フィールド」を選択します。

■フィールドと数値フィールドの違い
数値フィールドの昇順にすると、3、20、100…のように数値として小さい値から順になりますが、フィールドの昇順の場合、数値ではなく「文字列」として扱われるため、100、20、3…のようにアルファベット順になります。アルファベット順の昇順の場合、1が2より先にくるためです。

例)Entry_Bodyの表示順設定

例)Entry_Bodyの表示順設定

(B)モジュールIDの引数設定 [優先度:中]

検索結果のエントリー表示で使用しているモジュールIDの引数設定で、以下の4つの中から設定します。

表示順意味
field-ascフィールド(昇順)
field-descフィールド(降順)
intfield-asc数値フィールド(昇順)
intfield-desc数値フィールド(降順)
モジュールIDの引数設定の例

モジュール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の引数設定にチェックを入れる

モジュールIDの引数設定にチェックを入れる

表示順のチェックと表示順指定を両方設定した場合

引数設定の表示順にチェックを入れ、かつ表示順を入力して指定すると、URLコンテキストに表示順の情報があるときにはURLコンテキストが優先され、URLコンテキストに表示順の情報がないときには、引数設定に入力された表示順が適用されます。

引数設定に表示順を入力した場合

引数設定に表示順を入力した場合

これで、エントリーをソート表示する検索フォームができました。

表示順設定の優先度について

先述の(A)〜(C)の3つの表示順設定が、(A)〜(C)いずれか1つではなく重複している場合は、優先度がより高いものが適用されます。

表示順の設定の使い分け

基本的にはモジュールやモジュールIDの設定で表示順を設定します。1ページに複数の検索フォームがある場合で、それぞれのフォームで検索結果の表示順を変えたいときには、モジュールIDの引数入力か、input要素で指定します。



携帯アクセス解析