コンテンツにスキップ

属性絞り込みコンポーネント

前提

ポップファインド設定タグ・タグマネージャーが既に導入されていること。

機能説明

検索結果コンポーネントと共に使用することで、検索結果を特定の条件で絞り込むことができます。

リソースファイルで絞り込みグループを作成することができます。
絞り込みグループとは、絞り込み条件をグループ化するためのものです。
各絞り込みグループ内の絞り込み条件は、ORで結合されます。
絞り込みグループ間はANDで結合されます。
ORで結合したい場合は、属性絞り込みグループ間のOR結合を参照ください。

See the Pen this by BST developer (@bsearchtech)on CodePen.

設定方法

必須設定

Htmlの修正
<div data-[モード]="attributes-group1"></div>
リソースファイルの作成

属性リソースファイル

属性リソースファイルは、絞り込み用のグループとそれに所属する属性や名称を定義し、
属性絞り込みコンポーネントで使用する為のファイルです。

属性絞り込みを行わない場合は、このファイルを作成、読み込みする必要はありません。

sitesearchAttributes という変数に、各値がハッシュになる配列を代入しているファイルを作成します。

注意

グループ名には次の文字列を含めることができません。
> , :
属性値には次の文字列を含めることができません。
> ,

以下にファイル例を示します

var sitesearchAttribute = [
  {
    group: {"label": "絞り込みグループ1", "name":"group1"},
    attributes: [
      {"label":"属性1", "name":"ATTRIBUTE1", "sub_groups":["sub_ATTRIBUTE1"]},
      {"label":"属性2", "name":"ATTRIBUTE2"}
    ]
  },
  {
    group: {"label": "絞り込みグループ2", "name":"group2"},
    attributes: [
      {"label":"属性3", "name":"ATTRIBUTE3", "class":"attr_red"},
      {"label":"属性4", "name":"ATTRIBUTE4", "class":"attr_blue"},
      {"label":"属性5", "name":"ATTRIBUTE5", "class":"attr_white"}
    ],
    type: "type2"
  },
  {
    group: {"label": "絞り込みグループ1の子", "name":"sub_ATTRIBUTE1"},
    attributes: [
      {"label":"属性1-1", "name":"ATTRIBUTE1-1"},
      {"label":"属性1-2", "name":"ATTRIBUTE1-2"},
      {"label":"属性1-3", "name":"ATTRIBUTE1-3"}
    ]
  }
];

各値となるハッシュは次のエントリを含みます

親要素 子要素 デフォルト値 説明
group ハッシュ 省略不可 属性絞り込みを行うグループの単位、同グループ間は OR 検索、異なるグループ間は AND 検索になる
以下のメンバーを持つ
label 文字列 '' 属性絞り込みコンポーネントで表示されるグループ名
name 文字列 省略不可 属性絞り込みコンポーネントを呼び出す際のコンポーネント識別子の値の一部となる。URL パラメータにも使用される
attributes 配列 省略不可 グループに所属する属性を持つ配列
配列の値は以下のメンバーを持つハッシュ
label 文字列 '' 属性絞り込みコンポーネントで表示される属性名
name 文字列 必須 TSV で定義した属性を示す値。refinements を使用する場合は項目の識別子
refinements 配列 undefined この値はオプションとなる。この値が指定された場合、name の代わりにこのリストに基づいた絞り込み条件が使用される
class 文字列 undefined この値はオプションとなる。この値が指定された場合、各属性ごとの表示時に生成される要素のクラス名が、自動生成される文字列の代わりにこの値が使用される
sub_groups 配列 undefined この値はオプションとなる。この値が指定された場合、画面上でこの属性が選択された場合に、指定された子グループが表示される
type 文字列 'type1' この値はオプションとなる。有効な値が指定された場合、表示バリエーションが変更される
show_all_count 真偽値 true この値はオプションとなる。false が指定された場合、択一式となる表示バリエーションでの「すべての ○○」という全選択を示す選択肢において、ヒット件数を表示しない

任意設定

表示用メッセージの変更

sitesearchMessage という変数に次のような指定を行うことで、表示文字列を変更することができます。

var sitesearchMessage = {
    attributes: {
        labelSuffix: 'の絞り込み',
        selectAllPrefix: 'すべての',
    },    
};

キー名 デフォルト値 説明
labelSuffix の絞り込み 絞り込みコンポーネントのラベルとしてグループ名の後ろに付く
selectAllPrefix すべての 絞り込みコンポーネントのラジオボタン/プルダウン表示時の全選択時のラベル

dom構造

Dom

属性絞り込みコンポーネント

<!-- ここでは グループの名称を"グループ1"、値を"GRP1" とする -->
<div data-[モード]="attributes-GRP1" class="_[モード]_component">
  <!-- グループの表示バリエーションとグループの値を持ったクラスが付与される-->
  <div class="_attributegroup _attributegrouptype_type1 _attributegroup_GRP1">
    <div class="_group">グループ1 の絞り込み</div>
    <div class="_attributes">
      <!-- ここから繰り返し表示 -->
      <!-- ここでは属性の名称を"属性1-1"、値を"ATTR1_1" とする -->
      <!--属性の値、もしくは属性リソースファイルに指定されたクラス名が付与される -->
      <!-- 選択中の状態やヒット件数に応じて、 _select や _disable といったクラス名が付与される -->
      <div class="_attribute _attribute_ATTR1_1 _select">
        <label for="popfind12345">
          <!-- idは動的に生成される -->
          <input type="checkbox" id="popfind12345" value="ATTR1_1" />
          <span class="_label">属性1-1</span>
          <span class="_count">(NNN)</span
          ><!-- ヒット件数が表示される -->
        </label>
        <!-- 子グループを表示する場合、以下のDOMが生成される -->
        <div class="sub_groups">
          <div class="sub_group">
            <div
              class="_attributegroup _attributegrouptype_type1 _attributegroup_sub_ATTR1_1"
            >
              <!-- 以下同様 -->
            </div>
          </div>
        </div>
      </div>
      <!-- ここまで繰り返し表示 -->

      <!-- 以下繰り返し表示 -->
    </div>
  </div>
  <!-- グループ内の属性が全てゼロ件ヒットだった場合、 _no_hit_attributes というクラスが付与される-->
  <div class="_attributegroup _attributegroup_GRP2 _no_hit_attributes">
    <div class="_group">グループ2 の絞り込み</div>
    <div class="_attributes">...</div>
  </div>
</div>

サンプル

type1(省略時)

チェックボックス+折りたたみなし

See the Pen this by BST developer (@bsearchtech)on CodePen.

type2

チェックボックス+折りたたみあり

See the Pen this by BST developer (@bsearchtech)on CodePen.

type1r

ラジオボックス+折りたたみなし

See the Pen this by BST developer (@bsearchtech)on CodePen.

type2r

ラジオボックス+折りたたみあり

See the Pen this by BST developer (@bsearchtech)on CodePen.

type1s

セレクトボックス+折りたたみなし

See the Pen this by BST developer (@bsearchtech)on CodePen.

type2s

セレクトボックス+折りたたみあり

See the Pen this by BST developer (@bsearchtech)on CodePen.