Cara Memperbaiki Tombol Reply Komentar Yang Tidak Berfungsi

tombol-reply-komentar-tidak-berfungsi

Cara memperbaiki tombol reply komentar blog yang tidak berfungsi. Ada kalanya ketika akan membalas komentar pengunjung blog, tombol reply comment tidak berfungsi semestinya. Penyebab error pada reply komentar ini lebih sering ditemukan setelah mengganti template blog. Pada saat mengedit script html pada template baru, ada beberapa kode pada bagian template tersebut yang mungkin tidak sengaja terhapus sehingga beberapa fungsi menjadi tidak sinkron, dan salah satunya script untuk kode reply comment.

Sebagai blogger yang bijak, tentunya membalas setiap komentar para pengunjung blog merupakan pekerjaan wajib. Apalagi jika pertanyaan yang diajukan oleh komentator penting untuk dijawab, di mana mereka sedang betul-betul membutuhkan solusi dari permasalahan yang dihadapi. Karena kalau Anda selaku admin tidak juga mau membalas pertanyaan yang diajukan pengunjung blog melalui kotak komentar yang telah anda sediakan, maka hal tersebut bisa mengurangi reputasi dan profesionalitas Anda sendiri.
Ketika seseorang mempublish sebuah artikel, sudah seharusnya ia menguasai dan tau betul apa tujuan dan isi tulisan tersebut. Maka wajib di jawab dengan benar jika ada pengunjung blog yang mengajukan pertanyaan untuk setiap artikel yang telah di publikasikan. Dengan begitu para pembaca setia dan pengunjung blog akan tau betul kalau Anda adalah seorang Admin yang profesional untuk setiap tulisan yang disajikan ke publik.
Mungkin ada diantara sobat blogger yang mengalami masalah pada tombol reply komentar di blog yang tidak berfungsi, cara berikut diharapkan bisa membantu memperbaiki persoalan tersebut. Yang perlu dilakukan yaitu mengganti keseluruhan kode komentar pada template yang digunakan, cara ini khusus dilakukan untuk template blogger.

  • Login ke Dashboard Blogger
  • Klik Template
  • Klik Edit HTML
  • Pilih Format Template
  • Cari kode berikut :

<b:includable id=’threaded_comment_js’ var=’post’> sampai kode penutupnya  </b:includable>

  • Lakukan dengan hati-hati sebab kode tersebut cukup panjang, jangan sampai kode yang lain nanti terhapus. Ganti semua kode lama dengan kode yang baru berikut ini, jika sudah jangan lupa klik Save Template, dan lihat hasilnya.

