我目前在Worpdress中使用Algolia的搜索插件。我设法将一些自定义字段及其值推送到Algolia中的自定义属性。现在,我尝试添加名为' program_description'的自定义属性。在我的搜索结果中。
默认情况下,搜索仅返回' post_title'的值。和'内容'属性。我有兴趣更换内容'使用我的自定义属性的输出属性输出(' program_description')。
我想我只需通过添加' program_description'来修改instantsearch.php模板。像这样的属性数组:
<div class="ais-hits--content">
<h3 itemprop="name headline"><a href="{{ data.permalink }}" title="{{ data.post_title }}" itemprop="url">{{{ data._highlightResult.post_title.value }}}</a></h3>
<div class="ais-hits--tags">
<# for (var index in data.taxonomies.post_tag) { #>
<span class="ais-hits--tag">{{{ data._highlightResult.taxonomies.post_tag[index].value }}}</span>
<# } #>
</div>
<div class="excerpt">
<p>
<#
var attributes = ['program_description', 'content', 'title6', 'title5', 'title4', 'title3', 'title2', 'title1'];
var attribute_name;
var relevant_content = '';
for ( var index in attributes ) {
attribute_name = attributes[ index ];
if ( data._highlightResult[ attribute_name ].matchedWords.length > 0 ) {
relevant_content = data._snippetResult[ attribute_name ].value;
}
}
relevant_content = data._snippetResult[ attributes[ 0 ] ].value;
#>
{{{ relevant_content }}}
</p>
</div>
</div>
这样做,我的结果都没有返回,并且我遇到了以下控制台错误:
Uncaught TypeError: Cannot read property 'matchedWords' of undefined
非常感谢任何帮助。
答案 0 :(得分:1)
Cannot read property 'matchedWords' of undefined
告诉我,attributes
的自定义参数可能未在Algolia的范围内定义。
我建议您使用自定义属性(或您将使用的任何属性)初始化attributesToIndex
- 这样您就可以确保attributesToHighlight
具有可以使用的定义。
查看此answer〜这可能有助于说明在尝试访问{{1} undefined
成员时,您为自定义属性获取matchedWords
定义的原因对象。