Trang chủ \2.11.10

Emoticons for Blogspot (work in IE) - Biểu tượng mặt cười cho Blogspot

Emoticons for Blogspot (work in IE)Blogspot luôn bị so sánh với Wordpress bởi đây là 2 nền tảng blog hàng đầu hiện nay. Ngoài khả năng SEO như mình đề cập đến trong bài trước thì hệ thống Nhận xét của blogspot cũng bị chê bai rất nhiều và điều nhận thấy rõ nhất là hiện nay một số blogger đã chuyển sang dùng Nhận xét bên ngoài như của Disqus, IntenseDebate... Lý do có lẽ là việc reply lại Nhận xét trên blogspot khó khăn và không trực quan như Wordpress, đến giờ cũng chỉ hiển thị được avatar cho tài khoản Google, không chỉnh sửa được khung Đăng Nhận xét...

Khung Đăng Nhận xét của blogspot là một trang riêng được chèn vào blog thông qua thẻ iframe và Google không cho ta quyền can thiệp vào khung Đăng Nhận xét này. Đó là lý do mà không đưa được bộ gõ riêng cũng như emoticons vào khung Đăng Nhận xét. Với bộ gõ thì dường như không thể cho đến khi nào Google tích hợp thêm vào. Còn với emoticons thì thật may là có hàm replace, sử dụng hàm này để thay đổi ký tự thành hình ảnh và blogspot đã có emoticons cho dù việc nhập emoticons không thể theo kiểu click.

Emoticons cho blogspot đã được giới thiệu khá lâu rồi, trong bài này mình sẽ hướng dẫn các bạn tạo emoticons cho khung Nhận xét sao cho hiển thị được cả trên các phiên bản trình duyệt Internet Explorer (IE).

