How to fix threaded comments and the reply button on Blogger comments

fix-reply-button-on-blogger

A few people have emailed me about having issues with replying to comments on their blog, after resolving their issues with the reply button I realised that maybe a lot more people are having this problem too so thought I’d write up a tutorial on how to fix it. This can be complicated if you aren’t used to editing HTML so please take your time and read the instructions very carefully! If you are still having problems with this I am available to hire here.

[postwarning]

1. Enable Threaded Comments

We need to make sure that your blog is set up for threaded comments first and make sure the settings are correct. Go to Settings > Other > Site Feed. For Allow Blog Feed, choose Custom and set Pre-Post Comment Feed to Full. Now go to Settings > Posts and Comments and set Comment Location to Embedded.

threaded-comments

2. Adding or Fixing Reply Option

Go to Template > Edit HTML. Select Jump to Widget > Blog1 and find the following line

<b:widget id='Blog1' locked='true' title='Blog Posts' type='Blog'/>

Change Blog1 to Blog2. This will remove the corrupted gadget and revert it so it is functioning properly again. If you are using an older version of Blogger, it may ask if you wish to delete this gadget, say yes. Save Template.

3. Replace threaded script

If that doesn’t fix the reply button, then try this method. Go to Template > Edit HTML. Select Jump to Widget > Blog1 or Blog2. Under <b:widget id='Blog1' locked='true' title='Blog Posts' type='Blog'/> or <b:widget id='Blog2' locked='true' title='Blog Posts' type='Blog'/> you will see the following code

<b:includable id='threaded_comment_js' var='post'>

Click the black arrow beside the numbering on the left for the line <b:includable id='threaded_comment_js' var='post'>...</b:includable> and the full nested code will appear.

Delete this entire code, from <b:includable id='threaded_comment_js' var='post'> to </b:includable>. In it’s place, paste the following

<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>

Save the template and refresh your browsers cache.

4. Replace all threaded code

If the above fixes aren’t working the best thing to do is replace the scripts altogether. This will work 99.9% of the time but it needs to be done correctly. Setup a test blog with the simple template (or the same default Blogger template your blog uses). Go into Template > Edit HTML. Select Jump to Widget > Blog1. Further down under this you’ll see the following

<b:includable id='threaded-comment-form' var='post'> ... </b:includable>
<b:includable id='threaded_comment_js' var='post'> ... </b:includable>
<b:includable id='threaded_comments' var='post'> ... </b:includable>

They are nested, meaning that if you click the arrow on the left that the ... part will expand to show the rest of the code. You’ll need to copy the entire thing for all three parts and add/replace it to your real blog in the same area which is usually under <b:includable id='status-message'> ... </b:includable>. This can be difficult if you aren’t used to HTML or Bloggers HTML editor, so take your time and be careful.

5. Have a third party template? Contact original designer / developer

As I mentioned step 4 will work 99.9% of the time, but it may not work if you have a custom built template which does not use Bloggers default code (note that this is different to a customised Blogger template). If you have tried the above steps correctly without any luck and do have a custom built template then my advice is to contact the designer/developer. The information will usually be in the footer of your template.

6. Still having issues?

Get in touch here to hire me to fix it for you.

Related Posts

New Blogger comment system & other changes.
Backup your entire blog on blogger or wordpress – template, images and posts.
Restore your blog backup.
How to find code in HTML Editor.
Understand CSS and Bloggers Template.

Leave a Reply

Thank you so much for taking the time to comment! Your email will not be published or shared but you will recieve an email if your comment has a reply. Need help with a tutorial? Check out our Coding + Consultation service for one-on-one assistance.

