2017-05-13 9 views
1

問題は次のとおりです。 私たちはalgolia instantsearchを使用します。 各製品には売り手がいます。現在のユーザーは一部の売り手に加入しています。ユーザーは、購読している売り手と購読していない売り手によって商品をフィルタリングする可能性があります。 これについては、私はウィジェットのトグルを使用しようとしました。私は上のカンマで区切られた、現在のユーザーのためにsubsribed売り手のリストを設定し、オプションAlgolia動的ファセットオプション

values: { 
    on: '37,41,67', 
    off: '45,56', 
}, 

オフしかし、それは私が唯一の販売者を指定する場合にのみ機能します場所。デフォルトのオプションがオフになっています。 私はnumericRefinementListウィジェット

options: [ 
    { label: 'On', value: '37,41,67' }, 
    { label: 'Off', value: '45,56' }, 
], 

を使用しようとしました。しかし、それは、誰かが解決策を提案することもでき が動作していませんか?

答えて

6

これはデフォルトのウィジェットで扱われる動作ではありません。しかし、フィルタのリストを切り替えるカスタムウィジェットを作ることができます。例を挙げましょう:

const sellerList = []; 
// this uses jQuery 
const toggleButton = $('div.toggleSellers'); 
const search = instantsearch(/* parameters and credentials */); 
search.addWidget({ 
    getConfiguration: function() { 
    return {disjunctiveFacets: ['seller']}; 
    }, 
    init: function(options) { 
    const helper = options.helper; 
    // Here you have to bind the event that will toggle seller 
    // For example using the `toggleButton` and a click event 
    toggleButton.on('click', function() { 
     sellerList.forEach(function(seller) { 
     helper.toggleRefinement('seller', seller); 
     }); 
    }); 
    }, 
}); 

"seller"は、販売者が含まれているあなたの記録内の属性の名前です。 Algoliaダッシュボードのファセットとして設定する必要があります。

sellerListは、インデックス内の"seller"属性で使用される販売者識別子のリストです。

このカスタムウィジェットは、jsHelperを使用して検索のパラメタを指定します。さらに詳しい情報は、the custom widgetsに関するドキュメントを参照してください。