属性絞り込みコンポーネント¶
前提
ポップファインド設定タグ・タグマネージャーが既に導入されていること。
機能説明¶
検索結果コンポーネントと共に使用することで、検索結果を特定の条件で絞り込むことができます。
リソースファイルで絞り込みグループを作成することができます。
絞り込みグループとは、絞り込み条件をグループ化するためのものです。
各絞り込みグループ内の絞り込み条件は、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.