나는 현재 Algolia instantsearch v1로 어려움을 겪고 있습니다. 내가 성취하고자하는 것은 각 히트 위젯에 대해 히트 컨테이너가 여러 개 있지 않는 것입니다.Instantsearch 여러 히트 위젯을위한 히트 컨테이너 1 개
var template_fachbereiche =
'<a href="{{url}}">'+
'<div class="title"><strong>{{fachbereich}}</strong></div>'+
'<div class="text">{{{_highlightResult.titel.value}}}</div>'+
'</a>';
var template_zentren =
'<a href="{{url}}">'+
'<div class="title"><strong>{{fachbereich}}</strong></div>'+
'<div class="text">{{{_highlightResult.titel.value}}}</div>';
'</a>';
var template_experten =
'<img src="{{profilbild}}">'+
'<div class="text"><p><strong>{{{_highlightResult.name.value}}}</strong>{{position}}</p></div>';
var template_sprechstunden =
'<strong>{{titel}}</strong>'+
'<p>{{text}}</p>';
var fachbereiche = instantsearch({
appId: appId,
apiKey: apiKey,
indexName: 'fachbereiche',
searchFunction: function(helper) {
var query = fachbereiche.helper.state.query;
zentren.helper.setQuery(query);
zentren.helper.search();
sprechstunden.helper.setQuery(query);
sprechstunden.helper.search();
experten.helper.setQuery(query);
experten.helper.search();
helper.search();
}
});
var zentren = instantsearch({
appId: appId,
apiKey: apiKey,
indexName: 'zentren'
});
var experten = instantsearch({
appId: appId,
apiKey: apiKey,
indexName: 'experten'
});
var sprechstunden = instantsearch({
appId: appId,
apiKey: apiKey,
indexName: 'sprechstunden'
});
var hits_fachbereiche = instantsearch.widgets.hits({
container: '#hits_fachbereiche',
hitsPerPage: 100,
templates: {
empty: '',
item: template_fachbereiche
},
cssClasses: {
root: 'group',
item: 'gridItem fachbereich'
}
});
var hits_zentren = instantsearch.widgets.hits({
container: '#hits_zentren',
hitsPerPage: 100,
templates: {
empty: '',
item: template_zentren
},
cssClasses: {
root: 'group',
item: 'gridItem zentrum'
}
});
var hits_experten = instantsearch.widgets.hits({
container: '#hits_experten',
hitsPerPage: 100,
templates: {
empty: '',
item: template_experten
},
cssClasses: {
root: 'group',
item: 'gridItem experte'
}
});
var hits_sprechstunden = instantsearch.widgets.hits({
container: '#hits_sprechstunden',
hitsPerPage: 100,
templates: {
empty: '',
item: template_sprechstunden
},
cssClasses: {
root: 'group',
item: 'gridItem sprechstunde'
}
});
fachbereiche.addWidget(
instantsearch.widgets.refinementList({
container: '#filter_fachbereiche',
attributeName: 'facet',
limit: 100,
operator: 'and'
})
);
zentren.addWidget(
instantsearch.widgets.refinementList({
container: '#filter_zentren',
attributeName: 'facet',
limit: 100,
operator: 'and'
})
);
experten.addWidget(
instantsearch.widgets.refinementList({
container: '#filter_experten',
attributeName: 'facet',
limit: 100,
operator: 'and'
})
);
sprechstunden.addWidget(
instantsearch.widgets.refinementList({
container: '#filter_sprechstunden',
attributeName: 'facet',
limit: 100,
operator: 'and'
})
);
var searchbox = instantsearch.widgets.searchBox({
container: document.querySelector('#searchbox'),
autofocus: false
});
fachbereiche.addWidget(hits_fachbereiche);
fachbereiche.addWidget(searchbox);
zentren.addWidget(hits_zentren);
experten.addWidget(hits_experten);
sprechstunden.addWidget(hits_sprechstunden);
zentren.start();
experten.start();
sprechstunden.start();
fachbereiche.start();
fachbereiche.on('render', function() {
initMasonry();
});
모두 할당 된 다른 컨테이너이 있어야합니다 (예 : #hits_experten 및 #hits_sprechstunden) :
여기에 전체 코드입니다. 그렇지 않으면 첫번째 히트 위젯 만 출력됩니다.
위젯에 대해 하나의 컨테이너 (#hits)를 하나만 가질 수 있습니까?
귀하의 접근 방법을 구현하는 방법을 잘 모르겠습니다. 그리고 내가 볼 수있는 한, 이것은 다른 결과 템플릿을 가질 수 없다는 것을 의미합니다. 맞습니까? 4 개 또는 5 개의 서로 다른 인덱스가 있으며 각 인덱스에는 다른 템플릿이 있어야하지만 모두 동일한 조회 컨테이너가 있어야합니다. 업데이트 : 내 질문에 전체 코드를 추가했습니다. – Andreas
또 다른 생각은 각 패싯마다 다른 템플리트를 갖는 것입니다. 그것은 v1 또는 v2에서 가능합니까? – Andreas
사용자 정의 위젯을 사용하면 원하는대로 렌더링 할 수 있습니다. 내 말은 새로운 히트 구현에서 동일한 컨테이너 (기본 동작이 아님)를 재사용 할 수 있다는 것입니다. – bobylito