Timer 我们如何检测重复访客IP并在液体中创建条件?

Timer 我们如何检测重复访客IP并在液体中创建条件?,timer,conditional-statements,shopify,liquid,Timer,Conditional Statements,Shopify,Liquid,我有一个自定义页面,使用Shopify liquid创建-> 我已将计时器设置为在3秒内加载,以显示sales元素 问题是,我想设置一个if/else条件,以便立即向回头客显示这些销售元素。有一个timer.js设置sales元素出现的时间。若它是一个新的访问者,定时器将触发,否则服务器将不加载定时器。我似乎在网上找不到任何解决办法。我是否检测到访客IP?或者有没有最好的解决办法 这是theme.liquid中的代码 {{ 'timer.js' | asset_url | script_tag

我有一个自定义页面,使用Shopify liquid创建->

我已将计时器设置为在3秒内加载,以显示sales元素

问题是,我想设置一个if/else条件,以便立即向回头客显示这些销售元素。有一个timer.js设置sales元素出现的时间。若它是一个新的访问者,定时器将触发,否则服务器将不加载定时器。我似乎在网上找不到任何解决办法。我是否检测到访客IP?或者有没有最好的解决办法

这是theme.liquid中的代码

{{ 'timer.js' | asset_url | script_tag }} .   
Timer.js代码:

$(document).ready(function(){
setTimeout(function() {
    $(".refference").css({paddingTop: "350px"});
    // $("#early-cta, #guarentee, #payments, #info, #details").show();
    $("#early-cta, #guarentee, #payments, #info, #details").fadeIn(3000);
 }, 3000);
});    

请提供帮助。

您可以查看本地存储来完成此操作。

Localstorage用于在浏览器中存储数据,无任何过期日期。 当访问者第一次访问站点时,您可以使用localStorage检测用户是否访问过您的站点,如果用户没有访问过,则运行计时器,并设置用户访问过的变量


重新访问站点时,使用localStorage并对照变量检查用户是否访问过您的站点,并相应地触发脚本。

您可以查看localStorage来执行此操作。

Localstorage用于在浏览器中存储数据,无任何过期日期。 当访问者第一次访问站点时,您可以使用localStorage检测用户是否访问过您的站点,如果用户没有访问过,则运行计时器,并设置用户访问过的变量


重新访问站点时,使用localStorage并对照变量检查用户是否访问过您的站点,并相应地触发脚本。

在@Jacob的回答和我的评论中,您可以使用JavaScript和localStorage执行所需操作

因此,我们需要添加以下内容:

函数setvisted(){
//要添加到localStorage的对象
设obj={
时间戳:新日期().getTime()
//如果需要,请在此处添加更多内容
//someValue:“foo”,
//另一个值:“bar”
}
//将对象添加到本地存储
localStorage.setItem(
“hasVisited”,//用于检索数据的键
JSON.stringify(obj)
);
}
要检索的内容如下:

函数getVisited(){
返回JSON.parse(localStorage.getItem(“hasVisited”);
}
//返回:{时间戳:1533398672593}或null
此外,作为事件的附加条件,您可以通过检查时间戳与当前时间戳并将其与预定义的过期持续时间进行比较来选择“过期”用户的localStorage值

例如,如果我想考虑一个没有作为新访客返回7天的访客:

let expiration=86400*1000*7;//7天(毫秒)
函数isNewVisitor(){
//获取当前时间戳
让timeNow=newdate().getTime();
让过期=真;
//如果getVisited不返回null。。
如果(getVisited()){
让timeDiff=timeNow-getVisited().timestamp;
过期=timeDiff>过期;
}
//如果访问者已老且未过期,请返回true
如果(!getVisited()| |过期){
返回true;
}否则{
返回false;
}
}
因此,为了与当前函数集成,我们只需在设置超时之前检查条件:

//如果访客是新访客,则将超时设置为3000
让timeout=isNewVisitor()?3000 : 0;
setTimeout(函数(){
$(“.refreference”).css({paddingTop:“350px”});
美元(“#早期cta,#担保人,#付款,#信息,#详情”)。fadeIn(3000);
},超时);
//为新访问者设置已访问对象,为旧访问者更新
setVisited();

查看这里的提琴:

阐述@Jacob的答案和我的评论,你可以用JavaScript和localStorage做你需要做的事情

因此,我们需要添加以下内容:

函数setvisted(){
//要添加到localStorage的对象
设obj={
时间戳:新日期().getTime()
//如果需要,请在此处添加更多内容
//someValue:“foo”,
//另一个值:“bar”
}
//将对象添加到本地存储
localStorage.setItem(
“hasVisited”,//用于检索数据的键
JSON.stringify(obj)
);
}
要检索的内容如下:

函数getVisited(){
返回JSON.parse(localStorage.getItem(“hasVisited”);
}
//返回:{时间戳:1533398672593}或null
此外,作为事件的附加条件,您可以通过检查时间戳与当前时间戳并将其与预定义的过期持续时间进行比较来选择“过期”用户的localStorage值

例如,如果我想考虑一个没有作为新访客返回7天的访客:

let expiration=86400*1000*7;//7天(毫秒)
函数isNewVisitor(){
//获取当前时间戳
让timeNow=newdate().getTime();
让过期=真;
//如果getVisited不返回null。。
如果(getVisited()){
让timeDiff=timeNow-getVisited().timestamp;
过期=timeDiff>过期;
}
//如果访问者已老且未过期,请返回true
如果(!getVisited()| |过期){
返回true;
}否则{
返回false;
}
}
因此,为了与当前函数集成,我们只需在设置超时之前检查条件:

//如果访客是新访客,则将超时设置为3000
让timeout=isNewVisitor()?3000 : 0;
setTimeout(函数(){
$(“.refreference”).css({paddingTop:“350px”});
美元(“#早期cta,#担保人,#付款,#信息,#详情”)。fadeIn(3000);
},超时);
//为新访问者设置已访问对象,为旧访问者更新
setVisited();

查看这里的提琴:

这更像是一个javascript问题,而不是流质问题。事实上,除了分析功能外,我不认为Liquid有任何与回访访客相关的功能或挂钩。将标签设置为包含javascript,您将很快得到答案