Widget top commentators cho blogspot

Widget top commentators cho blogspot
Cái này cũ lắm rồi, do lục lọi data blogspot cũ thấy cái tiện ích này nên post lên đây kẻo phí
Tiện ích top commentators này tuy chưa được hoàn chỉnh nhưng cũng có thể đáp ứng phần nào sở thích của các bạn ưa thích tiện ích này.
+ Ưu điểm của tiện ích này:
- Thống kê chính xác số lượng comments trong thời gian ta quy định ví dụ 1 tuần(numDays = 7,).Hoặc tùy chỉnh bao nhiêu ngày là ở bạn.
- Không cần điền địa chỉ của blog(URL blogspot)
- Và ưu điểm lớn nhất là loại bỏ được phần thống kê số lượng comment của admin blog mà các bài hướng dẫn trước đây chưa làm được,còn 1 số blog làm được thì không chia sẻ hoặc có thì khuyến mại cho một link về trang của họ mà bạn không thể cấu bỏ được.
+ Nhược điểm:
Bố trí giao diện chưa được đẹp mắt.

Demo bạn có thể xem ảnh:
Widget top commentators cho blogspot
áp dụng vào blogspot
Ta tiến hành thêm 1 tiện ích tại nơi bạn muốn và chèn code sau vào là được

<style type="text/css">
.top-commenter-line {font-size:12px;color:#005595;margin-bottom:5px;display:block}
.top-commenter-line .profile-name-link {font-weight:bold;font-size:14px;color:#444;position:absolute;top:5}
.top-commenter-line .profile-name-link:hover{color:#f90}
.top-commenter-avatar {
width: 35px;
height: 35px;
padding: 1px;
border: 1px solid #aaa;
margin:0 10px;
}
</style>
<script type="text/javascript">
//Edit by Dautoblog
// CONFIG:
var maxTopCommenters = 5;   // Hiển thị 5 user có comments
var minComments = 1;        // Có 1 comment là được vinh danh
var numDays = 7;            // Thời gian cần thống kê(ở đây là 7 ngày) Tất cả thời gian thì ghi là 0
var excludeMe = true;   
var excludeUsers = ["Anonymous", "someotherusertoexclude"];
var maxUserNameLength = 42; // 0: don't cut, >4: cut usernames
//
var txtTopLine = ' [image] [user] [count] Comment';
var txtNoTopCommenters = 'No top commentators at this time.';
var txtAnonymous = ''; 
var sizeAvatar = 35;
var cropAvatar = true;
//
var urlNoAvatar = "http://lh4.googleusercontent.com/-069mnq7DV_g/TvgRrBI_JaI/AAAAAAAAAic/Iot55vywnYw/s"+sizeAvatar+"/avatar_blue_m_96.png"; // http://www.blogger.com/img/avatar_blue_m_96.png resizeable
var urlAnoAvatar = 'http://www.gravatar.com/avatar/00000000000000000000000000000000?d=mm&s=' + sizeAvatar;
var urlMyProfile = ''; 
var urlMyAvatar = ''; 
if(!Array.indexOf) {
 Array.prototype.indexOf=function(obj) {
  for(var i=0;i<this.length;i++) if(this[i]==obj) return i;
  return -1;
}}
function replaceTopCmtVars(text, item, position)
{
  if(!item || !item.author) return text;
  var author = item.author;
 
  var authorUri = "";
  if(author.uri && author.uri.$t != "")
    authorUri = author.uri.$t;
 
  var avaimg = urlAnoAvatar;
  var bloggerprofile = "http://www.blogger.com/profile/";
  if(author.gd$image && author.gd$image.src && authorUri.substr(0,bloggerprofile.length) == bloggerprofile)
    avaimg = author.gd$image.src;
  else {
    var parseurl = document.createElement('a');
    if(authorUri != "") {
      parseurl.href = authorUri;
      avaimg = 'http://www.google.com/s2/favicons?domain=' + parseurl.hostname;
    }
  }
  if(urlMyProfile != "" && authorUri == urlMyProfile && urlMyAvatar != "")
    avaimg = urlMyAvatar;
  if(avaimg == "http://img2.blogblog.com/img/b16-rounded.gif" && urlNoAvatar != "")
    avaimg = urlNoAvatar;
  var newsize="s"+sizeAvatar;
  avaimg = avaimg.replace(/\/s\d\d+-c\//, "/"+newsize+"-c/");
  if(cropAvatar) newsize+="-c";
  avaimg = avaimg.replace(/\/s\d\d+(-c){0,1}\//, "/"+newsize+"/");
 
  var authorName = author.name.$t;
  if(authorName == 'Anonymous' && txtAnonymous != '' && avaimg == urlAnoAvatar)
    authorName = txtAnonymous;
  var imgcode = '<img class="top-commenter-avatar" height="'+sizeAvatar+'" width="'+sizeAvatar+'" title="'+authorName+'" src="'+avaimg+'" />';
  if(authorUri!="") imgcode = '<a href="'+authorUri+'">'+imgcode+'</a>';
 
  if(maxUserNameLength > 3 && authorName.length > maxUserNameLength)
    authorName = authorName.substr(0, maxUserNameLength-3) + "...";
  var authorcode = authorName;
  if(authorUri!="") authorcode = '<a class="profile-name-link" href="'+authorUri+'">'+authorcode+'</a>';
 
  text = text.replace('[user]', authorcode);
  text = text.replace('[image]', imgcode);
  text = text.replace('[#]', position);
  text = text.replace('[count]', item.count);
  return text;
}
 
var topcommenters = {};
var ndxbase = 1;
function showTopCommenters(json) {
  var one_day=1000*60*60*24;
  var today = new Date();
 
  if(urlMyProfile == "") {
    var elements = document.getElementsByTagName("*");
    var expr = /(^| )profile-link( |$)/;
    for(var i=0 ; i<elements.length ; i++)
      if(expr.test(elements[i].className)) {
        urlMyProfile = elements[i].href;
        break;
      }
  }
 
  if(json && json.feed && json.feed.entry && json.feed.entry.length) for(var i = 0 ; i < json.feed.entry.length ; i++ ) {
    var entry = json.feed.entry[i]; if(entry.author[0].name.$t=="Hai Long") continue;
    if(numDays > 0) {
      var datePart = entry.published.$t.match(/\d+/g); // assume ISO 8601
      var cmtDate = new Date(datePart[0],datePart[1]-1,datePart[2],datePart[3],datePart[4],datePart[5]);
      var days = Math.ceil((today.getTime()-cmtDate.getTime())/(one_day));
      if(days > numDays) break;
    }
    var authorUri = "";
    if(entry.author[0].uri && entry.author[0].uri.$t != "")
      authorUri = entry.author[0].uri.$t;
 
    if(excludeMe && authorUri != "" && authorUri == urlMyProfile)
      continue;
    var authorName = entry.author[0].name.$t;
    if(excludeUsers.indexOf(authorName) != -1)
      continue;
 
    var hash=entry.author[0].name.$t + "-" + authorUri;
    if(topcommenters[hash])
      topcommenters[hash].count++;
    else {
      var commenter = new Object();
      commenter.author = entry.author[0];
      commenter.count = 1;
      topcommenters[hash] = commenter;
    }
  }
  if(json && json.feed && json.feed.entry && json.feed.entry.length && json.feed.entry.length == 200) {
    ndxbase += 200;
    document.write('<script type="text/javascript" src="http://'+window.location.hostname+'/feeds/comments/default?redirect=false&max-results=200&start-index='+ndxbase+'&alt=json-in-script&callback=showTopCommenters"></'+'script>');
    return;
  }
  var tuplear = [];
  for(var key in topcommenters) tuplear.push([key, topcommenters[key]]);
 
  tuplear.sort(function(a, b) {
    if(b[1].count-a[1].count)
        return b[1].count-a[1].count;
    return (a[1].author.name.$t.toLowerCase() < b[1].author.name.$t.toLowerCase()) ? -1 : 1;
  });
  var realcount = 0;
  for(var i = 0; i < maxTopCommenters && i < tuplear.length ; i++) {
    var item = tuplear[i][1];
    if(item.count < minComments)
        break;
    document.write('<di'+'v class="top-commenter-line">');
    document.write(replaceTopCmtVars(txtTopLine, item, realcount+1));
    document.write('</d'+'iv>');
    realcount++;
  }
  if(!realcount)
    document.write(txtNoTopCommenters);
}  
document.write('<script type="text/javascript" src="http://'+window.location.hostname+'/feeds/comments/default?redirect=false&max-results=200&alt=json-in-script&callback=showTopCommenters"></'+'script>');
</script>

Các bạn thay Hai Long (chỗ bôi màu vàng chanh)thành tên admin blog của bạn.
Tên này các bạn vào phần bài đăng trong thiết kế nó chính là tên tác giả bài đăng hay là tên trên G+(Author profile)
Tên này cần điền chính xác vì đoạn javascríp này có chức năng loại bỏ phần thống kê số lượng comment của chủ blog.
Chúc thành công!
Nhận xét

Không có nhận xét nào :