【问题标题】:With Algolia, how to pass the query string created by urlSync into the php client?使用 Algolia,如何将 urlSync 创建的查询字符串传递到 php 客户端?
【发布时间】:2017-03-09 14:00:16
【问题描述】:

使用 Algolia InstantSearch js 库和 PHP 客户端,我希望将 InstantSearch urlSync 创建的查询字符串传递给 PHP 库的搜索方法。有没有一种方便的方法可以做到这一点,还是我必须自己将查询字符串转换为库期望的参数?

例如,我有字符串:

?q=&hPP=1000&idx=myindex&p=0&dFR%5Bcolor%5D%5B0%5D=orange&is_v=1

理想情况下我愿意

$client = new \AlgoliaSearch\Client("x", "x");
$index = $client->initIndex($_GET['idx']);
parse_str($_SERVER['QUERY_STRING'], $params);
$res = $index->search('', $params);

但这样做会引发错误,即传递的参数中有意外属性。

【问题讨论】:

    标签: javascript php search algolia


    【解决方案1】:

    不幸的是,使用 Algolia 客户端在后端重复使用即时搜索 URL 确实是不可能的。我假设您是出于 SEO 目的而询问此问题,这绝对是正确的观点。

    目前唯一可行的语言是 JavaScript。 事实上,这个逻辑可以从instantsearch.js:algoliasearch-helper-js的底层库中提取出来。

    您实际上可以在前端添加此逻辑,对该查询进行 URL 编码并将其设置在您将在后端解码的自定义参数中。这很难看,但它可以工作(虽然它可能不适合最大 URI 长度)。

    在前端,您不必经历从 URL 中提取状态并将状态设置为新助手的过程,您可以简单地使用 search.helper - 其中 search 是您的 @ 987654333@实例。

    【讨论】:

    • 感谢您的解释。是的,目标是 SEO;我希望在 js 准备好之前提供缓存的结果。如果 syncUrl 使用的名称与过滤器参数兼容,那就太好了,并且这些名称在所有客户端中都是一致的(也许它们已经是一致的了,我到目前为止除了 js 和 PHP 还没有使用过)。但这只是一个建议。现在我只是将传递的 URL 参数映射到 PHP,我们可以可靠地控制我们将接收的内容并让 js 在服务器上运行,只是因为这太过分了。再次感谢!
    • 这绝对是个好建议,内部正在讨论。由于对此的任何更改可能不会在几个月之前进行,因此此解决方案可能是同时可用的最佳解决方案。但显然,我们正在尽最大努力统一我们所有支持平台的体验。 :)
    猜你喜欢
    • 1970-01-01
    • 2016-05-11
    • 2015-04-29
    • 2021-09-05
    • 2019-09-03
    • 1970-01-01
    • 2021-02-24
    • 2020-04-21
    • 2017-03-11
    相关资源
    最近更新 更多