Jekyll集成Disqus本地正常,GitHub Pages不显示问题求助
我帮你排查了下代码,线上Disqus评论不显示主要有这几个问题,咱们一个个来解决:
1. 页面标识(page.identifier)格式错误
看你的disqus_comments.html里的这段代码:
this.page.identifier = grilla99-github-io;
这里的grilla99-github-io是字符串,但你没加引号,JavaScript会把它当成变量,直接就报错了。而且固定写死标识也不合理,最好用每个页面独有的标识,比如页面的完整URL或者Jekyll自带的page.id,改成这样:
this.page.identifier = "{{ page.url | absolute_url }}";
这样每个文章的评论线程都是独立的,不会串评论。
2. 未配置正确的页面URL(page.url)
你把this.page.url = PAGE_URL;注释掉了,Disqus需要正确的页面规范URL来关联评论线程,线上环境下这个URL必须是你的GitHub Pages完整地址。把注释去掉,改成动态获取:
this.page.url = "{{ page.url | absolute_url }}";
absolute_url会自动生成带域名的完整URL,不管本地还是线上都能正确识别。
3. 检查Disqus后台的站点配置
登录你的Disqus后台,找到对应站点(grilla99-github-io-1),进入Settings -> Advanced,看看Domain Whitelist里有没有添加grilla99.github.io,如果没有的话补上,Disqus会限制只有白名单内的域名才能加载评论组件。
4. 清理缓存再测试
有时候线上页面会有缓存,推送修改后,先在浏览器里强制刷新(Ctrl+F5或者Cmd+Shift+R),或者等个几分钟让GitHub Pages完全部署完成再测试。
修改后的disqus_comments.html参考版本:
{% if page.comments %} <div id="disqus_thread"></div> <script> /* RECOMMENDED CONFIGURATION VARIABLES: EDIT AND UNCOMMENT THE SECTION BELOW TO INSERT DYNAMIC VALUES FROM YOUR PLATFORM OR CMS. * LEARN WHY DEFINING THESE VARIABLES IS IMPORTANT: https://disqus.com/admin/universalcode/#configuration-variables*/ var disqus_config = function () { this.page.url = "{{ page.url | absolute_url }}"; // 完整页面URL this.page.identifier = "{{ page.url | absolute_url }}"; // 页面唯一标识 }; (function() { // DON'T EDIT BELOW THIS LINE var d = document, s = d.createElement('script'); s.src = 'https://grilla99-github-io-1.disqus.com/embed.js'; s.setAttribute('data-timestamp', +new Date()); (d.head || d.body).appendChild(s); })(); </script> <noscript>Please enable JavaScript to view the comments powered by Disqus.</noscript> {% endif %}
按照上面的步骤修改后,推送代码到GitHub,等部署完成后刷新页面,评论应该就能正常显示了。
内容的提问来源于stack exchange,提问作者Grilla99

