我正在使用Algolia instantsearch.js显示候选人的选举(这里:https://laprimaire.org/candidats/)。我希望候选人的初始显示是随机的,这样每个候选人都能或多或少地获得相同的能见度。
我在这个答案中读到,这不是阿尔戈利亚的一个特性,但无论如何都可以用一个js技巧来做:Is it possible to sort randomly, and to query on field if it exists?。
问题是,我使用的是instantsearch.js,在searchFunction的情况下,我找不到如何实现上述searchFunction。
我从文档中看到,实例化搜索可以用一个searchFunction初始化,它接收一个作为参数的助手:https://community.algolia.com/instantsearch.js/documentation/#initialization。
但是,它没有找到关于这个助手以及如何操作它的文档,所以我可以将随机函数应用到搜索结果中。
任何帮助都将不胜感激!非常感谢
蒂博尔德
发布于 2016-04-20 16:21:52
hits小部件可以让您更好地控制如何通过 parameters显示点击列表。
使用这个问题的shuffle方法How can I shuffle an array?:
函数改组(o){ for(var j,x,i= o.length;i;j= Math.floor(Math.random() * i),x= oi,oi= oj,oj = x);返回o;}
你可以简单地做:
search.addWidget(
instantsearch.widgets.hits({
// Your other options
transformData: {
allItems: function (content) {
return { hits: shuffle(content.hits) };
}
},
templates: {
empty: 'No results',
allItems: '{{#hits}}<your previous templates.hit value>{{/hits}}'
}
})
);{{#hits}}{{/hits}}模板只是在每次点击时循环的一些Hogan.js逻辑。
https://stackoverflow.com/questions/36748131
复制相似问题