无法在 Liquid 代码、Shopify 中找到访问者的位置

Posted

技术标签:

【中文标题】无法在 Liquid 代码、Shopify 中找到访问者的位置【英文标题】:Unable to find visitor's location in Liquid code, Shopify 【发布时间】:2019-06-27 12:14:36 【问题描述】:

我一直在尝试通过调整我的 Shopify 主题的液体代码来根据国家/地区过滤我的产品。但是,我遇到了一个问题,我想在我的 Liquid 代码中访问访问者所在的国家/地区,但无法做到。

我可以使用 AJAX/JQuery 来获取位置,但它在客户端运行,直到那时,液体已经在服务器端处理,这使得过滤变得不可能。

我已成功尝试使用 AJAX 获取位置,但不知道如何在 Liquid 代码中使用它。

$.getJSON("https://ipinfo.io", function(data) 
    console.log(data.country);
);

【问题讨论】:

【参考方案1】:

您需要使用customer object 和customer_address object。

您还需要先检查客户是否已登录:

% if customer and customer.default_address %
    Country:  customer.default_address.country 
% endif %

【讨论】:

这是不可能的。我迫不及待地等待客户登录,以便根据客户所在的国家/地区过滤产品。 如果您等不及客户,那么检查用户所在国家/地区的唯一方法是使用他们的 IP 通过地理定位,这不是 Shopify 的问题。您可能会使用第三方地理定位服务。【参考方案2】:

您不能使用 Liquid 来确定国家/地区。首先,在这个 *** 时代,它不可靠,其次 Shopify 将记录限制为分配给订单的客户 IP 地址。

使用客户的建议是您最好的选择。如果他们没有登录,太糟糕了,你会显示通用的东西。如果他们已登录,则您可以根据地址决定向他们展示什么。请注意,即使这样也可能会给您带来一些痛苦。

【讨论】:

以上是关于无法在 Liquid 代码、Shopify 中找到访问者的位置的主要内容,如果未能解决你的问题,请参考以下文章

在 Visual Studio 代码中格式化液体(Shopify)代码

shopify中的.js和.js.liquid有啥区别?

用于 Shopify 主题开发的 LESS CSS 和转义 Liquid 语法

scss 使用Autoprefixer在SASS中编译Shopify Liquid标签的Gulp任务

Shopify:如何在集合模板上显示特定集合

Shopify Liquid:连续 for 循环无序迭代