1

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

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

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

我正在考虑解决这个问题的方法是使用类中的xxxxxxxxx部分来设置:hs-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. 想法?

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

4

1 回答 1

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;

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

于 2015-01-06T18:07:51.743 回答