<b:includable id=’threaded_comment_js’ var=’post’>
  <script async=’async’ expr:src=’data:post.commentSrc’ type=’text/javascript’/>

  <script type=’text/javascript’>
    (function() {
      var items = <data:post.commentJso/>;
      var msgs = <data:post.commentMsgs/>;
      var config = <data:post.commentConfig/>;

// <![CDATA[
      var cursor = null;
      if (items && items.length > 0) {
        cursor = parseInt(items[items.length – 1].timestamp) + 1;
      }

      var bodyFromEntry = function(entry) {
        if (entry.gd$extendedProperty) {
          for (var k in entry.gd$extendedProperty) {
            if (entry.gd$extendedProperty[k].name == ‘blogger.contentRemoved’) {
              return ‘<span class=”deleted-comment”>’ + entry.content.$t + ‘</span>’;
            }
          }
        }
        return entry.content.$t;
      }

      var parse = function(data) {
        cursor = null;
        var comments = [];
        if (data && data.feed && data.feed.entry) {
          for (var i = 0, entry; entry = data.feed.entry[i]; i++) {
            var comment = {};
            // comment ID, parsed out of the original id format
            var id = /blog-(\d+).post-(\d+)/.exec(entry.id.$t);
            comment.id = id ? id[2] : null;
            comment.body = bodyFromEntry(entry);
            comment.timestamp = Date.parse(entry.published.$t) + ”;
            if (entry.author && entry.author.constructor === Array) {
              var auth = entry.author[0];
              if (auth) {
                comment.author = {
                  name: (auth.name ? auth.name.$t : undefined),
                  profileUrl: (auth.uri ? auth.uri.$t : undefined),
                  avatarUrl: (auth.gd$image ? auth.gd$image.src : undefined)
                };
              }
            }
            if (entry.link) {
              if (entry.link[2]) {
                comment.link = comment.permalink = entry.link[2].href;
              }
              if (entry.link[3]) {
                var pid = /.*comments\/default\/(\d+)\?.*/.exec(entry.link[3].href);
                if (pid && pid[1]) {
                  comment.parentId = pid[1];
                }
              }
            }
            comment.deleteclass = ‘item-control blog-admin’;
            if (entry.gd$extendedProperty) {
              for (var k in entry.gd$extendedProperty) {
                if (entry.gd$extendedProperty[k].name == ‘blogger.itemClass’) {
                  comment.deleteclass += ‘ ‘ + entry.gd$extendedProperty[k].value;
                }
              }
            }
            comments.push(comment);
          }
        }
        return comments;
      };

      var paginator = function(callback) {
        if (hasMore()) {
          var url = config.feed + ‘?alt=json&v=2&orderby=published&reverse=false&max-results=50’;
          if (cursor) {
            url += ‘&published-min=’ + new Date(cursor).toISOString();
          }
          window.bloggercomments = function(data) {
            var parsed = parse(data);
            cursor = parsed.length < 50 ? null
                : parseInt(parsed[parsed.length – 1].timestamp) + 1
            callback(parsed);
            window.bloggercomments = null;
          }
          url += ‘&callback=bloggercomments’;
          var script = document.createElement(‘script’);
          script.type = ‘text/javascript’;
          script.src = url;
          document.getElementsByTagName(‘head’)[0].appendChild(script);
        }
      };
      var hasMore = function() {
        return !!cursor;
      };
      var getMeta = function(key, comment) {
        if (‘iswriter’ == key) {
          var matches = !!comment.author
              && comment.author.name == config.authorName
              && comment.author.profileUrl == config.authorUrl;
          return matches ? ‘true’ : ”;
        } else if (‘deletelink’ == key) {
          return config.baseUri + ‘/delete-comment.g?blogID=’
               + config.blogId + ‘&postID=’ + comment.id;
        } else if (‘deleteclass’ == key) {
          return comment.deleteclass;
        }
        return ”;
      };

      var replybox = null;
      var replyUrlParts = null;
      var replyParent = undefined;

      var onReply = function(commentId, domId) {
        if (replybox == null) {
          // lazily cache replybox, and adjust to suit this style:
          replybox = document.getElementById(‘comment-editor’);
          if (replybox != null) {
            replybox.height = ‘250px’;
            replybox.style.display = ‘block’;
            replyUrlParts = replybox.src.split(‘#’);
          }
        }
        if (replybox && (commentId !== replyParent)) {
          document.getElementById(domId).insertBefore(replybox, null);
          replybox.src = replyUrlParts[0]
              + (commentId ? ‘&parentID=’ + commentId : ”)
              + ‘#’ + replyUrlParts[1];
          replyParent = commentId;
        }
      };

      var hash = (window.location.hash || ‘#’).substring(1);
      var startThread, targetComment;
      if (/^comment-form_/.test(hash)) {
        startThread = hash.substring(‘comment-form_’.length);
      } else if (/^c[0-9]+$/.test(hash)) {
        targetComment = hash.substring(1);
      }

      // Configure commenting API:
      var configJso = {
        ‘maxDepth’: config.maxThreadDepth
      };
      var provider = {
        ‘id’: config.postId,
        ‘data’: items,
        ‘loadNext’: paginator,
        ‘hasMore’: hasMore,
        ‘getMeta’: getMeta,
        ‘onReply’: onReply,
        ‘rendered’: true,
        ‘initComment’: targetComment,
        ‘initReplyThread’: startThread,
        ‘config’: configJso,
        ‘messages’: msgs
      };

      var render = function() {
        if (window.goog && window.goog.comments) {
          var holder = document.getElementById(‘comment-holder’);
          window.goog.comments.render(holder, provider);
        }
      };

      // render now, or queue to render when library loads:
      if (window.goog && window.goog.comments) {
        render();
      } else {
        window.goog = window.goog || {};
        window.goog.comments = window.goog.comments || {};
        window.goog.comments.loadQueue = window.goog.comments.loadQueue || [];
        window.goog.comments.loadQueue.push(render);
      }
    })();
// ]]>
  </script>
</b:includable>

Jika cara yang dilakukan sudah benar, seharusnya tombol reply komentar di blog sobat sudah bisa berfungsi kembali dengan baik. Saya sendiri melakukan cara ini ketika beberapa waktu lalu baru diketahui saat akan membalas komentar, ternyata tombol reply comment di blog ini tidak berfungsi, dan sekarang sudah bisa digunakan kembali. Semoga membantu.

Leave a Reply

Your email address will not be published. Required fields are marked *