Langsung ke konten utama

Blogger: Disqus Comment on Click with Counter Comment Count

Jangan lupa membaca artikel tentang bisnis di > Informasi bisnis terbaik 2020.

You can load Disqus Comment Box when you click on an Element. Advantage Loading Disqus comments on demand with onclick event will increases page load speed of your site.

Usually, when the page its been loaded, at the same time disqus comment system will also be loaded. It will gain much http request, load all resource associated comments from Disqus server. All the comments, avatars of commentators, uploaded images, support files etc, all this has to come all the way from Disqus server on to our page. As result, the page load speed of our site decreases.

When we are fans of speed, we have to do something to lower http request. If you are searching to trick disqus, it will gave you at least two option, Lazyload disqus comment, so disqus will load when our mouse scroll hit at the disqus box element. the other option is load Disqus Comment box on demand with on Click function.

This post is about Show Disqus Comment Box with Comment Counter Count after we Click on Div Element. We have two option when we want to call Disqus Comment Count, with and without API, and in this post, we want to use it without API Call. Let’s see how to do this.

DEMO

Show Comments [0]
First, go to disqus admin site setting page and click on "Community". On the right side we have three "Comment Count Link" Zero comments, One comment and Multiple comment. by default it filled with : Zero comment : 0 Comments, One comment : 1 Comments, Multiple : {num} Comments. We have to Change that comment counter text on that field with removing all " Comments" text, so it will look like : 0, 1, and {num}. Click on Save button to make changes.


Second, go to your blogger site admin page. If you have already installed disqus widget, remove it first from the left sidebar Layout section. Next, click on "Theme" on the left sidebar. On the new right interface you will notice "Backup /Restore" button, hit that to download and save your xml theme script, in case we got messing around it can be restored with that xml by hitting the button again.

On the "Theme" Section, Click on "Edit HTML", click on our html text area box then hit CTRL + F on the keyboard, then fill with <b:includable id='comments' var='post'> on the input text area new ones appear in our html code box, then hit Enter on the keyboard.

Once the result found, we are shown the highlighted word. if it still wrapped, click on ">" on the left line of the highlighted word, so we got code structure like below :

<b:includable id='comments' var='post'>  <div class='comments' id='comments'>   <a name='comments'/>   <b:if cond='data:post.allowComments'>    <h4><data:post.commentLabelFull/>:</h4> 

We are about to modify on that structure, to make it look like below :

<b:includable id='comments' var='post'>  <div class='comments' id='comments'>   <!-- Paste our newly disqus block code below here -->   <a name='comments'/>   <b:if cond='data:post.allowComments'>    <h4><data:post.commentLabelFull/>:</h4>  

To that, grab this block code and paste below <div class='comments' id='comments'> , make change on var disqus_shortname = 'your_disqus_shortname' with your given shortname, save and visit any of your blog post to see the changes.

<!-- Disqus Block Code --> <b:if cond='data:view.isPost'> <style> #disqus-box {     background-color: #2e9fff;     color: #fff;     font-size: 16px;     font-weight: 600;     height:100px;     text-align: center;     width: 100%;     border-width: 0px;     margin: 20px 0px;     cursor: pointer;     border-radius: 5px; } #disqus-box:hover {     background: #164b78; } #disqus-pre {     position: relative; padding: 40px 0px;  } </style>  <div class='popzone'>     <div id='disqus_thread'>         <div id='disqus-box'>             <div id='disqus-pre'>Show Comments [<span id='comment-count' class='disqus-comment-count' expr:data-disqus-url='data:post.canonicalUrl'>0</span>]</div>         </div>     </div> </div>  <script>     var disqus_shortname = 'your_disqus_shortname';     var disqus_blogger_current_url = "<data:blog.canonicalUrl/>";         $.getScript('//' + disqus_shortname + '.disqus.com/count.js', disqus_counts_loaded);       function disqus_counts_loaded() {         DISQUSWIDGETS.old_displayCount = DISQUSWIDGETS.displayCount;         DISQUSWIDGETS.displayCount = function(arg) {         DISQUSWIDGETS.old_displayCount(arg);             $("[id], [comments]").trigger('disqus-counts-loaded');          }     }       $('#comment-count').bind('disqus-counts-loaded', function() {          var obj = $(this);         if (obj.text() == "0") {              $('#disqus-pre').html("Write Comment");         }     });       var disqus_config = function () {         this.callbacks.onReady = [function(data) {             $("#disqus-box").delay(300).fadeOut();         }];     };       $('#disqus-box').on('click', function(){         $.ajax({             type: 'GET',             url: '//' + disqus_shortname + '.disqus.com/blogger_item.js',             dataType: 'script',             cache: true         }); $('#disqus-pre').html("Loading Comment Box...");     });      if(/\#comment/.test(location.hash)){         $('#disqus-box').trigger('click');     }  </script> </b:if> <!-- Disqus Block Code End --> 

