Pages

Wednesday, January 18, 2012

46

Blogger threaded commenting hack v2

Blogger announced its own threaded commenting on January 12th. I thought that soon my good old threaded comments hack would not be needed anymore.

But Blogger's implementation of threaded comments has its limitations, and bugs, too. So I decided to give my threaded commenting hack a new round, and made version 2. It is now installed on this blog, you can see it and test it for example in the threaded commenting playground.

Features include:
  • (relatively) easy install, just one piece of code copied to template
  • contains Reply links to comments hack
  • contains highlight author comments hack
  • expand/collapse individual comments
  • style is similar to Blogger threaded comments
  • max threading levels can be specified
  • if you have used Blogger's threading, can read that threading information
  • works with major browsers, tested on Internet Explorer, Firefox, Opera, Chrome
  • I must have forgotten something. Did I mention that it is great? :)

To install this, just edit your blog's template, copy the following code (use the "Download Raw" link) and paste it just before </body> in the template. If you have jQuery loaded previously in the template, you can delete the first line that loads jQuery. If you had my previous threaded commenting hack installed, remove that code (the javascript part). You don't need to install any hacks beforehand, like in the previous version: this hack includes them, if they are not installed.

Data hosted with ♥ by Pastebin.com - Download Raw - See Original
  1. <script src='http://code.jquery.com/jquery-latest.js' type='text/javascript'></script>
  2. <b:if cond='data:blog.pageType == &quot;item&quot;'>
  3. <style type='text/css'>
  4. .admin-comment {
  5. background: #F4F4F4;
  6. margin: 4px 4px 4px 0;
  7. padding: 3px 3px 0 3px;
  8. border: 1px solid #EDEDED;
  9. }
  10. .admin-comment:hover {
  11. background: #EDEDFF;
  12. border: 1px solid #D0D0FF;
  13. }
  14. .normal-comment {
  15. padding: 3px 3px 0 3px;
  16. margin-right: 4px;
  17. border: 1px solid white;
  18. }
  19. .normal-comment:hover {
  20. background: #F8F8FF;
  21. border: 1px solid #EDEDFF;
  22. padding: 3px 3px 0 3px;
  23. }
  24. .comment-reply-link { font-weight:bold !important; margin-right:1em; }
  25. #comments-block .comment-footer { margin-bottom: 2px; margin-top:0px;}
  26. </style>
  27. <script type='text/javascript'>
  28. //<![CDATA[
  29. // Threaded comments for Blogger v2
  30. // by MS-potilas 2012
  31. // Supports "Blogger threading" (feed) and has easy install.
  32. // See http://yabtb.blogspot.com/2012/01/blogger-threaded-commenting-hack-v2.html
  33. //
  34. // config:
  35. var maxThreadingLevels = 999;      // limit to 2 to get Blogger-like threading; 3-4 is good, too
  36. var useBloggerThreading = true;    // read Blogger threading information from feed
  37. var preferBloggerThreading = true; // prefer Blogger threading over @nick threading
  38. var threadIndent = 43;             // pixels/level
  39. var replyCommentText = "Reply";
  40. var replyToUser = "Reply to ";
  41. var deleteCommentText = "";        // leave empty to use default (img)
  42. var useAdminPic = true;            // use same img as Blogger threaded comments
  43. // config end
  44. // two xpand/collapse hack functions
  45. function getCmtBodyElm(elm) {
  46.   if(elm.className=="admin-comment" || elm.className=="normal-comment") elm=elm.firstChild;
  47.   while(elm && (elm.nodeType != 1 || (elm.className != "comment-body" && elm.className != "comment-body-author"))) elm = elm.nextSibling;
  48.   return elm;
  49. }
  50. function tglCmt(event, elm) {
  51.   var txt='';
  52.   if(window.getSelection) txt = window.getSelection();
  53.   else if (document.getSelection) txt = document.getSelection();
  54.   else if (document.selection) txt = document.selection.createRange().text;
  55.   var target = event.target ? event.target : event.srcElement;
  56.   if(target.nodeType != 1) target=target.parentNode;
  57.   if(txt != '' || target.nodeName.toLowerCase() == 'a' || target.nodeName.toLowerCase() == 'img') return;
  58.   $(getCmtBodyElm(elm)).slideToggle();
  59. }
  60. var hlInstalled;
  61. if(!($(".normal-comment").length+$(".admin-comment").length)) hlInstalled=false;
  62. else hlInstalled=true;
  63. var cmtblock = $("#comments-block");
  64. var cmts = $("dt", cmtblock);
  65. var hrefr = $('.comment-footer a[href*="/comment.g"]:last').attr("href");
  66. if(!hrefr || hrefr=="") {
  67.   hrefr = "";
  68.   if($('.blogger-comment-from-post').length)
  69.     hrefr=$('#comment-editor').attr("src").match("^.*postID=[^&]+")[0].replace("comment-iframe.g", "comment.g");
  70. }
  71. var onclk = $('.comment-footer a[href*="/comment.g"]:last').attr("onclick");
  72. if(!onclk) onclk = "";
  73. cmts.each(function() {
  74.   var c0=$(this);
  75.   var c1=c0.next();
  76.   var c2=c1.next();
  77.   var cid=c0.attr("id");
  78.   var author = $(".avatar-image-container img",c0).attr("title");
  79.   var cdelete = $(".comment-delete", c2);
  80.   if(deleteCommentText != "") cdelete.html(deleteCommentText);
  81.   var cdeletep = cdelete.parent();
  82.   cdeletep.detach();
  83.   var ctime = c2.children(":first");
  84.   ctime.detach();
  85.   c0.append(ctime);
  86.   var creply = $(".comment-reply-link", c0);
  87.   // add reply to comment hack if needed
  88.   if(!creply.length) {
  89.     if(hrefr != "" && author != "") {
  90.       var onc='"'+onclk+'"';
  91.       if(onclk.search('"') > -1) onc="'"+onclk+"'";
  92.       var href = hrefr+"&postBody=%40%3Ca%20href%3D%22%23" + cid + "%22%3E" + author + "%3C%2Fa%3E%26%2332%3B#form";
  93.       creply = $('<a href="'+href+'" onclick='+onc+' class="comment-reply-link" title="'+replyToUser+author+'">'+replyCommentText+'</a>');
  94.     }
  95.   }
  96.   else {
  97.     creply.detach();
  98.     creply.css("float", "");
  99.     creply.html(replyCommentText);
  100.   }
  101.   c2.append(creply);
  102.   c2.append(cdeletep);
  103.   var txtNode = c0.children()[0];
  104.   while(txtNode && (txtNode.nodeType != 3 || (txtNode.nodeType == 3 &&  txtNode.nodeValue.search("...")==-1))) txtNode=txtNode.nextSibling;
  105.   if(txtNode) {
  106.     var txtWrote = " " + txtNode.nodeValue.replace(/\s*\.\.\.\s*$/, "") + " ";
  107.     txtNode.nodeValue = txtWrote;
  108.   }
  109.   if(c0.hasClass("blog-author") && useAdminPic) {
  110.     var txtAuthor = c0.children('a[href*="profile"]:first').html();
  111.     c0.children('.avatar-image-container + a').after(' <img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAYAAABWzo5XAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAALEgAACxIB0t1+/AAAAAd0SU1FB9sLFwMeCjjhcOMAAAD+SURBVDjLtZSvTgNBEIe/WRRnm3U8RC1neQdsm1zSBIU9VVF1FkUguQQsD9ITmD7ECZIJSE4OZo9stoVjC/zc7ky+zH9hXwVwDpTAWWLrgS3QAe8AZgaAJI5zYAmc8r0G4AHYHQKVwII8PZrZFsBFkeRCABYiMh9B' + 'RUhnSkPTNCtVXYXURi1FpBDgArj8QU1eVXUzfnjv7yP7kwu1mYrkWlU33vs1QNu2qU8pwN0U' + 'pKoqokjWwCztrMuBhEhmh8bD5UDqur75asbcX0BGUB9/HAMB+r32hznJgXy2v0sGLBcyAJ1EK3LFcbo1s91JeLwAbwGYu7TP/3ZGfnXYPgAVNngtqatUNgAAAABJRU5ErkJggg==" title="' + txtAuthor + '" style="margin:-3px 2px -5px" /> ');
  112.   }
  113.   // Add "highlight comments hack" if needed:
  114.   if(!hlInstalled) {
  115.     cmtblock.append('<div id="x'+cid+'" />');
  116.     c0.detach();
  117.     c1.detach();
  118.     c2.detach();
  119.     var newdiv = $("#comments-block div:last");
  120.     newdiv.append(c0);
  121.     newdiv.append(c1);
  122.     newdiv.append(c2);
  123.     if(c0.hasClass("blog-author")) newdiv.addClass("admin-comment");
  124.       else newdiv.addClass("normal-comment");
  125.     newdiv.click(function(event) { tglCmt(event, this); } ); // xpand/collapse hack
  126.   }
  127. });
  128. // and finally the function to thread comments, pretty much the same as 2011 version:
  129. function threadComments(json) {
  130.   var replyToCommentID = [];
  131.   if(useBloggerThreading && json)
  132.     for(var i=0 ; i < json.feed.entry.length ; i++) {
  133.       var entry = json.feed.entry[i];
  134.       var rela = "";
  135.       var self = "";
  136.       for (var k=0; k<entry.link.length; k++) {
  137.         if (entry.link[k].rel == 'related') rela = entry.link[k].href.split("/comments/default/")[1];
  138.         if (entry.link[k].rel == 'self') self = entry.link[k].href.split("/comments/default/")[1];
  139.       }
  140.       if(rela!="" && self!="") replyToCommentID[self] = rela;
  141.     }
  142.   else
  143.     preferBloggerThreading = false;
  144.   var clss = [];
  145.   var elements = document.getElementsByTagName("*");
  146.   for(var i=0 ; i<elements.length ; i++)
  147.     if(elements[i].className=="normal-comment" || elements[i].className=="admin-comment")
  148.       clss.push(elements[i]);
  149.   var prevAuthor = "";
  150.   var prevNode = null;
  151.   var authornodes = {};
  152.   for(var x=0 ; x < clss.length; x++ ) {
  153.     var moved = false;
  154.     var width = clss[x].scrollWidth;
  155.     clss[x].style.position = "relative";
  156.     clss[x].style.left = "0px";
  157.     var thisID = clss[x].id.split("c")[1];
  158.     var author = clss[x].innerHTML.toLowerCase().indexOf("%22%3e");
  159.     author = clss[x].innerHTML.substr(author+6);
  160.     if(author.toLowerCase().indexOf("%3c%2fa%3e") > -1)
  161.       author = author.substr(0, author.toLowerCase().indexOf("%3c%2fa%3e"));
  162.     else
  163.       author = "";
  164.     if(author == "")
  165.       author=$("#xc"+thisID+" .avatar-image-container img").attr("title");
  166.     var cmtChild = clss[x].firstChild;
  167.     while(cmtChild && !/(^| )comment-body( |$)/.test(cmtChild.className) && !/(^| )comment-body-author( |$)/.test(cmtChild.className))
  168.       cmtChild = cmtChild.nextSibling;
  169.     var txt = cmtChild.innerHTML;
  170.     var elm = null;
  171.     // from feed:
  172.     if(preferBloggerThreading && replyToCommentID[thisID] && replyToCommentID[thisID] != "")
  173.       elm = document.getElementById("xc"+replyToCommentID[thisID]);
  174.     if(!elm) {
  175.       var cmtID = txt.toLowerCase().indexOf("href=\"#");
  176.       if(cmtID == -1) cmtID = txt.toLowerCase().indexOf("href=\"" + (window.location.href.toLowerCase()).split("#",1)[0] + "#");
  177.       if(cmtID > -1) {
  178.         var commentid = "x" + txt.substr(cmtID).split("#")[1].split("\"")[0];
  179.         elm = document.getElementById(commentid);
  180.       }
  181.     }  
  182.     if(!elm && prevAuthor != "" && x && prevNode)
  183.     {
  184.       if(txt.indexOf("@" + prevAuthor) > -1)
  185.         elm = prevNode;
  186.       else if(prevAuthor.length > 3 && txt.toLowerCase().indexOf("@" + prevAuthor.toLowerCase()) > -1)
  187.         elm = prevNode;
  188.       else if(prevAuthor.split(/[\s,-.]+/)[0].length > 3 && txt.toLowerCase().indexOf("@" + prevAuthor.split(/[\s,-.]+/)[0].toLowerCase()) > -1)
  189.         elm = prevNode;
  190.     }
  191.     if(!elm)
  192.       for(var tmp in authornodes)
  193.         if(txt.indexOf("@" + tmp) > -1)
  194.           elm = authornodes[tmp];
  195.     if(!elm && replyToCommentID[thisID] && replyToCommentID[thisID] != "")
  196.       elm = document.getElementById("xc"+replyToCommentID[thisID]);
  197.     if(elm) {
  198.       var ind = 0;
  199.       if(elm.style.left != "")
  200.         ind = parseInt(elm.style.left);
  201.       if(ind < 300 && parseInt(ind / threadIndent)+1 < maxThreadingLevels) {
  202.         if(ind < 140)
  203.           ind = ind + threadIndent;
  204.         else
  205.           ind = ind + parseInt(threadIndent / 3);
  206.       }
  207.       var parNode = elm.parentNode;
  208.       var place = elm;
  209.       var xpos;
  210.       do {
  211.         do place = place.nextSibling;
  212.         while(place && place.nodeType != 1);
  213.         if(place && place.style && place.style.left != "")
  214.           xpos = parseInt(place.style.left);
  215.         else
  216.           xpos = 0;
  217.       } while(place && xpos >= ind);
  218.       if(place != clss[x]) {
  219.         parNode.insertBefore(clss[x], place);
  220.         moved = true;
  221.       }
  222.       clss[x].style.position = "relative";
  223.       clss[x].style.left = ind + "px";
  224.       width = width - ind;
  225.     }
  226.     clss[x].style.width = width + "px";
  227.     if(!moved) {
  228.       prevAuthor = author;
  229.       prevNode = clss[x];
  230.     }
  231.     if(author != "")
  232.       authornodes[author] = clss[x];
  233.   }
  234. }
  235. var cfeedbase = $('link[href$="comments/default"]').attr("href").split("/default")[0];
  236. if(useBloggerThreading && $('a[href*="'+cfeedbase+'"]').length)
  237.   document.write('<script type="text/javascript" src="'+cfeedbase+'/summary?max-results=500&alt=json-in-script&callback=threadComments"></'+'script>');
  238. else threadComments();
  239. //]]>
  240. </script>
  241. </b:if>