Bước 1: Mở template và chèn đoạn mã dưới đây trước thẻ </body>
<script type='text/javascript'>
//<![CDATA[
function replaceText(){if(!document.getElementById){return;}
bodyText = document.getElementById("emocomments");
theText = bodyText.innerHTML;
theText = theText.replace(/:\)\)/gi, "<img src='http://lh4.ggpht.com/_u7a1IFxc4WI/TM-vt_XVZKI/AAAAAAAAATI/Q35_W0anT6A/21.gif'/>");
theText = theText.replace(/=d&gt;/gi, "<img src='http://lh6.ggpht.com/_u7a1IFxc4WI/TM-vzUt1yQI/AAAAAAAAATY/QHNvnj0gYbU/41.gif'/>");
theText = theText.replace(/:d/gi, "<img src='http://lh3.ggpht.com/_u7a1IFxc4WI/TM-voxnkRKI/AAAAAAAAAS4/PjDn098vm3w/4.gif'/>");
theText = theText.replace(/:p/gi, "<img src='http://lh6.ggpht.com/_u7a1IFxc4WI/TM-vpDb68dI/AAAAAAAAAS8/Yv0Uu3qzG_Q/10.gif'/>");
theText = theText.replace(/:\(\(/gi, "<img src='http://lh4.ggpht.com/_u7a1IFxc4WI/TM-vt5z16MI/AAAAAAAAATE/Hx-7Thmr6do/20.gif'/>");
theText = theText.replace(/:\)/gi, "<img src='http://lh6.ggpht.com/_u7a1IFxc4WI/TM-voiNIw2I/AAAAAAAAASw/aav2hwqeG0c/1.gif'/>");
theText = theText.replace(/:\(/gi, "<img src='http://lh6.ggpht.com/_u7a1IFxc4WI/TM-voq7QQnI/AAAAAAAAAS0/UzoFJOCcPPU/2.gif'/>");
theText = theText.replace(/:-\?/gi, "<img src='http://lh5.ggpht.com/_u7a1IFxc4WI/TM-vua5MF2I/AAAAAAAAATU/N4X-ouMd1-I/39.gif'/>");
theText = theText.replace(/\[\-\(/gi, "<img src='http://lh6.ggpht.com/_u7a1IFxc4WI/TM-vuMg6RQI/AAAAAAAAATQ/rWj7euuKOZs/33.gif'/>");
theText = theText.replace(/:-o/gi, "<img src='http://lh6.ggpht.com/_u7a1IFxc4WI/TM-vpLiW1GI/AAAAAAAAATA/fPyPJcBks7s/13.gif'/>");
theText = theText.replace(/:-t/gi, "<img src='http://lh3.ggpht.com/_u7a1IFxc4WI/TM-vz4hwcNI/AAAAAAAAATo/4ySXuvQWma8/104.gif'/>");
theText = theText.replace(/:-ss/gi, "<img src='http://lh4.ggpht.com/_u7a1IFxc4WI/TM-vzUOH79I/AAAAAAAAATc/oNE5H5vcNtI/42.gif'/>");
theText = theText.replace(/b-\(/gi, "<img src='http://lh6.ggpht.com/_u7a1IFxc4WI/TM-vzrqI4MI/AAAAAAAAATk/BhfFnT0Gbro/66.gif'/>");
theText = theText.replace(/@-\)/gi, "<img src='http://lh6.ggpht.com/_u7a1IFxc4WI/TM-vziH8NXI/AAAAAAAAATg/2evEbN2cJwc/43.gif'/>");
theText = theText.replace(/=\)\)/gi, "<img src='http://lh6.ggpht.com/_u7a1IFxc4WI/TM-vuJ1G41I/AAAAAAAAATM/_jLHXvz6PTg/24.gif'/>");
bodyText.innerHTML = theText;
}replaceText();
//]]>
</script>
Bước 2: Tìm đến thẻ <b:loop values='data:post.comments' var='comment'> và thêm trước nó thẻ <div id='emocomments'>. Tìm thẻ đóng </b:loop> và thêm sau nó thẻ </div>.

Bước 3: Bước này là hiển thị những ký tự tắt và emoticons tương ứng với nó cho người đọc có thể biết được để chèn vào khung Nhận xét.

Emoticons for Blogspot (work in IE)


Tìm đến thẻ <data:blogTeamBlogMessage/> thứ 2 và chèn đoạn mã dưới đây vào sau nó:
<script type="text/javascript"> 
//<![CDATA[
function moreSmilies() {
    document.getElementById('smiley-more').style.display = 'inline';
    document.getElementById('smiley-toggle').innerHTML = '<a href="javascript:lessSmilies()">&#8592;</a></span>';
}
function lessSmilies() {
    document.getElementById('smiley-more').style.display = 'none';
    document.getElementById('smiley-toggle').innerHTML = '<a href="javascript:moreSmilies()">&#8594;</a>';
}
//]]>
</script>
<div class='emoticons'>
<img src='http://lh6.ggpht.com/_u7a1IFxc4WI/TM-voiNIw2I/AAAAAAAAASw/aav2hwqeG0c/1.gif'/>:) 
<img src='http://lh6.ggpht.com/_u7a1IFxc4WI/TM-voq7QQnI/AAAAAAAAAS0/UzoFJOCcPPU/2.gif'/>:( 
<img src='http://lh4.ggpht.com/_u7a1IFxc4WI/TM-vt_XVZKI/AAAAAAAAATI/Q35_W0anT6A/21.gif'/>:)) 
<img src='http://lh4.ggpht.com/_u7a1IFxc4WI/TM-vt5z16MI/AAAAAAAAATE/Hx-7Thmr6do/20.gif'/>:(( 
<img src='http://lh6.ggpht.com/_u7a1IFxc4WI/TM-vuJ1G41I/AAAAAAAAATM/_jLHXvz6PTg/24.gif'/>=)) 
<span id='smiley-more' style='display: none;'>
<img src='http://lh6.ggpht.com/_u7a1IFxc4WI/TM-vzUt1yQI/AAAAAAAAATY/QHNvnj0gYbU/41.gif'/>=D&gt; 
<img src='http://lh3.ggpht.com/_u7a1IFxc4WI/TM-voxnkRKI/AAAAAAAAAS4/PjDn098vm3w/4.gif'/>:D 
<img src='http://lh6.ggpht.com/_u7a1IFxc4WI/TM-vpDb68dI/AAAAAAAAAS8/Yv0Uu3qzG_Q/10.gif'/>:P 
<img src='http://lh6.ggpht.com/_u7a1IFxc4WI/TM-vpLiW1GI/AAAAAAAAATA/fPyPJcBks7s/13.gif'/>:-O 
<img src='http://lh5.ggpht.com/_u7a1IFxc4WI/TM-vua5MF2I/AAAAAAAAATU/N4X-ouMd1-I/39.gif'/>:-? 
<img src='http://lh4.ggpht.com/_u7a1IFxc4WI/TM-vzUOH79I/AAAAAAAAATc/oNE5H5vcNtI/42.gif'/>:-SS 
<img src='http://lh3.ggpht.com/_u7a1IFxc4WI/TM-vz4hwcNI/AAAAAAAAATo/4ySXuvQWma8/104.gif'/>:-t 
<img src='http://lh6.ggpht.com/_u7a1IFxc4WI/TM-vuMg6RQI/AAAAAAAAATQ/rWj7euuKOZs/33.gif'/>[-( 
<img src='http://lh6.ggpht.com/_u7a1IFxc4WI/TM-vziH8NXI/AAAAAAAAATg/2evEbN2cJwc/43.gif'/>@-) 
<img src='http://lh6.ggpht.com/_u7a1IFxc4WI/TM-vzrqI4MI/AAAAAAAAATk/BhfFnT0Gbro/66.gif'/>b-(
</span>
<span id='smiley-toggle'><a href="javascript:moreSmilies()">&#8594;</a></span>
</div>
Thêm một class emoticons. Chèn đoạn mã dưới vào trước thẻ ]]></b:skin>
.emoticons {-moz-background-clip: -moz-initial;-moz-background-origin: -moz-initial;-moz-background-inline-policy: -moz-initial;text-align: left;}
.emoticons a, .emoticons a:hover {font-size: 28px;margin-left: 20px;text-decoration:none;}


