Sunday, September 18, 2011

Cài đặt bộ chèn Emoticons cho hệ thống nhận xét phân cấp

Được biết, hiện nay với sự phố biến của hệ thống nhận xét phân cấp qua đó người nhận xét khi trả lời một ý kiến của một người nào đó thì thường nhấn vào nút Trả lời/Reply để viết nhận xét qua cửa sổ popup, lúc này việc chèn biểu tượng cảm xúc vào nhận xét sẽ gặp khó khăn. Giải pháp cho vấn đề này là tạo bộ biểu tượng cảm xúc trực tiếp trong hệ thống nhận xét popup.

Hẳn bạn cũng từng biết về addon Greasemonkey giúp thêm bộ chèn biểu tượng cảm xúc trực tiếp vào công cụ đăng bài viết (Post Editor) của Blogspot. Kịch bản này chỉ hoạt động trên trình duyệt FireFox. Thật may là sau một quá trình nguyên cứu, mình đã áp dụng thành công phương pháp này đối với hệ thống nhận xét popup. Cách thức thực hiện là viết một kịch bản tạo chức năng chèn các thẻ <b></b> (in đậm), <i></i> (in nghiêng), <a></a> (liên kết) và một bộ biểu tượng cảm xúc (ở đây mình tạo bộ 25 Zing Emoticons) sau đó upload kịch bản lên trang tài nguyên userscript.org. Để cài đặt tiện ích này, người dùng cần sử dụng trình duyệt FireFox tải addon Greasemonkey rồi cài đặt. Trước tiên đến trang Greasemonkey, nhấn nút Add to Firefox để tải về cài đặt tiện ích này.


Sau đó khởi động lại (restart) trình duyệt, tiếp tục tải Emoticons Script về, nhấn Install để script tự động cài đặt vào FireFox.


Sau đó mở hệ thống nhận xét popup bạn sẽ thấy bộ biểu tượng cảm xúc sẽ xuất hiện trong phần Comments Form. Mỗi khi cần chèn biểu tượng hoặc các thẻ HTML, bạn chỉ việc click vào nó là xong.

Tuy nhiên để các biểu tượng cảm xúc hiển thị trên phần nhận xét (không phải dạng Popup) thì bạn phải cài đặt chức năng biểu tượng cảm xúc, bằng cách đặt đoạn code sau đây vào trước thẻ </body>.

