【问题标题】:Can I set a disqus_identifier without losing old comments? Dynamically?我可以在不丢失旧评论的情况下设置 disqus_identifier 吗?动态的?
【发布时间】:2015-01-06 17:24:31
【问题描述】:

最终结果:我正在尝试解决 Disqus 将 UTM URL 参数作为与干净 URL 分开的页面的链接读取的问题。

背景故事: 当 Disqus 最初安装在 HubSpot 上的此站点上时,除了论坛短名称之外没有设置任何选项。当读者直接或通过没有跟踪参数的干净 URL 访问博客文章时,他们将看到正确的 Disqus cmets 线程。但是,如果他们使用带有一堆跟踪参数的“脏” URL 访问帖子,例如通过我们的电子邮件订阅发送的其中一个参数,他们将看到与 该特定 URL 相关联的 Disqus 评论线程.

显然,我们希望通过电子邮件链接访问的人能够看到与通过我们自己的网站访问的人相同的 cmets 线程。

我正在考虑解决这个问题的方法是使用<body>hs-content-id-xxxxxxxxx 类的xxxxxxxxx 部分来设置disqus_identifier

var hsbody = document.body.classList;
var hsid = hsbody.item(0);
var disqus_identifier = hsid.replace("hs-content-id-", "");

这引发了一些问题和担忧:

  1. ~~这样动态设置标识符可以吗?或者,更重要的是,这样做是不是很愚蠢?~~ 编辑:Disqus 实际上建议动态设置标识符,所以我在这里并不完全愚蠢。
  2. 如果我在全局范围内设置,旧线程现在是否会有标识符,这会干扰现有的 cmets 吗?
  3. 有没有方法更简单的方法来做到这一点?
  4. 我在写这篇文章时只是在思考这个问题,我意识到我可能只使用规范链接作为disqus_identifier。想法?

限制:我无法禁用电子邮件的跟踪代码(尽管这是最简单的方法)。我们没有开发网站,所以这一切都是实时的,所以我不想在这里做太多的猜测(尽管我显然可以很容易地恢复)。

【问题讨论】:

    标签: javascript disqus hubspot


    【解决方案1】:

    由于disqus_identifier 设置为未定义的页面 URL,因此我将其设置为页面的规范 URL。我不能输!

    var canonical = "";
            var links = document.getElementsByTagName("link");
                for (var i = 0; i < links.length; i ++) {
                    if (links[i].getAttribute("rel") === "canonical") {
                        canonical = links[i].getAttribute("href");
                    }
                }
            var disqus_identifier = canonical;
    

    是的,这很恶心。如果你想改进它,请成为我的客人。不过,似乎有效。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-02-04
      • 2019-04-25
      • 2016-12-16
      • 1970-01-01
      • 1970-01-01
      • 2017-08-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多