У меня есть несколько атрибутов, установленных как attributesToRetrieve
. В моем шаблоне отображаются только некоторые из них. Примерно так:
<div id="results">
<div>{{_highlightResult.attr1.value}}</div>
<div>{{_highlightResult.attr2.value}}</div>
<div>{{_highlightResult.attr3.value}}</div>
</div>
Таким образом, атрибуты будут отображаться в любом случае и выделяться, если они содержат совпадающее слово.
Теперь я хотел бы добавить еще один раздел, в котором могут отображаться все остальные атрибуты, но только если они содержат совпадающее слово, которое нужно выделить, например:
<div id="results">
<div>{{_highlightResult.attr_1.value}}</div>
<div>{{_highlightResult.attr_2.value}}</div>
<div>{{_highlightResult.attr_3.value}}</div>
<!--
The following div will be rendered and displayed only
if any of these special attributes contain an highlighted word.
Only an attribute containing a matched word will be displayed
-->
<div class="other-attr">
{{_highlightResult.Long_SpecialAttr_1.value}}
{{_highlightResult.SpecialAttr_2.value}}
{{_highlightResult.SpecialAttr_3.value}}
</div>
</div>
Как упоминалось в комментарии, этот раздел будет отображаться и отображаться только в том случае, если какой-либо из этих специальных атрибутов содержит выделенное слово, также будет отображаться только атрибут, содержащий совпадающее слово.
Кроме того, как вы можете видеть, есть Long_SpecialAttr_1
, это длинный текстовый атрибут, который я бы хотел, чтобы он отображался как атрибут фрагмента.
Чтобы дать лучшее представление (возможно), чего я пытаюсь добиться для этого дополнительного раздела, это что-то вроде одного отображения Google под каждым результатом поиска, своего рода текст text blob с многоточием, содержащим отмеченные слова. из этих атрибутов.
Это возможно? Я использую algolia instsearch.js, спасибо!
ОБНОВЛЕНИЕ
Спасибо @Jerska за его ответ, к сожалению, в моем случае не работал небольшой фрагмент кода, а именно:
['highlight', 'snippet'].forEach(function (type) {
data['_' + type + 'Result'].forEach(function (elt) {
elt.display = elt.matchLevel !== 'none';
});
});
дает мне ошибку в консоли с указанием data._snippetResult.forEach() is undefined
. Поэтому я изменил этот бит следующим образом:
for(var el in d._snippetResult)
{
// create new property with bool value, true if not "none"
d._snippetResult[el].display = d._snippetResult[el].matchLevel !== 'none';
};