Explanation Html Part :
<b:if cond='data:view.isPost'> ... </b:if> its new blogger conditional tag if its page contain your post. the old one is <b:if cond='data:blog.pageType == "item"'> ... </b:if> we put this conditional tag before our code, so our code will only show in the page contain post only, blog static pages not included.

If you want to implement this code on mobile (m=1) only, then you must add <b:if cond='data:blog.isMobile == "true"'> after post conditional tag and place </b:if> right before closing conditional post tag </b:if>

Inside <Style> ... </style> is code for theming our On Click Div Block.
<div id='disqus_thread'> ... </div> this is block will be embedded by our disqus comment box iframe. <div id='disqus-box'> ... </div> This our div like a button, infused On Click jquerry Code.
Next is <div id='disqus-pre'> ... <span class='disqus-comment-count'>0</span> </div> this is the part to show our Text and Comment Count text inside span tag filled with number "0".

in the Span tag, you will see expr:data-disqus-url='data:post.canonicalUrl used by disqus to identify which page is, we can replace it to expr:data-disqus-identifier='data:post.id if we want. while data:post.id is our unique post id which mean different on every post, data:post.canonicalUrl is our post current url.

Explanation Script Part :
inside <script> ... </script> is code to modifying html part dynamically.
var disqus_shortname = 'your_disqus_shortname' you must change it to your disqus short name.

The Comment Part.
We using getScript() to get the count.js file and then call function disqus_counts_loaded upon success. Basically, if you follow guidelines from disqus to implementing comment count, we have to only insert count.js script tag and class='disqus-comment-count'. The problem is disqus will not identify your post as an open thread if that post never been open Disqus Comment Box, as a result comment count will show nothing.

After the first time we open (load) disqus comment box there is huge delay before the post comment count show 0 (zero), thats why we filled "0" inside span tag. This is remind me of bot crawl to our page and index it.

In this case, we want to change that #disqus-pre if text inside span have value = 0 with if (obj.text() == "0") dynamically to "Write Comment" text by adding $('#disqus-pre').html("Write Comment");, but we got another problem, count.js script does not have any callback, so we dont know when the value inside span has been changed by disqus. This why disqus_counts_loaded() must play.

Via $.getScript(). This loads the count.js script file, executes it and then calls the callback function disqus_counts_loaded(). When the script is done with, it inserts another script called count-data.js into our page to fetch the data. When count-data.js is loaded, DISQUSWIDGETS.displayCount() is automatically called to fill the elements full with the new data. Because we overridden displayCount() with our own function, it now fires an event afterwards to any elements wishing to know when the "disqus-counts-loaded" occurs.

On the bottom part, there is if statment, if url contain Comment, div disqus box must be open. so we add trigger click on that.

