Xem demo
Cách thức hoạt động đơn giản đó là kiểm tra trong nội dung bình luận chuỗi nào valid biểu thức regex thì thay thế nó thành tag HTLM (image/iframe)
Vậy như nào là valid
- Link ảnh: bắt đầu bằng http hoặc https và kết thúc bằng phần mở rộng (.png, .jpg, ...)
- Link video youtube: chính là địa chỉ url trên trình duyệt, ví dụ: https://www.youtube.com/watch?v=MhQKe-aERsU sẽ lấy id video để tạo code nhúng
Ok thủ thuật đơn giản thôi. Bạn chỉ cần đăng nhập vào trang quản trị blogger tìm đến thẻ <div class='comments-content'> và dán script vào SAU nó
<script type="text/javascript">
//<![CDATA[
// by Hung1001
const img = /\b(http(?:s)?:\/\/\S+(?:png|jpe?g|gif|bmp|svg|tif))\b/gi,
ytb = /(http:|https:)?\/\/(www\.)?(youtube.com|youtu.be)\/(watch)?(\?v=)?(\S+)?/gi;
var cmts = document.getElementsByClassName("comment-content"); // important
for (var i = 0; i < cmts.length; i++) {
var a = cmts[i].innerHTML;
if (img.test(a)) {
var c = a.match(img);
for (var j = 0; j < c.length; j++) a = a.replace(c[j], "<img src='" + c[j] + "'/>");
}
if (ytb.test(a)) {
var d = a.match(ytb);
for (var k = 0; k < d.length; k++) {
var id = d[k].split("=")[1];
if (typeof id !== "undefined" && id.length === 11) {
a = a.replace(d[k], "<div class='embed'><iframe src='https://www.youtube.com/embed/" + id + "' frameborder='0' allow='accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture' allowfullscreen=''></iframe></div>");
}
}
}
cmts[i].innerHTML = a;
}
//]]>
</script>
Phần class comment-content lấy theo mẫu bình luận mặc định của blogger, nếu bạn tự triển khai hệ thống bình luận mới hãy thay chính xác tên class để code hoạt động
Ngoài ra để tạo iframe full width và responsive bạn thêm đoạn css sau
.comment-content .embed {
position: relative;
padding-bottom: 56.25%;
max-width: 100%;
}
.comment-content .embed iframe {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%
}
Để tách img ra khỏi dòng thêm css sau
.comment-content img {
margin: 15px auto; /* Can edit margin-top/bottom */
display: block;
width: 90%; /* Can edit */
}
Lưu mẫu lại và kiểm tra thành quả !
Ưu điểm: so với các chèn ảnh video dạng short code như [img]link ảnh[/img] thì giờ người dùng chỉ cần tìm link ảnh/video dán vào là xong, UX tăng đáng kể
Nhược điểm: đây chỉ là đoạn regex đơn giản tìm và thay thế tất cả link ảnh/video thành tag HTML, kể cả với cách chèn short code bạn cũng chưa thể kiểm soát được nó có tồn tại trên server không.
Ví dụ ông nào chơi khăm bình luận kiểu https://x69.com/abc.png hoặc https://www.youtube.com/watch?v=abcdefgh, theo lý thuyết đó vẫn là những liên kết valid regex nhưng chúng không tồn tại trên server thì nghiễm nhiên khi biến thành tag html sẽ cho ra kết quả không mong muốn. Gặp những ca này bạn nên bắt hắn dán lại link và xóa bình luận kia đi :v
Vậy nên từ đầu tôi đã nói xử lý chuỗi không đơn giản !
Bài viết này xin dừng tại đây, hi vọng bạn áp dụng thành công thủ thuật cho blog của mình
Good Luck !
1. Không vi phạm luật pháp nước CHXHCN Việt Nam
2. Không vi phạm thuần phong mỹ tục Việt Nam
3. Không bàn luận vấn đề liên quan đến tôn giáo, chính trị
4. Không đả kích, chửi bới hay đưa ra những lời nói không phù hợp với mục tiêu của website
5. Không bình luận với mục đích quảng cáo, trao đổi, mua bán
6. Khuyến khích sử dụng Tiếng Việt có dấu, hạn chế sử dụng tiếng lóng, viết tắt
7. Khi cần sự trợ giúp, vui lòng miêu tả chi tiết lỗi và để lại link đính kèm, tránh nói chung chung gây mất thời gian cho đôi bên
https://i.imgur.com/SHb3oNu.png
cảm ơn bạn trc
.thread-toggle.thread-expanded,
#top-continue {
display: none;
}[/pre]
À mà cái tên miền .blog hết hạn thì ông có gian hạn ko?
hungcoder.com tem của sora nó k biết ẩn ở đâu k nữa :(
hổ trợ rất tốt :D
Khi mình embed 1 video youtube thì mặc định nó sẽ lấy thumbnail là default.jpg.
Nếu a muốn đổi nó thành maxresdefault.jpg cho nét thì có làm đc ko?
[pre]$('.thumb a img').attr('src', function(i, src) {
return src.replace('default.jpg', 'maxresdefault.jpg');
});[/pre]