Breaking News

Definition List

Flickr Images

Friday, June 6, 2014

Cara Mengatasi Tombol Reply Komentar Blog yang Tidak Berfungsi

 Tombol Reply Komentar Blog
Tombol reply comment (balas/jawab komentar) di blog Anda tidak berfungsi? Bagaimana cara mengatasinya? Ini dia tips lengkapnya!

BIASANYA masalah tombol reply comment (balas komentar) yang error ini terjadi di template blog "jadul" alias lama.

CB sering mengalaminya juga karena hobi CB 'kan modifikasi template :)

Ini dia beberapa cara yang CB lakukan untuk mengatasi tombol reply komentar blog yang tidak berfungsi itu.

Ada Dua Cara:

1. Setting di Dashboard Blog
2. Ganti kode Javascrip/HTML

Cara#1 Setting Kotak Komentar

Pastikan settingan komentar blog Anda seperti tampak dalam gambar. Caranya:
  1. Klik "Settings" > "Posts and Comments" > "Comment Location" > pilih "Embedded"
  2. Klik "Other" > "Allow Blog Feed" > pilih "Full".
  3. Save!

setting reply komentar

setting reply komentar

Lihat hasilnya. Kalau sudah bisa, ya sudah... ucapkan alhamdulillah.  Tapi biasanya sih masih belum jalan. Maka, lakukan langkah kedua berikut ini.

Cara #2 Ganti Javascript

  1. Klik "Template" > "Edit HTML"
  2. Cari (Ctrl+F) kode yang diawali dengan <b:includable id=’threaded_comment_js’ var=’post’> ... dan diakhiri dengan kode penutup </b:includable>
  3. Hapus dan ganti (replace) kode yang panjang tersebut dengan kode berikut ini yang juga sama panjangnya:
<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>

4. Save Template! Lihat hasilnya, testing!

Jika MASIH BELUM BERHASIL JUGA, maka lakukan lagi cara ketiga, berupa pergatian kode lagi, sebagai berikut:

Cara #3 Ganti kode lain

1. Template > Edit HTML
2. Temukan kode berikut ini:

         <b:if cond='data:blog.pageType == &quot;static_page&quot;'>
         <b:include data='post' name='comments'/>
        </b:if>
        <b:if cond='data:blog.pageType == &quot;item&quot;'>
          <b:include data='post' name='comments'/>
        </b:if>

3. Ganti dengan kode ini:

        <b:if cond='data:blog.pageType == &quot;static_page&quot;'>
          <b:if cond='data:post.showThreadedComments'>
            <b:include data='post' name='threaded_comments'/>
          <b:else/>
            <b:include data='post' name='comments'/>
          </b:if>
        </b:if>
        <b:if cond='data:blog.pageType == &quot;item&quot;'>
          <b:if cond='data:post.showThreadedComments'>
            <b:include data='post' name='threaded_comments'/>
          <b:else/>
            <b:include data='post' name='comments'/>
          </b:if>
        </b:if>

4. Save Template!

Berhasilkah? Alhamdulillah kalo berhasil.

Masih belum jalan juga itu Tombol Reply Komentar? Hmm... ini langkah paling jitu: GANTI TEMPLATE!!! Soalnya  Tombol Reply Komentar Blog yang Tidak Berfungsi itu hanya akan menghambat interaksi kita dengan pengunjung yang komentar di blog kita.

Good luck and happy blogging!

Referensi:
  • http://xomisse.com/blog/fix-reply-button-blogger-comments/
  • http://www.betatemplates.com/2012/01/how-enable-threaded-comments-blogger.html

No comments:

Post a Comment

Designed By