Kali ini CMX akan share sebuah pengalaman pribadi tentang cara Mengatasi Tombol Balas/Reply Yang Tidak Berfungsi Pada Blog, artikel ini saya ambil dari salah satu website favorit ane yaitu blog.kangismet.net. Langsung saja kawan saya sudah membuatkan tutorialnya , disimak ya :D
Kemarin" saya dibuat galau oleh blog saya ,kenapa ??karena tombol balas komentar diblog saya tidak berfungsi ! karena banyaknya sobat blogger yg berkomentar diblog saya maka sayapun mengambil keputusan cepat untuk mencari solusi dari masalah saya ini.Setelah ngubek" mbah google akhirnya saya menemukan artikel yg 100% berhasil saya terapkan diblog saya. Usut punya usut hal tersebur disebabkan ada perubahan pada JavaScript threaded comment.
Untuk mengatasi hal tersebut, ikuti langkah-langkah di bawah ini :
1. Masuk ke Dasbor > Rancangan > Edit HTML
2. Menjaga kegagalan, backup dulu template anda > Download Template Lengkap
3. Centang Expand Template Widget
4. Cari kode dibawah ini :
<b:includable id='threaded_comment_js' var='post'>
<script defer='defer' expr:src='data:post.commentSrc' type='text/javascript'/>
sampai dengan
<script defer='defer' expr:src='data:post.commentSrc' type='text/javascript'/>
sampai dengan
</script>
</b:includable>
5. Ganti semuanya dengan kode dibawah ini :
<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>
6. Save Template dan silakan lihat hasilnya.
Before
After
Semoga bermanfaat :)
Bagikan Artikel
Mengatasi Tombol Balas/Reply Yang Tidak Berfungsi
4/
5
Oleh
alfian
11 komentar
Tulis komentarwah, untung punyaku masih work dengan baik
Replykeren nih..
Replyiya gan syukur deh hehehe :D
Replyhehhe iya sob makasih :)
ReplyWah kodenya lumayan panjang juga yah,, :) :) oya link blog sobat sudah aku pasang balik,, silahan di cek,,,
Replyhem.. yayaya makasih gan atas tutorialnya
Replyane sering mampir nih kesini :)
iya gan sama" :)
Replymakasih bgt gan , ane juga sering mampir keblog agan :D
oke gan siappp :)
Replyiya gan kmrin udah saya cek , trimakasih atas kerjasamanya :)
Replygan cara bikin tombol next ama previous kyk agan gmana sih
Replymaaf gan ane belum bisa kasih solusi , soalnya scrpit blog ane lgi ada masalah :'(
Replyntar kalo udah beres ane bantuin gan
Peraturan Berkomentar di situs alfiancmx.blogspot.co.id
1. Berkomentarlah Sesuai Topik Artikel
2. Berkomentarlah Menggunakan Bahasa Yang Jelas
3. Berkomentarlah Dengan Sopan
4. Tidak Menyisipkan Link Aktif (Live Link)
5. Tidak Berkomentar Promosi
6. Tidak Berkomentar Spam
Apabila melanggar mohon maaf komentar pasti saya hapus :)