disqus讨论、评论配置 Nodejs 相关问题

disqus讨论、评论配置 Nodejs 相关问题

我在我的博客里面添加了js但是为什么不是这篇文章的评论也会出现在所有文章里面。 就是说评论是不区分文章的。怎么弄?

7 回复

当然可以!下面是一个关于如何在 Node.js 中正确配置 Disqus 讨论和评论功能的详细指南,包括解决评论不分文章的问题。

配置 Disqus 讨论和评论

Disqus 是一个流行的评论系统,可以轻松集成到你的网站或博客中。为了确保每个页面的评论都是独立的,你需要正确地为每篇文章设置唯一的标识符(ID)。

步骤 1: 注册 Disqus 账号并获取短代码

首先,你需要注册一个 Disqus 账号,并创建一个新的站点。完成后,你会得到一个短代码(例如 your-shortname),用于在你的网站上嵌入 Disqus。

步骤 2: 在前端页面中嵌入 Disqus

假设你使用的是 Express 框架,你可以在每个文章页面中嵌入 Disqus 的 JavaScript 代码。你需要为每篇文章生成一个唯一的标识符。

<!-- views/article.ejs -->
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title><%= article.title %></title>
</head>
<body>
    <h1><%= article.title %></h1>
    <div id="disqus_thread"></div>
    <script>
        var disqus_config = function () {
            this.page.url = '<%= article.url %>'; // 必须是唯一 URL
            this.page.identifier = '<%= article.id %>'; // 必须是唯一 ID
        };

        (function() { // DON'T EDIT BELOW THIS LINE
            var d = document, s = d.createElement('script');
            s.src = 'https://<%= disqusShortName %>.disqus.com/embed.js';
            s.setAttribute('data-timestamp', +new Date());
            (d.head || d.body).appendChild(s);
        })();
    </script>
    <noscript>Please enable JavaScript to view the <a href="https://disqus.com/?ref_noscript">comments powered by Disqus.</a></noscript>
</body>
</html>

步骤 3: 确保每个页面的 URL 和 ID 唯一

在上面的代码片段中,article.urlarticle.id 应该是唯一的,以确保 Disqus 可以正确地将评论与特定的文章关联起来。确保在后端路由中传递这些值:

// routes/articles.js
const express = require('express');
const router = express.Router();

router.get('/articles/:id', async (req, res) => {
    const articleId = req.params.id;
    const article = await getArticleById(articleId); // 从数据库或其他数据源获取文章
    res.render('article', { article, disqusShortName: 'your-shortname' });
});

module.exports = router;

通过以上步骤,你应该能够正确地配置 Disqus 并确保每个文章的评论都是独立的。如果仍然遇到问题,请检查 article.urlarticle.id 是否确实唯一,并且是否正确传递给前端模板。


disqus其实是靠url区分的。 你url是用#实现的?

嗯嗯,我觉得问题也在这里。

楼主是不是做的富前端应用啊?

看这里:

http://help.disqus.com/customer/portal/articles/472098-javascript-configuration-variables

自己定义 disqus_url,而不是让 disqus 去 window.location.href 自动获取。


简单说来,

  1. 就是每当你的文章页面跳转时,重新定义 disqus_url

  2. 清空 disqus_thread

  3. 重新加载 disqus 的 js 文件

OK 的话记得回来告诉我一声

为什么没显示我的回复?我记得我很早就回复了的。我再回复一次吧。这个问题当天晚上我自己就解决了,问题原因出在一个t_i这个参数上面。具体的抓包可以看到。

谢谢。但是我记得我貌似回复过。不知道为什么又没了。

在使用 Disqus 配置评论系统时,确保每篇文章都有唯一的标识符(例如文章ID或URL),这样 Disqus 才能正确区分不同文章的评论。如果所有文章的评论都混在一起,可能是由于没有为每篇文章正确设置 data-disqus-identifier

示例代码

  1. HTML部分

    在每篇文章的评论区域添加 Disqus 评论组件,并确保每个组件都有一个唯一的标识符:

    <div id="disqus_thread"></div>
    <script>
        var disqus_config = function () {
            this.page.identifier = '/article/' + 'unique-article-id'; // 每篇文章的唯一标识符
            this.page.url = 'https://yourdomain.com/article/unique-article-id'; // 每篇文章的完整URL
        };
        (function() { // DON'T EDIT BELOW THIS LINE
            var d = document, s = d.createElement('script');
            s.src = 'https://your-disqus-shortname.disqus.com/embed.js';
            s.setAttribute('data-timestamp', +new Date());
            (d.head || d.body).appendChild(s);
        })();
    </script>
    
  2. JavaScript部分

    确保你的页面加载了 Disqus 的脚本,并且正确配置了 data-disqus-identifierpage.url。这将帮助 Disqus 正确识别每篇文章。

关键点解释

  • data-disqus-identifier:这是 Disqus 用来区分不同文章的关键字段。你需要为每篇文章设置一个唯一的标识符。
  • page.url:这是每篇文章的完整URL,也是 Disqus 用来识别文章的重要参数之一。

通过上述设置,你可以确保 Disqus 能够正确地为每篇文章分配评论,从而避免评论混在一起的情况。

回到顶部