我可以在不丢失旧评论的情况下设置disqus标识符吗?动态?

时间:2015-01-06 17:24:31

标签: javascript disqus hubspot

最终结果:我正在尝试修复Disqus使用UTM网址参数读取链接作为与干净网址分开的网页的问题。

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

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

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

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

这提出了一些问题和疑虑:

  1. ~~这样可以动态设置标识符吗?或者,更重要的是,这样做是否真的很愚蠢?~~编辑:Disqus实际上建议动态设置标识符,所以我在这里并不是完全愚蠢。
  2. 如果我全局设置,旧线程现在是否有标识符,是否会干扰现有注释?
  3. 是否有方式更简单的方法来执行此操作?
  4. 我在写这篇文章的过程中只是在思考这个问题而且我已经意识到我可能只使用规范链接作为disqus_identifier。想法?
  5. 限制:我无法禁用电子邮件的跟踪代码(尽管这是最简单的方法)。我们没有开发网站,所以这一切都是现场的,所以我宁愿不要在这里做太多的猜测(尽管我很明显可以很容易地恢复)。

1 个答案:

答案 0 :(得分: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;

是的,这非常糟糕。如果您想要优化它,请成为我的客人。似乎工作似乎。