使用 algolia 助手设置非 Algolia url 参数
Setting a non-Algolia url parameter using the algolia helper
我正在使用 Algolia 的 Instantsearch.js,我想从我的脚本中更新一个与 algolia 无关的 uri 查询参数。我看到我可以使用助手设置查询和搜索:
search.helper.setQuery('myquery').search();
这可行,但我想知道我是否可以使用帮助程序在查询字符串中设置一个额外的 uri 参数,该参数与 Algolia 查询无关,但与我的站点的功能相关。
我在文档中看到有多种设置查询参数的函数:
https://github.com/algolia/algoliasearch-helper-js#url-helpers
但其中 none 似乎符合我的要求。在执行上面的 search.helper.setQuery 之前,您对我如何更新查询字符串有什么建议吗?例如:"country_code" 到一个值,例如:"FR"?理想情况下,我会喜欢它,以便同时在 uri 中设置两个值。谢谢!
instantsearch.js 没有提供 API 来做到这一点,但它会保留由其他代码段设置的每个参数。所以在你的情况下,如果 URL 已经有 country_code,那么你就完成了。
否则,如果您想从 front-end 执行此操作,则可以在助手上使用 History API of the browser. In addition, you can use getStateAsQueryString,它将序列化当前状态并让您添加更多参数(例如 country_code).但是您需要小心使用用于在即时搜索中初始化 URL 机制的相同参数(例如哪些属性用于 URL)。如果你使用默认值,你应该很好。
要替换当前的 URL / 历史状态,代码如下所示:
window.history.replaceState(
null,
'Title',
'?' + helper.getStateAsQueryString({
moreAttributes: {
country_code: 'fr'
}
}));
要更改参数的当前值,它将类似于:
window.history.pushState(
null,
'Title',
'?' + helper.getStateAsQueryString({
moreAttributes: {
country_code: 'de'
}
}));
我正在使用 Algolia 的 Instantsearch.js,我想从我的脚本中更新一个与 algolia 无关的 uri 查询参数。我看到我可以使用助手设置查询和搜索:
search.helper.setQuery('myquery').search();
这可行,但我想知道我是否可以使用帮助程序在查询字符串中设置一个额外的 uri 参数,该参数与 Algolia 查询无关,但与我的站点的功能相关。
我在文档中看到有多种设置查询参数的函数: https://github.com/algolia/algoliasearch-helper-js#url-helpers 但其中 none 似乎符合我的要求。在执行上面的 search.helper.setQuery 之前,您对我如何更新查询字符串有什么建议吗?例如:"country_code" 到一个值,例如:"FR"?理想情况下,我会喜欢它,以便同时在 uri 中设置两个值。谢谢!
instantsearch.js 没有提供 API 来做到这一点,但它会保留由其他代码段设置的每个参数。所以在你的情况下,如果 URL 已经有 country_code,那么你就完成了。
否则,如果您想从 front-end 执行此操作,则可以在助手上使用 History API of the browser. In addition, you can use getStateAsQueryString,它将序列化当前状态并让您添加更多参数(例如 country_code).但是您需要小心使用用于在即时搜索中初始化 URL 机制的相同参数(例如哪些属性用于 URL)。如果你使用默认值,你应该很好。
要替换当前的 URL / 历史状态,代码如下所示:
window.history.replaceState(
null,
'Title',
'?' + helper.getStateAsQueryString({
moreAttributes: {
country_code: 'fr'
}
}));
要更改参数的当前值,它将类似于:
window.history.pushState(
null,
'Title',
'?' + helper.getStateAsQueryString({
moreAttributes: {
country_code: 'de'
}
}));