<b:if cond='data:blog.pageType == &quot;item&quot;'>
<script type='text/javascript'>
//<![CDATA[
//Emoticons for Blogger Comments || Author: Huynh Nhat Ha || http://huynh-nhat-ha.blogspot.com || © Copyright 2010
function emoticonBloggerHuynhNhatHa() {

if(!document.getElementById) {return;} // no support

bodyText = document.getElementById('comments-block');

theText = bodyText.innerHTML;
theText = theText.replace(/:1/g,'<img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhH5GS-rDnjXqdhXjuKp2L_aIhL6r9vo6McHfUw3zcFl26ajH8V8braUvgqD1RnhBsZT_7WbczaqcRUK_NRvbr4EY5UQIzMmONT99oav18tlREyEVLZjAbUPfDgIVYbKRuRDCmDTEI7El62/s1600/49.gif" />');
theText = theText.replace(/:2/g,'<img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjkn5S4_n9OVXxXy7AhjVM4pPg4-oPBqr7sXzNRqQY7BpHz3E4JkJE2Ac0lFEa_w172dj0WBXKbYRZ0s3SnJojG927zenqaZOwafwVIvGbCendJtPxm1NseWMEn13iHwV4ayKmzD7_lx6e6/s1600/102.gif" />');
theText = theText.replace(/:3/g,'<img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjkcxW6UekORj1QpVQCzkfe-HQqePm9IlyOL8SKsuY4v241Hkk1cY4YUwvmZvdkjZsmQllBIjhR0O82SQpY4fHX8ZJSRtvfH4AfQg0iDThv1VAey4OrnBVL30Rr7THzgppgpj3abmxa-jZb/s1600/113.gif" />');
theText = theText.replace(/:4/g,'<img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhA8JJk4a7jFFb_EIErJIekWPVji8UnImb6_GQeCARlW70fsdOEurNFLUOGL8BvvpI_8U1cjcpuo1cgKXNy4NyAvhlZj_cEICiAA7vg_GoEDQiR6XhhRC5TdZ81ZDFeCVk4ViSP2OEEuTaa/s1600/93.gif" />');
theText = theText.replace(/:5/g,'<img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj3I2gzAuYYHPK3S_7IO-18jIHAhoItY8OAEF_Vh4toFrWiDon2pHQOVulptE64dM4nIf62Fy5odvywnE7gPeRkduRCMoChCZDlvCQaxK2MHfXeNaGuIHQgxk6IlIx65ll_u1ZeE3FhiQYw/s1600/61.gif" />');
theText = theText.replace(/:6/g,'<img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhoHpdEgfccXdBs90lYk8TxPde5X1uTeSdb53gh_PdsPDFEh6xvPLdylvkK7TKZtBYX88uGNdrIZRdtaO_DU_hr215QRCjfy1dI-zdeeksT_Nd3-EYYzNVUvstWqBmAppagebECR-xtN3Yp/s1600/134.gif" />');
theText = theText.replace(/:7/g,'<img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgZUf8624nHuf15md8zQuicEU0W_T3L25w578qE0Zp37Kt67YfHYhXO5T4RPxV6dnEbCvyQv2_ytg-960uII_qeNDdKfqLC5dDOvmhRQ4JZEp8AiGIFYNkXx6ib-hQxBlaNhx-8f-yW7A7u/s1600/39.gif" />');
theText = theText.replace(/:8/g,'<img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgjKaVbF9o-W-0aF4Leli6-yYoPj-zokwDzCzOCBmChCfg8vIJRaQ7NBsSys85jcd0OAAJC1T2HV-IXBSITzkQUdDdtGhfHv_Rm3WEAzdnZMwqn2N_kU-vGwMifYJqmVpPX7G3Ymts9CwO_/s1600/106.gif" />');
theText = theText.replace(/:9/g,'<img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj_QB_iwTLHmiYanwDPSlsLXJfMxFteBSa4XDVNQe6QJEZqyVIjSOiD3bWBWnnwAo9uyQvKv7eTrLKGAO7mYoYmH_5ZvbyhOT2fzE1JNOx4nuf5l-wPDOLOLlvfPUWAYrCgwjmqD9csaEq6/s1600/43.gif" />');
theText = theText.replace(/:A/g,'<img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjzWeqF_PGnIvm3HD_tFZovHhAQJ1IHDYDTkqAbkXJBgCxqLEgIwd3qoq6_bGvXYDJg_imraS6fzwvAthMc2KLKDZ1vrVgokwxt5wvIxzeWyLgAyPLpwKIL1zi-RycNiGZciwVVon4_Ee74/s1600/111.gif" />');
theText = theText.replace(/:B/g,'<img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEio-jcj5y5VDpxA2LDY0Be5fXTAOb948T0-DFs8GC5Z98ZR-SNlDYNfp5_N4KnWRLztr8yntOpLOfkHy1_pktxnXOu9io8DOaiiI0n9klG5hogoGWQWfYoUUtOuEIA2C5fWS1_hRomX4ENm/s1600/48.gif" />');
theText = theText.replace(/:C/g,'<img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhufsl2FtByKUEQvBfRFYPK8jbSReV9eHzktVQ0ifIQJP96egyBkGeTu3GCUY17kClkRfV8o-n3llssEVFcA5rzPZjMKV-8MvfjQI4R5uVwPDMK12F4sxz-OuCyBvDXqQIkuvvw7LDGmABe/s1600/54.gif" />');
theText = theText.replace(/:D/g,'<img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi46Z8_vzNC81bst4yZ-cY2PmCJPgQm_uiDttA0b4Pydq8it4Lw8jultyExHswCgGIR3e7gR2W1vrYqHaL-liBNZT3EkdknBMhWshGLq1L2BzYAJScmvdfeySM1rNHDZOB37scX7AcJmgeM/s1600/63.gif" />');
theText = theText.replace(/:E/g,'<img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEibtCWdY92ykbixUxRw3nYo7LGzrhDjkMQcXfiljgNpGBvgWP98TuhLO-irMuZZDkDrgR-K0ti_b-aV3O6JPdp43YPrJWlsLcPwJkZDgEzTTKLKj7i93sER-HzI77iXlb8W9uhg6RhC9U07/s1600/100.gif" />');
theText = theText.replace(/:F/g,'<img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgFpRcugAIuJY6CQkeOMb6eYGmpcAsUMw3npC1Hc-910Thw063V3NmXMd1qDDSmgsIp8xoAicoUu9yNvF_HMQ4vWTrL8qYwlbpXcIv1RHR4oE51_BKnYm2Bo-TWe-97d01Q3ZgDoMw4InTw/s1600/45.gif" />');
theText = theText.replace(/:G/g,'<img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiBFyeih367hypEL75t8cZ4Nhm97ujWuwEVqt7rUn0sAcX45PBmlF_3evfrU_VZQ8bYeK53DgsuxK-jeSgpeP3kDxUcgtwVaxRaylV3kHy7XS88GE92LS4ecKpUKGjeDLn8w_fBsoh0nHDo/s1600/77.gif" />');
theText = theText.replace(/:H/g,'<img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjJ67kCj15R7R038Fuuq_flZ0Ojnu0fq66sgnlWA8LMFHPRcBohysAS_ZWo4amAs5NtpOgIu58egECPVt9izwP8DgBJ5TtcU-f33l4a849u2MMsCFIjH5fpXjMca5QW6J1mbzLF-JdHRvn8/s1600/86.gif" />');
theText = theText.replace(/:I/g,'<img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh7-ZTp4NRGN9aCjJ8-EvnYF-QkCSPyjL9jMxqLSsFnOPrfts_WsdHVu8NuMMuFYs6sIrI8uZBvF2-PmWGwBBxQHwzZHdrIkqJ9zWXp9FdP1wtN-jTXkHJupStskk200tYG8fGDYDQSs5yK/s1600/94.gif" />');
theText = theText.replace(/:J/g,'<img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiqCj4jD3H87geDZiRS32pxQZYawKW7hJLn9JqaXrs1FY5EYAgrSLLM2HewCuWMbT_YTSZfWzula7RIplC_RLOzqPKlFfiARj6BUKoVGiYa7uzLLw_0Tkxe4J8V0NWz3rAvX8d6IP27EG2s/s1600/83.gif" />');
theText = theText.replace(/:K/g,'<img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiYKQuvI95jHuASEg0Pyc6RDnXrnWbTTxUuGrpHj6Egws3bwPd7GOn2SqwZZ8cLMODTJUCiJSJPB_-yMErZrfWSpKBTBbA_yJMu1OSQNmjEC5qvdfKMbSuXZC3DSesmQeRkYHl4twVPh0Us/s1600/59.gif" />');
theText = theText.replace(/:L/g,'<img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjvfnFbB6EkAEzc_UZ6K7f2zy-rC9gYEk5HixJu-tHH3nSTxMOo_dPoOk3_MweYyW9DqplIuvCYGdg0l4wPhw3zQOv1K9gydX-RHG7Wg-MHHY2cphFJI9VoAMEPEnxD44m94YY5N1nMXKWM/s1600/soldierbaby.gif" />');
theText = theText.replace(/:M/g,'<img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgbv8P140vEb2SBNx0BujqMwIjd3BzqXhOpqZe71PhdQx_YM2pbfpKHc_BYhpFkJqQ8SKmOJgVOwpUxO5P6yRfygbbiZPev0XoM0Q7z_44Gizzs5ZFMkf5vdRLrVvMz0mvfwU1dqwpELNJM/s1600/alo.gif" />');
theText = theText.replace(/:N/g,'<img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi9mlFPszfiM13jGBFgswpfLpbcClMHFJuriYLjPSg2mTviDq8Nph8n0yJs5b5oWf1GgKRzDh-T-iEdR3-VMUMK76hiOZCjXpb35iQXX0_uzeFguFqkwQJUlY_4SEn5YHGBxCepY-c-ih3D/s1600/shutup.gif" />');
theText = theText.replace(/:O/g,'<img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjHU7QUR9fjlLBYJ6wTFhB6Pw_IQ8cm4-IJruQLlZBOjKe5tT5oyKqoc_ef98rdsJhLcXcpfxiRXagxHKIA5d8pPWbKrWHUzOoMHtw3eow-2P8Pyfbb9RJsa2vp4aR4R4mY0l842Yljayfp/s1600/yeulam.gif" />');
theText = theText.replace(/:P/g,'<img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiBM3eqNPvdkf_5gSNEDqj4uw0z3hIP59td5EYkX3MrpFJwLhg3rW4VBbzp7hUbEFqbo5M5bQtYUAgPSLRbg0OC9_S-qUYky8mczMJfFjaYZa8W_h6nDqd_evaiIuNMASMcWtPKQpQQX_t1/s1600/datbomb.gif" />');

bodyText.innerHTML = theText;}
//]]>
</script>
<script type='text/javascript'>
emoticonBloggerHuynhNhatHa();
</script>
</b:if>


  1. Chú ý


    • 1 Để chức năng biểu tượng cảm xúc hoạt động trong phần nhận xét thì bạn phải thay đổi ID comments-block cho phù hợp. ID này nằm trong một thẻ chỉ định thành phần chứa các dữ liệu của nhận xét, thẻ này thường nằm ngay trước dòng <b:loop values='data:post.comments' var='comment'>. Tùy theo cách đặt tên của người thiết kế Template mà id này có thể có tên khác nhau ví dụ: comments-block, comments-block3, comments_block, cm_block, commentsblock …

    • 2 Sau khi cài đặt thủ thuật này, bạn cần cập nhật lại thủ thuật Chèn biểu tượng cảm xúc vào nhận xét dạng input để tạo sự thống nhất.

No comments:

Post a Comment