-
-
Save nternetinspired/7482445 to your computer and use it in GitHub Desktop.
// Requires jQuery of course. | |
$(document).ready(function() { | |
$('.show-comments').on('click', function(){ | |
var disqus_shortname = 'YOUR-DISQUS-USERNAME'; // Replace this value with *your* username. | |
// ajax request to load the disqus javascript | |
$.ajax({ | |
type: "GET", | |
url: "http://" + disqus_shortname + ".disqus.com/embed.js", | |
dataType: "script", | |
cache: true | |
}); | |
// hide the button once comments load | |
$(this).fadeOut(); | |
}); | |
}); |
<!-- An element a visitor can click if they <3 comments! --> | |
<button class="show-comments">Load Disqus comments</button> | |
<!-- The empty element required for Disqus to loads comments into --> | |
<div id="disqus_thread"></div> |
REALLY useful. I knew that my page loads were being really severely effected by Disqus. Though I do also think Disqus is a great solution for comments, the loading time is a major issue so its worth sacrificing and using dynamic load. This is also majorly true for mobile devices. THANK YOU! :)
$.getScript would tidy things up a bit.
edit: ahh, the downfall is this sets cache to false. So you'd have to do something in ajax setup... or just don't listen to me and do what @nternetinspired said. :)
- How to make it open in a new window/pop up window ?
- How this code can be changed for using multiple threads on same page?
Amazing, thanks for this.
This is awesome - finally I found a solution that works with Content-Security-Policies. My attempts to get Disqus with the jQuery load() function all resulted in a unsafe-eval violation.
Thank you so much!
Fixed: I fixed the problem. The problem was that blogger redirects to the country specific blogger domain. That's when disqus looses the thread-url. I needed to use the disqus variables from their original code (https://help.disqus.com/customer/portal/articles/888340-manually-adding-a-disqus-gadget-to-blogger). The second problem was the embed.js script. I changed it to blogger_item.js and now everything works fine.
(original question)
When I use this code for my blog, commens which already have been postet to it are not displayed. Somehow Disqus can not make the reference to the previous comments. Is there a way to fix this? Can I use the page URL as parameter somehow? I created a test-blog and there it works. Only difference: my shortname. the shortname for my real blog has "-" in it. Can it effect it? Do I need to escape them?
It's more practical to use protocol-relative URL, '//' instead of 'http://'. Disqus also suggests it in their template code.
How does this work on WordPress blog posts?
@seb86 you could just place the HTML code into the single.php file and the SCRIPT into the footer.php and that should do it.
@rrecinos Do I not have to specify a post ID?
Possible to make that button toggle comments on and off?
Thank you very much 👍
Piggybacking off of euler0's comment, in this day and age you really just want to use HTTPS instead of protocol-relative.
See for example https://jeremywagner.me/blog/stop-using-the-protocol-relative-url
Why does it has to be jquery? Can't JavaScript do this? Since it's to reduce bloat might as well do it in pure JavaScript.
How to specifiy postID etc... ?
Simple and effective. Thanks for posting.