This works at least on Simple template. If your template is heavily modded, then this hack might not work without modifications. And this hack does not work on dynamic views, and does not work if Blogger's threaded commenting is active. If you need to disable Blogger's threaded commenting, see this article.

Update August 31th 2012: If you have this installed, and threading stopped, please install this update.
[Hide comments] - [Show comments]
Click on a single comment to hide/show its text

46 comments:

Marco Giannini said January 19, 2012 at 4:40 PM

Thanks for your hack, the new threaded comments do not work for my custom template, now with your work i can have it :)

Beben Koben said January 20, 2012 at 8:27 AM

Excellent master, this is rock \m/

Beben Koben said January 20, 2012 at 8:29 AM

@Beben Koben Test Reply...
Yeah its one good hack for commnet blogger

Unknown said January 23, 2012 at 10:52 AM

I followed your instructions but am not getting the correct results. I get a little REPLY under the first comment but no where else. See this post as an example: http://www.hybridrastamama.com/2012/01/160-uses-for-coconut-oil.html

Any thoughts??? Thank you!

MS-potilas said January 23, 2012 at 1:14 PM

@Hybrid Rasta Mama
Hi, seems to work now when I looked the post, maybe you got it fixed already. If you still have some trouble, please tell what browser you are using. I tested the page on Chrome and Firefox.