86 comments

  1. Shaz De Vos on

    I am so glad you have done this post because the minute I started blogging my reply button never worked and when I switched it to another layout it did so I realised it was todo with my HTML. All I could find on Google was the first opinion which obviously didn’t help. im rubbish with HTML but I will try this… Suppose what happens when you download a free blog design online aha x

    apinchofshaz.blogspot.co.uk
    xo

    Reply
    • Ellie M on

      Hello. I notice your template is a custom built one, because of this the code for threaded comments is probably missing altogether. My advice is to set up a test blog, go into template > edit html > format template > jump to widget > blog1 > click the black arrow on the left to open it and copy the last three lines of it. It will look something like

      <b:includable id='threaded-comment-form' var='post'> ... </b:includable>
      <b:includable id='threaded_comment_js' var='post'> ... </b:includable>
      <b:includable id='threaded_comments' var='post'> ... </b:includable>

      There will be extra code in between the pink dots () so make sure to copy the entire thing. Then go back to your blog and paste it in the same location. This will add the functionality for threaded comments to your blog. You may have to then follow this tutorial to fix it.

      Reply
  2. Maria @ Little Miss Cornucopia on

    People were telling me that they were having some difficulties commenting on my blog. I thought I solved this issue last night..but then this morning, I wasn’t able to reply to their comments.

    I followed the steps you laid out here and I’m so glad to have it working again. Thanks so much for doing this!

    Reply
  3. Jamie K on

    It seems like this problem has cropped up for me overnight on two of my blogs. I tried both of your suggested fixes on one but still can’t seem to get it working 🙁 I’m pretty sure I followed the instructions properly, so not sure why it’s not working.

    Reply
  4. Laura on

    Hi Ellie, I too am having the problem whereby the ‘reply’ button is missing in my comments. My blog layout is from another website which I copied and pasted, but don’t have a clue when it comes to HTML web design etc. Is there anyway you can help?

    I tried to search for within my HTML, but couldn’t find it?

    Thank you for any help you can offer.

    Laura xx

    Reply
    • Ellie M on

      Hello, your template is an original Blogger template with some customisations from another site, this shouldn’t affect the template code although the reply to comments code may not be there. HTML is not allowed in the comments so I can’t see what part you are having trouble finding. Please paste it into the box on this site, press encode and paste the result in a reply to this comment. Selecting Jump to Widget should bring you to the place you need, but if you are still having trouble check out this post which explains how to find code in the HTML editor.

      Reply
      • Laura on

        Thank you for the advice. I have finally managed to get the reply button back on my site by clicking on the ‘revert widget templates to default’ and selecting ‘Blog 1’, phew!!

        Laura x

        Reply
  5. Kristan on

    I have been messing around with this over and over and cannot get it to work. I assume it has something to do with the coding, I bought the template as a premade design. I would really appreciate a little insight on to why my blog is so screwy 🙁

    Reply
  6. Alyx on

    Hey Ellie! i tried everything you instructed and it’s still not working. I even reset the cache. Is there any way you could help me out? Thanks!! 🙂

    Reply
    • Ellie M on

      Hello, if the above fixes aren’t working the best thing to do is replace the scripts altogether. Setup a test blog with the simple template. Go into Template > Edit HTML. Select Jump to Widget > Blog1. Further down under this you’ll see <b:includable id='threaded-comment-form' var='post'> ... </b:includable>
      <b:includable id='threaded_comment_js' var='post'> ... </b:includable>
      <b:includable id='threaded_comments' var='post'> ... </b:includable>
      . They are nested, meaning that if you click the arrow on the left that the ... part will expand to show code. You’ll need to copy the entire thing and add/replace it to your real blog in the same area.

      Reply
  7. Adrienne on

    Hello! I am so frustrated with my reply button, there is no reply at all for my comments. I scoured google for days and was able to actually find HTML that added a reply link but the link was broken and didn’t work! HELP! Are you possibly able to take a look at my blog template? Thank you for any help you can offer.

    Reply
  8. Colette on

    It seems like everytime I come accross a problem, you have a solution! I tried all the above scenarios but unfortunately none worked. At least the way they were laid out. In the 4th option, what I ended up doing was copy completely the “Blog1” line in the Edit section from my other blog, and replace it in my current blog. It solved the problem 😀 Thank you again for your suggestions and all the good tips and tricks you share with us!

    Reply
  9. Alex Carpio on

    Hi Ellie,

    I’ve been trying to fix mine for 2 days now. I did everything you shared on this blog and I still can’t reply to my blog comments 🙁

    Hoping you can help me out. Thank you!

    Reply
  10. Seth Pollins on

    Hello! Thank you so much for this article. Unfortunately, I, too, tried all the fixes and nothing worked. Any suggestions?

    I recently tried to instal Disqus comments. I couldn’t figure it out. Worse, my comments have been dysfunctional since then.

    I’ll check out your support page now.

    Reply
  11. Martina on

    Hello, I tried this tutorial but I still have the problem, I can’t reply to any of the comments, do you know what else I should try to fix it? Thanks!

    Reply
    • Ellie M on

      Method 4 should work as you are replacing or re-aading the code for threaded comments. It can be very difficult but make sure you are copying all three scripts and everything that is included in them and then placing them in the correct place in your blog. You can contact me via the support page if you’re still having problems.

      Reply
    • Ellie M on

      Hello, it’s a little different and slightly confusing unless you know what you’re looking for because there is code for share buttons there shown as <b:includable id='shareButtons' var='post'>...</b:includable> which is what I presume you tried editing? This is actually just the function code, the actual code for the placement of share buttons are in the post footer and this is the code you need to add/replace. First go to Layout > Blog Post > Edit and turn on the share buttons. Then follow this tutorial to move/add them to your post footer. In that tutorial I use the post labels as an example, instead you’ll be using the following –

      <div class='post-share-buttons goog-inline-block'>
      <b:if cond='data:post.sharePostUrl'>
      <b:include data='post' name='shareButtons'/>
      </b:if>
      </div>

      Reply
  12. Enohar on

    In method 4 I have to replace all the threaded code, right? But I replace them for what? For the big code you gave to use with ” ” ?
    That big code made a certain difference, because it placed the “rules for commenting” above the comment box (it was under before I tried the code).

    Reply
  13. Wendy O. on

    I followed your instructions all the way through #4. However after I saved the template and went back in, those 3 lines of code had just re-nested. I didn’t know what else to do. Any other suggestions?

    Reply
    • Ellie M on

      Hello. They typically will re-nest, but the full code will still be there. That’s just Blogger’s way of organising/cleaning up the code. You don’t have a reply link at all in your comments, can you re-check step 1?

      Reply
  14. Renzi on

    Hi. I did number 4. I replaced all 3 with the code you gave but it still won’t work. I am kinda new to all these html stuff and I don’t know what else to do.
    I changed my codes back since I can’t seem to make anything work. Help me please. Thank you.

    Reply
    • Ellie M on

      Hello! Firstly what a lovely blog, your outfits are gorgeous. I had a look at your template and it’s one that I was referring to in step 5. It’s been custom built so it’s likely that the reply button has been coded out completely which means the above fixes won’t work. If you want to read over the advice in step 5 and then contact me here I can fix it for you.

      Reply
        • Ellie M on

          As mentioned in step 5, my advice is to contact the designer/developer of the template. Or if you would rather not do that, you can contact me here to look at re-coding your existing template to include the reply button.

          Reply
          • Renzi on

            I guess I’ll just have to contact her. I was hoping I could solve this problem on my own but obviously I can’t. Thank you for your help though.

  15. Lindsay on

    Thank you so much for this guide. I had to replace all threaded code to get my replies to work, but it was worth it. Wouldn’t have known what to do without this post. 🙂

    Reply
  16. Lauren Thayer on

    Hi Ellie,

    I am having trouble with the codes and replacing them and don’t want to screw it up even more. Anyway you can take a look at it? I am unable to reply to anyone. I included you into the reader list.

    Thanks,

    Lauren

    Reply
  17. Olivia on

    I CAN REPLY TO COMMENTS ON MY BLOG.

    This was something that was bothering me for ages. Kind of like when you know you need to sew a button on a shirt but, chose to wear a different shirt for about 6 months before just sitting down and doing it!
    I feel so relieved that I can now reply to my readers, now they won’t think I’m ignoring them!

    I did every step that you mentioned, but I ended up having to create a new test blog to get the fresh code. I think I was stuffing around with it so much that I’d forgotten what I’d changed/deleted and modified!

    THANK YOU SO SO SO MUCH!

    -Olivia Gumienny.

    Reply
    • Ellie M on

      Hello Olivia, glad you got it sorted. Sometimes replacing the code is the best step, sets it back to default and then you know the code is clean from errors. You are very welcome, happy to help 🙂

      Reply
  18. Charlotte B. on

    Oh, I am SO excited!! This tutorial worked 😀 Thank you SO SO SO much! That little reply link has been bugging my sisters and I on our blog, and now it’s fixed! What an obvious thing to just copy the code from an un-edited template and paste it in… duh ;P You are absolutely awesome!

    -Charlotte
    boyerfamilysingers.blogspot.com

    Reply
  19. CW on

    Is there any way you would be able to take a look at my code and see what is missing, in order to be able to reply? I hit the reply button, but nothing happens. I have messed with this code way too much and am worried to start replacing things lol.

    Reply
  20. Astrid on

    You’re brilliant! Thank you so much! You’ve helped me a lot. I’ve just started my blog and I’m looking for things to make it better. Your blog is the most helpful one I found.

    Reply
  21. samantha on

    I’m ready to rip my hair out literally lol

    I tried following the instructions and it just wont work, i don’t know what i am doing wrong, i am horribly challenged when it comes to this html stuff…

    There is no option to reply to people who comment on my blog. i have no options whatsoever..

    Reply
    • Elaine M on

      Hello Samantha, are you using a custom template – one that isn’t from Bloggers selection or a Blogger template that has been customised? A lot of third party templates remove this option for some reason, it will have to be recoded into your template.

      Reply
  22. Fatima Janan on

    Hey Elaine,hope you are good. I need your help in fixing reply button to my blogger comments.When i followed the Step 3, the reply button appears on my blog but it’s not functioning.Then i moved to Step 4 but this time my blog is not saving the changes in my template,even it is not showing any HTML code error.

    Reply
  23. Syazatty on

    hi. I hope you can help me. i’ll try to find at step 3 but what it appeared was so, how i can change this? and i found that i couldn’t make my blog’s comment into threaded comment 🙁 i hope you can solve my problem. Thank you 🙂

    Reply
  24. Josiah on

    This post is a life savor for me. You have no idea how much you helped me. I always had an issue of how to fix threaded comments but no problems from now on.

    Reply