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

Can I set a disqus_identifier without losing old comments? Dynamically?

本文关键字:disqus 设置 identifier 动态 情况下 评论 我可以      更新时间:2023-09-26

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

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

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

我正在考虑解决这个问题的方法是在<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. 如果我全局设置它,旧线程现在是否有标识符,这会干扰现有评论吗?
  3. 有没有更简单的方法可以做到这一点?
  4. 只是在写这篇文章时更多地思考这个问题,我已经意识到我可能只是使用规范链接作为disqus_identifier.思潮?

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

由于如果未定义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;

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