Unknown said January 24, 2012 at 3:29 PM

Internet Explorer seems to be the issue. I do see that it works fine in Firefox. However, most of my readers use IE and apparently comments were getting disappearing yesterday. So I'll see what modifications I can make to fix it. Thanks for a great hack though!!!!

MS-potilas said January 24, 2012 at 5:35 PM

@Hybrid Rasta Mama
Hi, thank you for the info, I got the bug pinned. I was using "textContent" on a fairly unimporant place, and IEs below 9 does not recognize it. It worked on my blog, because I have "EmulateIE9" setting (EmulateIE7 is the default on many templates).

I modified the script: replaced the textContent with nodeValue, which works also on Internet Explorers below version 9. The changes are on lines 104, 106 and 107.

Sorry about the bug, teaches me (once again) that always should test more on Internet Explorer than just a simple "smoke test"... But now it is fine :)

Unknown said January 24, 2012 at 6:28 PM

Oh wow! That is great! I will go in and replace the code and let you know what happens. Seriously - you are genius!

Anonymous said February 10, 2012 at 9:21 AM

شكراااااااا@Hybrid Rasta Mama

Unknown said February 7, 2012 at 10:58 PM

I created a new custom template and this hack no longer works. You mentioned making some modification to custom templates. Any idea what those might be?