Mở rộng:


Các bước trên là chèn 15 emoticons của Zing với ký tự tắt theo phong cách Yahoo. Bạn hoàn toàn có thể thêm emoticons mới nữa và tự đặt ký tự tắt theo ý mình bằng cách chỉnh sửa code javascript ở bước 1.

Ký tự tắt nằm giữa 2 ký tự /
  • Với ký tự đặc biệt như [ ] { } \ / ( ) . ? + * ^ $ thì phải thêm \ trước nó.
  • Với ký tự < phải đổi thành &lt;
  • Với ký tự > phải đổi thành &gt;
  • Với ký tự & phải đổi thành &amp;
Hình ảnh emoticons nằm trong thẻ img, thay đường dẫn đến ảnh tương ứng với ký tự tắt mà bạn đặt.

Lưu ý là với những ký tự tắt bao gồm của nhau như :)):) thì bạn phải đặt :)) lên trước :) nếu không chỉ ký tự ít hơn được hiện lên.

Nếu không muốn hiển thị những Nhận xét dung tục ta khai báo những ký tự đó và thay tương ứng không phải là thẻ img nữa mà là ký tự *** chẳng hạn.

Sau khi đã thành công với việc chèn emoticons vào khung Nhận xét bạn hoàn toàn có thể chèn emoticons vào khung Bài đăng hay khung Nhận xét mới bằng cách tạo một ID mới bao quanh khung Bài đăng hay khung Nhận xét mới và khai báo ID này trong javascript ở bước 1 tương tự như khai báo ID emocomments (tên ID phải khác nhau).

Vì không thể chèn emoticons theo kiểu click do đó chúng ta chỉ nên sử dụng những ký tự tắt thông dụng để không gây khó khăn cho người đọc.

Cũng đừng nên tham lam chèn nhiều emoticons dẫn đến trình duyệt phải xử lý nhiều thông tin khiến blog tải chậm hơn.

Giờ thì khách thăm blog của bạn thoải mái Nhận xét với những emoticon ngộ nghĩnh cho dù họ có đang dùng trình duyệt bị giới web development ghét nhất mang tên IE 6.

Cảm ơn Noct đã giúp sửa lỗi không hiển thị avatar của tài khoản Blogger.

Nếu bạn đang sử dụng comment phân cấp của Tien Nguyen thì thay thế emocomments ở đoạn mã bước 1 thành cm_block và bỏ qua bước 2.

Hướng dẫn thủ thuật Blogger, Blogspot

240

Nhận xét
201

