【问题标题】:how to determine what page my script is run on如何确定我的脚本在哪个页面上运行
【发布时间】:2012-09-27 02:45:58
【问题描述】:

安装我的应用后,我会创建一个脚本标签(通过 shopify API)。我只对在产品视图页面上运行此脚本感兴趣。检查脚本是否由产品视图页面运行的可靠方法是什么?我是否应该要求商家手动将某些内容放入他们的液体文件中?

【问题讨论】:

    标签: javascript shopify


    【解决方案1】:

    这应该可以在 你的 JavaScript 中工作:

    // If we are on a product page
    if (window.location.pathname.indexOf('/products/') !== -1) {
     // What's the product handle?
     var productHandle = pathname.match(/\/products\/([a-z0-9\-]+)/)[1];
    }
    

    【讨论】:

    • 对于这个特定的问题: - 我应该要求商家手动将一些东西放入他们的液体文件吗?我的回答: - 请,我求你:不。尽可能不要将任何内容添加到您以后无法删除的主题文件中,并且不要(甚至更少)要求客户编辑他们的主题。
    【解决方案2】:

    您可以传递一个额外的函数参数来指定函数的调用位置。我在几个项目中使用了这种编程并取得了巨大的成功。例如:

    function foo(data, moarData, caller) {
      if(caller != 'productPage') { return false; }
      ...
    }
    

    您可以在产品视图页面的函数调用中指定调用者变量:

    var page = 'productPage';
    foo('sharks', 'games', this.page);
    

    【讨论】:

    • 谢谢。我不确定我是否理解。当我创建一个脚本标签时,我给它一个 URL,当商店呈现页面时将调用它。我无法控制 url 将接收哪些参数。你能澄清一下吗?
    • 啊,我现在明白你的意思了。但是,是的,您确实对此有一定的控制权。你可以 然后放一个 之后。如果您可以控制从哪里调用函数,那么您肯定可以控制发送额外的值。
    • 当我安装脚本标签时,我的 URL 会从商店的每个页面调用。他们传递给 URL 的唯一参数是商店的名称。要像您建议的那样拨打电话,我需要让店主将此脚本输入页面。换句话说,所有者需要修改商店的产品视图模板文件。我试图避免这种情况。我希望能够检查 DOM 以确定我在哪个页面上。如果可能的话。
    【解决方案3】:

    Shopify 中的产品页面上始终有一个将产品添加到购物车的表单,因此您可以执行以下操作(假设 jQuery 可用):

    jQuery("form[action='/cart/add']").each(function() {
      console.log("I'm in ur product page");
    });
    

    【讨论】:

      【解决方案4】:

      编写一些通用的 Javascript 来查询浏览器中的当前 URL。您可以轻松判断您是在页面、产品还是集合上。尝试一个简单的正则表达式来做到这一点。由于 Shopify 是托管的,因此商店很难弄乱 URL 结构。

      【讨论】:

      • 这是一个很好的建议,谢谢。您的意思是即使商店使用自定义域,URL 路径也保持不变?我还需要知道当前页面上显示的产品 ID。你将如何获取它?
      • 使用相同的技术,您可以从 URL 解析产品的句柄。使用它,您的代码可以使用 Ajax API 来请求产品并为您提供 ID。同样,使用通用 Javascript 完全可以实现,但也很笨重,因为您真的不必向服务器询问产品,因为您已经将它放在盘子上。不幸的是,除非脚本使用 Liquid 提取产品的 JSON,否则获取 ID 并不简单。也许您可以在注入的脚本中执行此操作。变种产品 = {{产品 | json}}; var id = product.id
      猜你喜欢
      • 2021-12-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-26
      • 1970-01-01
      • 2021-02-27
      • 2014-02-16
      • 2020-09-11
      相关资源
      最近更新 更多