MS-potilas said February 8, 2012 at 8:35 AM

@Hybrid Rasta Mama
Hi, that depends on the custom template :) First of all you have to make sure, that Blogger threaded comments don't overrun this, disable Blogger's threaded comments. Then you should check for any javascript errors, etc. The document object model (DOM) of the comment section should be similar to, for example, Simple template (same class names etc), or the script needs modifications.

I once installed this before </head> and wondered for a while why it did not work...

I looked at your site, which looks great. You might want to consider anonymous icons for non-registered commenters to go with the threaded commenting.

Hope you get this working on your new template, too. I can try to help you further if you have some additional info.

Unknown said February 11, 2012 at 8:18 PM

@MS-potilas Got it working! Yay! Looks great! Thanks again.

La Cuisine d'Helene said February 17, 2012 at 7:07 PM

I have a custom made template made by Rainy Day. My comments are set to pop up. body is an the end of the template. I did add version 2 codes before body. Saved template and did not work. I am using Safari and Chrome. I really wish it was working. Any tips? Thanks for everything.

MS-potilas said February 17, 2012 at 10:02 PM

@Helene Hi, try this: put the first line, the one with jquery-latest.js, just before </head>. Then put rest of the script before </body> Hope that helps :)

Sarah said March 9, 2012 at 1:04 AM

