我们正在使用来自阿尔及利亚的vue Instantsearch。
当用户使用一些初始url参数登陆页面时,algolia Instantsearch会加载初始搜索,并更改url以包括搜索参数。但是,当algolia重写url时,初始url参数不会持续存在,我们希望它们保持不变。即
/stuff?myparam=value
/stuff?refinementList=...
,并删除了url参数myparam
。有没有办法将其保留在网址中?答案 0 :(得分:0)
默认情况下,Vue InstantSearch会覆盖查询参数。您可以通过Vue InstantSearch的{{3}}选项控制URL中呈现的内容。您可以为history
路由器提供自定义routing.router
功能。您将能够在URL中保留“当前”参数。
答案 1 :(得分:0)
我们需要 ?lang=[LANG_CODE],例如 ?lang=de 后跟 algolia 的东西。
这就是我们想出的:(注意常量 ICL_LANGUAGE_CODE,它由 WPML (WordPress) 设置为当前语言。 请记住,当搜索中没有参数时,它不需要有结尾 & 符号。
基础:
routing: '.$routing.'
其中 $routing 定义为:
$routing = 'true'; // For base language
if( $needs_custom_routing ) {
$routing = '{
router: instantsearch.routers.history({
/*
parseURL({ qsModule, location }) { return qsModule.parse(location.search.slice(1)); },
*/
createURL({ qsModule, location, routeState }) {
const { origin, pathname, hash } = location;
const queryParameters = {};
if (routeState.query) {
queryParameters.query = encodeURIComponent(routeState.query);
}
if (routeState.categories) {
queryParameters.categories = routeState.categories.map(encodeURIComponent);
}
if (routeState.page !== 1) {
queryParameters.page = routeState.page;
}
const queryString = qsModule.stringify(routeState);
if( queryString ) {
return `${origin}${pathname}?lang='.ICL_LANGUAGE_CODE.'&${queryString}`;
} else {
return `${origin}${pathname}?lang='.ICL_LANGUAGE_CODE.'`;
}
},
})
} /* /routing */';
} // /needs_custom_routing