前端时间开博客开通了评论功能,使用的是多说评论duoshuo.com,今天在查找一些资料时,发现每一篇博客都有相同的评论,
自己当时没有测试该功能,居然有出现这种问题,看来还是凡事都得马虎不得,不能轻易想当然!

简单梳理了下解决的思路,希望对遇到相同问题的朋友有所帮助

思考过程

  • 查找原因

每一篇文章都是相同的回复,测试了一下,回复一篇文章,其他文章都出现了自己的回复,认为是同一篇文章?

先登录多说的管理后台,看到评论的文章名称都是乱码。

再查看自己的配置,检查哪里是否配置错,

评论模块的配置:comment.ejs

这里是copy的多说提供的通用配置

    <!-- 多说评论框 start -->
        <div class="ds-thread" data-thread-key="请将此处替换成文章在你的站点中的ID" data-title="请替换成文章的标题" data-url="请替换成文章的网址"></div>
    <!-- 多说评论框 end -->
    <!-- 多说公共JS代码 start (一个网页只需插入一次) -->
    <script type="text/javascript">
     。。。
    <!-- 多说公共JS代码 end -->

这里可以看出data-thread-key 是个关键字段,是用来区分文章的唯一ID,这里居然居然没改,问题肯定在这里,马上检查生成的html,果然<section id="comments" class="comment">模块部分生成的代码data-thread-key=内容都是乱码了,打开几篇文章查看,果然都是相同的乱码。因为comment.ejs默认的编码不是UTF-8。所以嵌入到文章里只有这部分是乱码

  • 问题解决

把comment.ejs中的中文注释全部删除,COPY 最新的 多说通用代码,修改data-thread-key, data-title,data-url的配置

    <section id="comments" class="comment">
        <div class="ds-thread" data-thread-key="<%- page.path %>" data-title="<%- page.title %>" data-url="<%- page.permalink %>"></div>
      <script type="text/javascript">
       var duoshuoQuery = {short_name:"zijide"};
        (function() {
            var ds = document.createElement('script');
            ds.type = 'text/javascript';ds.async = true;
            ds.src = (document.location.protocol == 'https:' ? 'https:' : 'http:') + '//static.duoshuo.com/embed.js';
            ds.charset = 'UTF-8';
            (document.getElementsByTagName('head')[0] 
             || document.getElementsByTagName('body')[0]).appendChild(ds);
        })();
        </script>
    </section>

再次发布,测试评论模块及回评,OK了。

凡事须再细心,认真