I'm in the exact same boat as Helene and for some reason it's being stubborn for me and doesn't want to work. I want my comments to be a pop out, but I don't even have the option to reply to comments, let alone thread them. If you have anymore suggestions I would greatly appreciate them! Thank you for your time and help!

MS-potilas said March 9, 2012 at 7:34 AM

@Sarah Hi, I looked at the source code of your blog page, and there are errors with the threaded comment hack installation. First, all lines are after each other, without line breaks, and it won't work that way. Secondly, there are also the line numbers in the code, and they should not be. Use the "Download Raw" link and copy the code from that window that pops out. Remove the old code from template and replace it with that. Hope you get it working :)

Sarah said March 9, 2012 at 7:52 PM

@MS-potilas Haha gosh, I feel sheepish. I know nothing about HTMLs whatsoever. I did what you told me to and it still didn't work though :( Maybe it's just my template, I don't know. Thanks anyway for your help though! I'll see if I can figure it out somehow.

Sarah said March 9, 2012 at 8:01 PM

@MS-potilas Just kidding, it DID work!! You are a computer genius! Thank you for your help :) Do you know if the reply comment gets sent to their e-mail? Or do they have to check back to my blog to see it?

MS-potilas said March 9, 2012 at 9:20 PM

@Sarah Hi, great that you got it working! There used to be a checkbox when writing a comment for following the comments of a topic, but it has disappeared when the comment page style changed. So users can either check back to your blog, or they can subscribe to the comment feed, for example in Google Reader. I've got one hack to let users subscribe new article's comments to email, see at the bottom of this page. But that of course requires some html editing again :)

Anonymous said March 10, 2012 at 11:05 PM

Thanks a lot for this! This was one thing I really missed on blogger.

Ismail Sosse Alaoui said March 11, 2012 at 11:21 PM

hi admin, thanks for this pro tutorial,
i found problem to install it
i had nested on my template, i want you to visit my blog to show what to do to install it correctly,
http://bestertem.blogspot.com/
thanks to answer

MS-potilas said March 12, 2012 at 7:31 AM

@Mr Admin Hi,

you currently seem to have installed this threaded commenting hack: http://miscah.blogspot.com/2011/12/threaded-comments-untuk-komentar.html That seems pretty good, too. Nice idea to hide the "@someone" links, one could do that with my hack with a little editing, too.

If you want to use this threaded commenting, then you should have no other threaded commenting active. You could make a test blog and try my hack there, and if you like it, then reset the comments widget on your other blog to default (remove the previous hack), and install mine.

Ismail Sosse Alaoui said March 12, 2012 at 10:42 PM

so how to desable other threaded comments system?
you mean just remove after you threaded comment system it will work correctly..
@MS-potilas

MS-potilas said March 13, 2012 at 8:38 AM

@Mr Admin For my threaded comments to work, the comments section must have same/similar DOM (document object model) structure as the basic Blogger templates, like Simple. The hack traverses comment's DOM and makes the threading. So if DOM is different (different class names, etc.) then the hack can not work.

So the other threaded commenting should be removed and replaced with the basic commenting. The template looks pretty much customized, so it might not be easy.