OnClick Part.
This one is handle right click function when someone click on div with id (#) disqus-box. In the end part we change current text of #disqus-pre to "Loading Comment Box" and dissapear after 300ms when disqus on ready state after we click on it.

Disadvantage of this method showing comment count without API Call, if someone post an comment and then reload the current url the comment count will not change immediately. Because it have delay 10-15 minute even more before comment count get updated by disqus server. You can make it comment count updated immediately after reloading page with API Call Function.

Sumber https://www.blakbin.com/

Selain sebagai media informasi pendidikan, kami juga berbagi artikel terkait bisnis.

Komentar

Postingan populer dari blog ini

Aturan Input Nomor Registrasi Akta Kelahiran di Dapodik Versi 2016

Jangan lupa membaca artikel tentang bisnis di > Informasi bisnis terbaik 2020 . Aturan Input Nomor Registrasi Akta Kelahiran di Dapodik . Aplikasi Dapodik Versi 2016 yang dirilis Ditjen Dikdasmen (Direktorat Jendral Pendidikan Dasar dan Menengah) dibuat dengan format baru. Mulai dari tampilan, menu aplikasi hingga beberapa pembaruan sistem telah dilakukan. Untuk itu, sebagai seorang operator anda perlu mengetahui semua jenis pembaruan aplikasi yang resmi dirilis ini. Mengapa harus demikian? Sebab ada beberapa pembaruan yang sangat penting dan wajib diisi. Apabila tidak dilakukan, maka yang terjadi adalah saat melakukan validasi data akan muncul peringatan Invalid. Jenis peringatan ini berarti bahwa ada data utama yang belum diisi atau diisi tetapi masih salah. Sehingga anda tidak akan bisa melakukan sinkronisasi data selama hal itu belum diperbaiki sesuai dengan juknis penggunaan aplikasi. Aturan Input Nomor Registrasi Akta Kelahiran di Dapodik. Pasti anda sudah mengerti ak...

CONTOH SK KRITERIA KENAIKAN KELAS DAN KELULUSAN

Jangan lupa membaca artikel tentang bisnis di > Informasi bisnis terbaik 2020 . KOP MADRASAH SURAT KEPUTUSAN No. ……………………… Tentang KRITERIA KENAIKAN KELAS DAN KELULUSAN A. Mekanisme Kenaikan Kelas 1)       Penentuan siswa yang naik dan tidak naik ditetapkan pada rapat antara kepala madrasah dan dewan guru. 2)       Pertimbangan kenaikan kelas bagi siswa didasarkan pada kriteria kenaikan kelas, presensi siswa, kelakuan atau sikap siswa yang bersangkutan. 3)       Siswa yang dinyatakan naik kelas, rapornya dituliskan naik ke kelas berikutnya. 4)       Siswa yang dinyatakan tidak naik kelas harus mengulang di kelas yang sama. 5)       Rapor kenaikan kelas dinyatakan sah apabila telah ditandatangani oleh wali kelas dan kepala madrasah. 6)       Bagi siswa yang naik kelas tetapi belum tuntas pada mata pelajaran te...

Kombinasi Warna Orange Muda

Jangan lupa membaca artikel tentang bisnis di > Informasi bisnis terbaik 2020 . Kombinasi Warna Orange Muda  | Setiap orang pasti memiliki selera masing - masing, semua itu adalah hal yang mutlak. seperti selera warna, menurut desainer semua manusia pasti memiliki warna favorit, karena dengan warna kesukaan kita bisa merasakan hal yang membuat perasaan jadi tenang dan damai. untuk pertemuankali ini, kita akan membahas tentang warna orange muda, serta penerapan kombinasi warna orange muda pada desain. Warna Orange Muda Apa itu warna orange muda ? Warna orange muda adalah warna orange yang sudah diberikan penerangan, dengan cara dicampurkan warna putih sehingga kelihatan lebih cerah. warna orange muda tergolong warna pastel sebab warna pastel adalah kategori warna muda. Warna orange juga memiliki arti yaitu menunjukan antusiasme, persahabatan, suatu pencapaian, kesuksesan, kesehatan pikiran dan kehangatan. ini semua diambil dari hasil uji laboratorium, pengaruh warna orange terhad...