Bước 1 mình tìm được thẻ và dán được rồi,còn bước hai thì đành chịu vì dùng cả Word để tìm cũng không thấy thẻ <b:loop...

Reply Xóa nhận xét
202

Bạn đã click" mở rộng tiện ích" chưa

Reply Xóa nhận xét
203

Bài viết rất hữu ích.Thanks.!

Reply Xóa nhận xét
204

bác ơi, em chèn được emoticon vào phần cmt nhưng khi bấm xuất bản thì nó lại không có :((, làm thế nào để nó hiện ra vậy bác :((

Reply Xóa nhận xét
205

Bạn chèn không đúng chỗ rồi, bạn tìm thẻ ở vị trí thứ 4 (nếu blog bạn có nhiều hơn 2 thẻ này) rồi chèn vào.

Reply Xóa nhận xét
206

Tình hình là em đang dùng template của bác Noct mà làm theo hướng dẫn chỉ thấy Emoticons xuất hiện nhưng khi viết nhận xét để test thì không hiện. Bác duy có thwoif gian view source trang blog của em với! Mikuland.com. Thank bác Duy trước nhé.

Reply Xóa nhận xét
208

Bạn ơi, cho NK hỏi. Có những thẻ cần phải thay thế mà tìm kg có thì coi như đành chịu, kg có cách làm nào khác hả bạn?

Reply Xóa nhận xét
209

Bạn k tìm thấy thẻ nào?

Reply Xóa nhận xét
210

NK muốn làm auto readmore mà bấm ctrl + F tìm thẻ này mà kg thấy bạn à. Bạn giúp NK xem có cách nào khác để thực hiện kg nhé. NK cám ơn bạn nhé.

Reply Xóa nhận xét
211

Bạn xem bài này để áp dụng cho thread comment mới http://blog.duypham.info/2012/02/emoticons-mutilmedia-cho-thread-comment.html

Reply Xóa nhận xét
212

Anh Duy ơi cho em hỏi sao em chèn vào blog được rồi nhưng khi copy vào khung nhận xét thì không xuất hiện mặt cười là sao vậy anh??

Reply Xóa nhận xét
213

đây là blog của em http://chinhtrucblog.blogspot.com ko biết bị lỗi gì mà ko hiện mặt cười .

Reply Xóa nhận xét
214

Bạn đang sử dụng comment phân cấp của TN, trong phần chú ý ở cuối bài viết mình có hướng dẫn áp dụng cho trường hợp này rồi đó.

Reply Xóa nhận xét
215

hjhj đã làm được rồi chưa thay đổi emocomments thành cm_block.Chúc blog duy pham ngày phát triển và có nhiều thủ thuật hay hơn nữa .thanks

Reply Xóa nhận xét
216

hj mà anh duy ơi tiện thể cho em hỏi cái là làm sao để trang photoshop của em hiện thị hết trang làm ẩn đi thanh populapost... http://chinhtrucblog.blogspot.com/p/photoshop-online.html

Reply Xóa nhận xét
217

Bạn thêm <b:if cond='data:blog.pageType != &quot;static_page&quot;'> vào trước và </b:if> vào sau

<div id='sidebar-wrapper'>
...
</div>


sẽ thành

<b:if cond='data:blog.pageType != &quot;static_page&quot;'>
<div id='sidebar-wrapper'>
...
</div>
</b:if>


Bạn cần xác định đúng vị trí thẻ </div>.

Reply Xóa nhận xét
218

thanks anh duy nhiệt tình wa ,em làm được rồi mà sao các trang của blog em sao ko hiện hết vậy anh
http://chinhtrucblog.blogspot.com/p/srchttpstatic.html
http://chinhtrucblog.blogspot.com/p/code-converter.html
http://chinhtrucblog.blogspot.com/p/photoshop-online.html..

Reply Xóa nhận xét
219

K hiện cái gì kia?
Với lại bạn cần thêm
<b:if cond='data:blog.pageType == &quot;static_page&quot;'>
#mainpage-wrapper,#main-wrapper{width:960px}
</b:if>

vào trước </head> để mở rộng post trong kiểu trang page.

thêm 1 <div class='clear'></div> vào trước <!-- end content-wrapper --> để kết thúc float của phần post.

Mình chỉ nhìn source rồi nói code, bạn thử làm xem có lỗi gì k.

Reply Xóa nhận xét
222

Phải là
<b:if cond='data:blog.pageType == &quot;static_page&quot;'>
<style>#mainpage-wrapper,#main-wrapper{width:960px}</style>
</b:if>


Thiếu mất tag css :D

Reply Xóa nhận xét
220

thanks anh ý em nói là nó ko hiện ra hết toàn trang mà chỉ hiện có chút xíu chừa phần có thanh populapost ... lại ??? em muốn các trang phải hiện ra hết nguyên trang cơ

Reply Xóa nhận xét
221

code trên là để rộng ra đó.

Reply Xóa nhận xét
223

Em làm được rồi thanks anh nha. Chắc bữa nào phải theo anh học 1 khóa thiết kế Blog quá ^^
ps: Ko biết anh có nhận đệ tử ko nhi?
Chúc anh và gia đình Giáng Sinh anh lành ,hạnh phúc.

Reply Xóa nhận xét
225

@Duy Phạm: sao mình tạo 1 ID mới cho blog để chèn emoticons vào bài viết thì tại comments không thể hiện nữa (bài viết thể hiện)?

Reply Xóa nhận xét
228

Đoạn javascript có làm riêng cho bài viết k hay bạn đổi ở phần comment cho bài viết?

Reply Xóa nhận xét
226

Anh ơi, cái http://ceewave.blogspot.com của em lại giở chứng không hiển thị emoticon =(((((

Reply Xóa nhận xét
229

K thấy bạn áp dụng nên mình k biết nguyên nhân.

Reply Xóa nhận xét
230

anh duy ơi em bị lỗi
em chèn vào thứ 1 bị lỗi nếu bài viết chưa có nhận xét nào thì nó hiện ra bảng mặt cười.nếu có nhận xét thì bị mất .
chèn vào thứ 2 nó ko hiện ra gì hết
chèn vào thứ 3 nó hiện ra ở cuối trang ??
giúp em với

Reply Xóa nhận xét
231

Mình dùng code này của người này dùng code kia của người khác thế là nó đụng tá lả từa lưa,ngồi mạy mọ từ mấy hôm nay mới xong cái vụ chèn Link nhạc với Emoticons khổ thật,nhưng làm hoàn thành xong thì thấy nhẹ cả người sung sướng gì đâu á ! Ha Ha !Coi như cuối cùng mình chọn thủ thuật này của "Cậu" Duy Pham để dùng vì nó dễ thực hiện hơn cả.Cám ơn DP nhiều lắm.

Reply Xóa nhận xét
232

Duy Ơi ! Các biểu tượng chỉ hiện ở bài vừa mới đăng còn sau đó nếu ai còm xong thì các biểu lại không thấy đâu để copy code dán vào,trường hợp này không biết là lỗi gì nữa?

Reply Xóa nhận xét
234

Cái chỗ này tớ chẳng biết làm sao cả.ad giúp t với...


Sau khi đã thành công với việc chèn emoticons vào khung Nhận xét bạn hoàn toàn có thể chèn emoticons vào khung Bài đăng hay khung Nhận xét mới bằng cách tạo một ID mới bao quanh khung Bài đăng hay khung Nhận xét mới và khai báo ID này trong javascript ở bước 1 tương tự như khai báo ID emocomments (tên ID phải khác nhau).

Reply Xóa nhận xét
235

Trong bản nâng cấp tới bạn sẽ không cần quan tâm tới việc này nữa vì mình sẽ làm tự động.

Reply Xóa nhận xét
236

Sao icon của em nó lại ở dưới chỗ viết comment chứ k phải ở trên

Reply Xóa nhận xét
237

Anh duy phạm nếu muốn hiển thị tất cả biểu tượng khỏi phảo nhấn vào → thì làm sao với lại em bị lỗi ô có chứa các biểu tượng nằm phía dưới khung comment, có gì anh giúp em qua mail softdtvn@gmail.com

Reply Xóa nhận xét
238

Bài viết hay, Thanks bạn nhiều

Reply Xóa nhận xét
239

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

Reply
240

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

Reply

Đăng nhận xét

Cancel