Easier way to test this threaded commenting would be to make a test blog with Simple template, and install it there. I'm not familiar with the threaded commenting your template uses, so I don't know if my hack offers anything more than that. Well, my hack can be easier to customize, because javascript is not obfuscated.

Αέναη Σκέψη said March 20, 2012 at 2:08 AM

amazing hack :)
but i have a problem on comments time :(

MS-potilas said March 20, 2012 at 10:11 AM

@Διελκυστίνδα Hi, I checked your blog. The comment timestamps (date+time) seem to be missing from your comments section. This threaded comments hack rearranges elements already on the screen, including the timestamp, so if timestamps are missing, they still are missing after threaded comments is run.

So there is some customization in the comments section of your blog template that has removed the date. Maybe it is the comment numbering hack. There should be a block of code looking like this in the template (widgets expanded):

            <dd class='comment-footer'>
              <span class='comment-timestamp'>
                <a expr:href='data:comment.url' title='comment permalink'>
                  <data:comment.timestamp/>
                </a>
                <b:include data='comment' name='commentDeleteIcon'/>
              </span>
            </dd>

(it may differ a bit)

Hope you get the timestamps back :)

Αέναη Σκέψη said March 20, 2012 at 1:58 PM

@MS-potilas

thanks a lot :D
i add this code and appears at the top and not on each comment
. I can' find the right location...

MS-potilas said March 20, 2012 at 5:51 PM

@Διελκυστίνδα It may be too hard for me to try to position that code in your template. I suggest you create a new test blog, with the "simple" template. Then examine that new blog's template and that way try to find the right place for the missing timestamp code in the other template. Good luck!

Αέναη Σκέψη said March 20, 2012 at 10:18 PM

@MS-potilas
My friend, I solved the problem.
I removed the code above, and added this code here. http://yabtb.blogspot.com/2011/10/reply-to-blogger-comments-hack.html ;)

Greetings from Greece :)

MS-potilas said March 21, 2012 at 9:00 AM

@Διελκυστίνδα That was a very well invented solution, as that hack is compatible with this. Great you got it working.

Greetings from (still snowy) Finland, and all the best :)

Unknown said March 24, 2012 at 9:10 AM

Wow.
Its so awesome
thanks :)

Unknown said March 28, 2012 at 4:20 PM

Me again! So last week your hack just stopped working for no apparent reason. I have not changed anything on my blog. Thoughts?

MS-potilas said March 28, 2012 at 5:00 PM

@Hybrid Rasta Mama
Hi,
your article pages give a javascript error about "CommentsCounter" variable. The variable is defined in an odd place (in CSS definitions), and the <span class="numberingcomments", where CommentsCounter is displayed, has some html errors, too. I saved one article page from your blog, removed the CommentsCounter-codes from page html, and then the threaded commenting worked again (you probably don't want to remove the numbering of comments, but correct the errors).

Unknown said March 28, 2012 at 6:16 PM

@MS-potilas I am not very literate when it comes to HTML. The CommentsCounter code that I want to edit is from your hack code right? Do I want to remove that code or edit it somehow? Sorry...still learning all this!

MS-potilas said March 28, 2012 at 9:05 PM

@Hybrid Rasta Mama
Hi, the CommentsCounter code is from somewhere else, not from my hack. It might be this: http://www.bloggerplugins.org/2009/08/numbering-your-blogger-comments.html. It might be best to first try to remove the comment numbering hack and then reinstall it.

Unknown said April 14, 2012 at 9:43 AM

It's great... I love this TC style...

Kathie Austin said May 25, 2012 at 5:32 PM

I just created a blog in blogspot and when people are posting comments, it doesn't automatically expand them. It only says "1 comment" below the post. How can I make the comments automatically show in expanded format? Thanks!

http://kathieaustinphotography.blogspot.com/

MS-potilas said May 26, 2012 at 9:50 AM

@Kathie Austin
Hi,

that is the normal way Blogger blogs display comments: on the main page only the articles and comment counts are shown, and when an article is opened, its comments are shown below it. To show comments on the main page would require modifications to the template.

Danial Abdul Rahim said July 6, 2012 at 6:57 PM

Thanks a lot for this GREAT work ^_^

Kang Ismet said July 27, 2012 at 6:10 PM

Hello MS-Potilas..
Verry clever for blogger threaded commenting.
I wanna ask about threaded commenting from blogger, not this hack. How to get Commenter link opened in new tab?
Thanks before.

Post a Comment

Related Posts Plugin for WordPress, Blogger...
See the hack
for this dynamic
views icon: