Nâng cấp Threaded Comments Blogger với ảnh, video và syntax

Xin chào các bạn, ở bài viết trước tôi đã hướng dẫn cho các bạn cách chèn bộ icon tùy chỉnh vào Threaded Comments Blogger, và trong bài viết này chúng ta sẽ tăng lực cho nó bằng việc chèn thêm ảnh, video youtube và syntax code

Khung bình luận của blogger thô sơ tới nỗi chèn vài thẻ html cơ bản vào cũng bị cấm, vì vậy không còn cách nào khác ta cần tạo các short code và sử dụng js để chuyển chúng về tag html. Nói vậy có nghĩa không chỉ có ảnh (thẻ img), video (thẻ iframe), syntax code (thẻ pre) mà với bất kì thẻ html cơ bản nào ta đều có thể dùng js để biến đổi được


Trong bài viết này tôi sử dụng SyntaxHighlighter 3.0.83 (theme Eclipse, 3 module js-html-css) phục vụ cho làm đẹp code và fancybox 3.3.5 phục vụ cho việc xem ảnh trong khung bình luận ở chế độ lightbox. Và đương nhiên điều kiện bắt buộc là bạn không tắt blogger comment trên trang của mình

Đăng nhập vào trang quản trị và vào mục chỉnh sửa HTML

Tìm tới
<b:includable id='threaded_comments' var='post'> 
mở rộng nó ra và chèn code js vào SAU
<div class='comments-content'> 
như hình


<!-- Required for SyntaxHighlighter -->
<script src='//cdnjs.cloudflare.com/ajax/libs/SyntaxHighlighter/3.0.83/scripts/shCore.min.js'/>

<!-- Custom Theme for SyntaxHighlighter : http://alexgorbatchev.com/SyntaxHighlighter/manual/themes/ -->
<link href='//cdnjs.cloudflare.com/ajax/libs/SyntaxHighlighter/3.0.83/styles/shCoreEclipse.min.css' rel='stylesheet' type='text/css'/>
<link href='//cdnjs.cloudflare.com/ajax/libs/SyntaxHighlighter/3.0.83/styles/shThemeEclipse.min.css' rel='stylesheet' type='text/css'/>

<!-- Module for SyntaxHighlighter : http://alexgorbatchev.com/SyntaxHighlighter/manual/brushes/ -->
<script src='//cdnjs.cloudflare.com/ajax/libs/SyntaxHighlighter/3.0.83/scripts/shBrushXml.min.js'/>
<script src='//cdnjs.cloudflare.com/ajax/libs/SyntaxHighlighter/3.0.83/scripts/shBrushJScript.min.js'/>
<script src='//cdnjs.cloudflare.com/ajax/libs/SyntaxHighlighter/3.0.83/scripts/shBrushCss.min.js'/>

<!-- Required for fancybox -->
<link href='//cdnjs.cloudflare.com/ajax/libs/fancybox/3.3.5/jquery.fancybox.min.css' rel='stylesheet' type='text/css'/>

<script type='text/javascript'>
//<![CDATA[
function smartComment() {
    a = document.getElementById("comment-holder");
    b = a.innerHTML;
    b = b.replace(/\[pre\]/gi, "<pre>");
    b = b.replace(/\[pre js\]/gi, "<pre class='brush:js'>");
    b = b.replace(/\[pre html\]/gi, "<pre class='brush:html'>");
    b = b.replace(/\[pre css\]/gi, "<pre class='brush:css'>");
    b = b.replace(/\[\/pre\]/gi, "</pre>");
    b = b.replace(/\[img\].*?'.*?\[\/img\]/gi, "");
    b = b.replace(/\[img\]/gi, "<img data-fancybox='gallery' src='");
    b = b.replace(/\[\/img\]/gi, "'/>");
    b = b.replace(/\[youtube\].*?'.*?\[\/youtube\]/gi, "");
    b = b.replace(/\[youtube\]https:\/\/youtu.be/gi, "<iframe width='560' height='315' src='https://www.youtube.com/embed");
    b = b.replace(/\[youtube\]https:\/\/www.youtube.com\/watch\?v=/gi, "<iframe width='560' height='315' src='https://www.youtube.com/embed/");
    b = b.replace(/&amp;feature=/gi, "?rel=0' '");
    b = b.replace(/\[\/youtube\]/gi, "?rel=0' frameborder='0' allowfullscreen></iframe>");
    a.innerHTML = b
}
smartComment();

$("#comment-holder img").each(function() {
    $(this).attr('data-src', $(this).attr("src"));
});

SyntaxHighlighter.config.bloggerMode = true;
SyntaxHighlighter.all();

$(window).on('load', function() {
    var t = document.createElement("script");
    t.src = "//cdnjs.cloudflare.com/ajax/libs/fancybox/3.3.5/jquery.fancybox.min.js";
    document.body.appendChild(t);
    $("#comment-holder img[data-fancybox]").fancybox();
});
//]]></script>

Trong đó

Ví dụ tôi muốn thêm syntax cho code php thì phải thêm link nhúng
<script src='//cdnjs.cloudflare.com/ajax/libs/SyntaxHighlighter/3.0.83/scripts/shBrushPhp.min.js'/>

và tạo thêm short code
b = b.replace(/\[pre php\]/gi, "<pre class='brush:php'>");


Phần màu đỏ là short code bạn tự tạo tùy thích, phần màu xanh phải chuẩn Brush aliases của SyntaxHighlighter không code nó không làm đẹp đâu nhé
Theo đó với code trình bày ở trên các short code khi bình luận sẽ là
chèn ảnh: [img]link ảnh[/img]
chèn video youtube: [youtube]link video[/youtube]
chèn code HTML: [pre html]code[/pre]
chèn code CSS: [pre css]code css[/pre]
chèn code JS: [pre js]code js[/pre]
... (bạn có thể thêm các module syntax tùy theo mục đích sử dụng)

Link ảnh: là link dạng trực tiếp ví dụ https://i.imgur.com/0GZdCna.jpg Link video: là link video trên youtube, copy trên thanh địa chỉ của trình duyệt ví dụ https://www.youtube.com/watch?v=MhQKe-aERsU
Các đoạn code js, html, css phải được convert các kí tự đặc biệt, bạn có thể tự tạo tool convert để người dùng chuyển đổi trước khi bình luận

KẾT LUẬN: kết hợp với bộ icon và thêm các chức năng trong bài viết này, chắc chắn khung bình luận blog của bạn sẽ rất đắt khách.

Để lại bình luận nếu gặp khó khăn và chúc thành công !
Nguồn : Hung1001.Blog


Mật Khẩu Mặc Định Để Tải Template Hoặc Apps Nếu Có :
hungcoder.com Hoặc Smile92@

Related Posts

17 Comments

  1. Nhận xét này đã bị quản trị viên blog xóa.

    Trả lờiXóa
  2. em không hiểu ?

    Trả lờiXóa
  3. Đơn giản mà, e chỉ cần tìm đoạn code phía trên rồi bỏ đoạn code phía dưới vào sau đoạn code tìm phía trên là xong thôi nó ghi:) dài dòng thế đấy nhưng làm chỉ có mấy phút thôi e ạ :)

    Trả lờiXóa
  4. ảnh nhiều chỉ làm giảm tốc độ blog

    Trả lờiXóa
    Trả lời
    1. Tùy thuộc vào ng dùng nữa e ạ. Nhưng nó phù hợp với blog thì nên xem xét và tối ưu nó hơn e.

      Xóa
  5. Trả lời
    1. Demo ở cmt bài viết này e nhé

      https://www.hungcoder.com/2018/06/material-design-dialog-box-with-jquery.html?m=1

      Xóa
  6. Trả lời
    1. Hehe nếu cảm thấy ok thì nên áp dụng e nhé. Mà a chưa tối ưu đâu. Vì đây là a copy nên tốc độ load trang có thể giảm đi đấy nhé.

      Xóa
  7. DEMO

    [pre html]
    <div class='material-noti-wrap'> <div class='material-noti-content'> <div class='material-noti-title'>Notification</div> <div class='material-noti-text'> <!-- Viết thông báo vào đây --> </div> <div class='done-wrap'> <a class='close-noti' href='javascript:void(0)'><i class='fas fa-times'></i></a></div> <div class='done-wrap'> <a class='done' href='javascript:void(0)'>Done</a></div> </div> </div> <div class='material-noti-overlay'></div>
    [/pre]

    Trả lờiXóa
  8. a hùng ơi đổi lại hộ e cái liên kết http://www.namhacker12345.blogspot.com/
    Cảm ơn a

    Trả lờiXóa
  9. Please, put these credits back https://blogger-templatees.blogspot.com/ or we will have to report to google and blogger! Thank you

    Trả lờiXóa
  10. [youtube]https://www.youtube.com/watch?v=EMzFazZ_Wkk[/youtube]

    Trả lờiXóa