Thứ Hai, 24 tháng 1, 2011

Tìm hiểu các thẻ Meta của Blogger

blogger meta tags
Meta Tag là thẻ chứa các thông tin về trang web mà các bộ máy tìm kiếm và một số dịch vụ mạng dựa vào đó để đánh giá nội dung và khai thác chúng. Các thủ thuật về SEO hầu hết đều ưu tiên cho việc tối ưu thẻ Meta. Đôi khi bạn "táy máy" View Page Source một trang blogspot, thứ đầu tiên đập vào mắt bạn chắc chắn là các thẻ Meta của Blogger. Vậy chúng có ý nghĩa gì ?




Blogger mặc định tự động khởi tạo tất cả các thẻ Meta cần thiết cho blog của bạn thông qua dòng mã <b:include data='blog' name='all-head-content'/>. Khi bạn tạo một blog thì các thông tin như tiêu đề, mô tả... đều được chuyển thành dạng mã mà bạn có thể thấy được khi xem source.

Dòng đầu tiên có thể là
   <meta content='text/html; charset=UTF-8' http-equiv='Content-Type'/>
Thẻ này chỉ ra rằng trang web mà bạn đang xem là kiểu HTML và các kí tự trên đó sử dụng kiểu mã hóa UTF-8.

Tiếp theo, bạn sẽ thấy:
   <meta content='blogger' name='generator'/>
Thẻ này khai báo rằng trang web dùng mã nguồn Blogger của Google.

Tiếp nữa:
   <meta content='true' name='MSSmartTagsPreventParsing'/>
MSSmartTags mà phần mở rộng gây tranh cãi trên trình duyệt IEMicrosoft đã đề xuất trước đây. Ý tưởng của nó là thế này: khi bạn truy cập một trang web, IE sẽ tự động scan các từ, cụm từ nhất định và làm nổi bật chúng rồi kết nối tới một mạng lưới website, mà ai cũng biết là cây nhà lá vườn MSN Advertisers (giống y như kiểu Infolinks). Do vậy, thẻ MSSmartTagsPreventParsing được sinh ra để ngăn chặn thứ dở hơi này, tuy vậy IE6 sẽ không thực hiện MSSmartTagsPreventParsing.

   <link href='favicon.ico' rel='icon' type='image/vnd.microsoft.icon'/>
Dòng này chắc chắn là link Favicon của Blogger

   <link href='...' rel='canonical'/>
Trước hết thì ta phải hiểu một canonical page là gì, nó là một trang trong website mà được ưu tiên trong số nhiều trang khác mà có nội dung gần giống nhau. Ví dụ như một trang bán hàng liệt kê một lô sản phẩm cùng loại chẳng hạn, nó có thể được liệt kê theo giá hoặc theo alphabe nhưng nhìn chung đều có nội dung là "mặt hàng này". Thuật toán của Google sẽ lựa chọn một trang được coi là tốt nhất để index. Người làm web có thể chỉ định một page trong website của mình là một trang được ưu tiên trong số nhiều trang có cùng nội dung bằng cách thêm rel='canonical' và trang đó sẽ được ưu tiên trong kết quả tìm kiếm trên Google. Thật may mắn là thuộc tính canonical này được tự động chèn vào link Blogger.

   <link rel='alternate' type='application/atom+xml' title='Atom' href='/feeds/posts/default' />
   <link rel='alternate' type='application/rss+xml" title='RSS' href='/feeds/posts/default?alt=rss' />

Hai dòng này qui định địa chỉ RSS và Atom của blog

   <link rel='openid.server' href='http://www.blogger.com/openid-server.g' />
Đây là link mà Blogger dùng để xác nhận OpenID dựa theo link blog

Hai dòng cuối cùng:
   <link rel='service.post' type='application/atom+xml' title='Atom' href='http://www.blogger.com/feeds/.../posts/default' />
   <link rel='EditURI' type='application/rsd+xml' title='RSD' href='http://www.blogger.com/rsd.g?blogID=...' />

Hai link này để chỉ đích cho các ứng dụng Atom, giúp các ứng dụng của hãng thứ 3 xác định được Atom API để khai thác, chúng cũng là một thành phần của head-tag nhưng không thuộc meta tag

Ngoài ra, trong head content bạn có thể thấy một số đoạn script như thế này:
   <script type='text/javascript'>(function() { var a=window;function ....attachEvent('onscroll',k);})();</script>
Script này qui định feed link cho phần comment của Blogger, nếu không có nó thì tiện ích Recent Comments sẽ không hoạt động, và không có avatar trong phần comment của blog.

   <link rel='stylesheet' type='text/css' href='http://www.blogger.com/dyn-css/authorization.css...'/>
Nếu thiếu cái này thì không thể sử dụng tính năng chỉnh sửa nhanh trên blog khi đăng nhập bằng tài khoản admin.

   <!--[if IE]> <script> (function() { var html5 = ...</script> <![endif]-->
Đoạn script này thì chủ blog cũng không biết nó có tác dụng gì (ai biết thì giải thích hộ)

Trên là toàn bộ các Meta Tags sẽ xuất hiện trong phần head của blogspot khi view source code. Có một số thủ thuật về SEO mà áp dụng được trên các thẻ meta này, có lẽ sẽ có thêm một bài về vấn đề này trong thời gian tới.

Chủ Nhật, 23 tháng 1, 2011

Ẩn / hiện Chat Box (Ver 2)

chat box v2
Hôm nay lang thang trên Google thì tìm được đoạn code ẩn / hiện chat box khá hay.


Code này có thêm hiệu ứng smooth khá ấn tượng nhưng lại hoàn toàn không dùng đến Jquery hay Mootools, cho nên có thể yên tâm về vấn đề tốc độ. Mình có thiết kế thêm cái button.



Sau đây là code của Chat Box V2 (chèn phía trên thẻ </body>)
<style type='text/css'>
.gb_fixed{position:fixed;top:30px;right:0px;z-index:+10;}
* html .gb_fixed {position:relative;}
#hidden_gb2 {
display:none;
border:4px solid #bf3989;
-webkit-border-radius:5px;
-moz-border-radius:5px;
border-radius:5px;
background:#fff;
padding:0 3px 3px 3px;
}
</style>
<div class='gb_fixed'>
<table cellpadding='0' cellspacing='0' id='hidden_gb2'>
<tr><td><div><a href='javascript:void(0)' onclick='gb_showHideGB()'><b><center>[ Đóng Chat Box ]</center></b></a></div>

Code Shoutbox/Cbox

</td></tr></table></div>
<script type='text/javascript'>
//<![CDATA[
var gb_obj = document.getElementById("hidden_gb2");
var gb_finish = false;

function gb_setInitBehaviour(){
gb_obj.isHidden = true;
gb_setOpacity(gb_obj, "0.01");
}
function gb_setOpacity(obj, opacity){
opacity = opacity.substr(0, 4);
obj.style.opacity = opacity;
obj.style.filter = "alpha(opacity="+(Math.floor(parseFloat(opacity)*100)).toString()+")";
//writex(opacity);
}
function gb_showGB(){
gb_obj.style.display = "block";
gb_changeOpacityTo(1, "");
gb_obj.isHidden = false;
}
function gb_hideGB(){
gb_changeOpacityTo(0.01, "gb_obj.style.display = \"none\"");
gb_obj.isHidden = true;
}
function gb_changeOpacityTo(fin, funcStr){
var init = parseFloat(gb_obj.style.opacity.substr(0, 4));
var d = init <= 0.2 ? 0.04 : init <= 0.6 ? 0.08 : 0.20;
var m = fin>init ? 1 : -1;
var opacity = init + d * m;
if((fin-opacity)*(fin-init)<0){opacity = fin;}
gb_setOpacity(gb_obj, opacity.toString());
if(opacity != fin){setTimeout("gb_changeOpacityTo("+fin.toString()+", '"+funcStr+"')", 50);}
else{eval(funcStr);}
}
function gb_showHideGB(){
if(gb_obj.isHidden){gb_showGB();}
else{gb_hideGB();}
}
function writex(str){
document.getElementById("wx").innerHTML += str + " ";
}
gb_setInitBehaviour();
//]]>
</script>

<div class='gb_fixed' style='z-index:+5'>
<a href='javascript:void(0)' onclick='gb_showHideGB()'>
<img border='0' src='https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgyFBwoArvf-4O290x4Vq6kgJr33I4Vc3XKlNLlTGmTaDjO9jdwQ9IGdPT4Y71eGMjZcKwgap5vm1CSQ1vqx1vb17PympN9cjtrHIVqE0eLPfwvB2L5ayRYem_9yw7fTLSpZS-jXbg_bRw/s1600/cbutton.png'/>
</a></div>

Do không biết ai là tác giả đoạn code nên ở đây không ghi nguồn.

Thứ Năm, 20 tháng 1, 2011

Nâng cấp search box của Blogspot

CSE for blogspot
Search box mặc định của blogspot vốn rất hạn chế, chỉ search phần tiêu đề là chính. Ta có thể thay thế bằng tiện ích Tìm kiếm tùy chỉnh (Google Custom Search) do Google cung cấp, thế nhưng tiện ích này cũng không thể tùy biến giao diện được. Vì vậy lần này Noct sẽ hướng dẫn cách nâng cấp search box có được tính năng Custom Search của Google mà vẫn giữ nguyên thiết kế chuẩn của template.


Demo bạn có thể xem ở ngay chính blog này. Thủ thuật này mình thấy ở itechplus.info nhờ "view-source đại pháp" ^^.

cse for blogspot

Đầu tiên hãy đăng nhập vào Blogger rồi tạo một công cụ tìm kiếm tùy chỉnh ở đây. Điền đầy đủ thông tin, chọn url là địa chỉ website của bạn. Cuối cùng, ta sẽ nhận được một đoạn mã, trong đó có một dòng như thế này:
.CustomSearchControl('001194051199720490924:uaqar0jwvq4');
Đoạn mã màu đỏ sẽ khác đối với mỗi website, đây chính là cái chúng ta cần, hãy copy nó.

Tiếp theo, vào phần chỉnh sửa HTML của template, tìm đoạn code của search box, nó trông tương tự như thế này :
<div id='search'>
<form action='/search' id="searchform' method='get'>
<input name='q' size='30' type='text' value='' />
</form>
</div>

Đoạn code trên có thể khác đôi chút tùy template, thay thế đoạn màu xanh ở trên bằng đoạn mã sau:
<form action='/p/search.html' id='searchform'>
<input name='cx' type='hidden' value='001194051199720490924:uaqar0jwvq4'/>
<input name='cof' type='hidden' value='FORID:10'/>
<input name='ie' type='hidden' value='UTF-8'/>

Dòng màu đỏ chính là đoạn mã của Google Custom Search mà chúng ta đã ghi nhớ.

Bước cuối cùng, tạo một static page (trang tĩnh) mới, đặt tên nó là search. Link của nó sẽ có dạng ...blogspot.com/p/search.html

Trong Page này bạn không đăng nội dung gì cả, hãy chuyển qua phần HTML của Page và chèn tiếp đoạn code sau:
<div id="cse-search-results"></div>
<script type="text/javascript">
var googleSearchIframeName = "cse-search-results";
var googleSearchFormName = "cse-search-box";
var googleSearchFrameWidth = 600;
var googleSearchDomain = "www.google.com";
var googleSearchPath = "/cse";
</script>
<script src="http://www.google.com/afsonline/show_afs_search.js" type="text/javascript">
</script>

Click xuất bản trang. Đoạn mã trên chính là một iframe hiển thị nội dung của Custom Search. Vậy là gần như đã xong. Chúng ta dùng CSS để điều chỉnh kích thước của iframe này cho phù hợp với template, ở đây mình set width là 600px:
#cse-search-results iframe{width:580px}
Chúc bạn có một search box như ý.

Thứ Ba, 18 tháng 1, 2011

Một số cách tăng tốc Blogspot

Speed-up Blogspot
Hiện nay xuất hiện khá nhiều blog chủ đề về tin tức hoặc giải trí sử dụng mã nguồn Blogger nhưng có vẻ như chưa được tối ưu hóa nên tốc độ tải trang có vẻ "không được nhanh", điều này không những gây khó chịu cho độc giả mà còn ảnh hưởng tới SEO. Vì vậy Noct muốn chia sẻ một số thủ thuật nhằm tăng tốc độ load trang web trên Blogspot với kinh nghiệm có được.

Trước khi thực hiện các tip này bạn nên save lại mẫu template của mình để có gì còn hồi phục lại được nếu chẳng may không thành công.

1/ Tối ưu CSS: nếu template của bạn có mã CSS quá dài thì nên làm điều này, còn không thì cứ để vậy cũng được. Bạn có thể vào địa chỉ này để nén code CSS lại, tốc độ sẽ được cải thiện.

2/ Tối ưu hình ảnh: các weblog về tin tức- giải trí chứa nhiều hình ảnh sẽ gây chậm blog, vì vậy hãy sử dụng định dạng JPG cho tất cả các image. Không nên copy link các hình ảnh trên website khác quá nhiều mà hãy tự upload chúng lên host riêng ví dụ như photobucket, mình thì thường up lên Picasa. Ngoài ra còn có một số software giúp nén hình ảnh mà vẫn giữ nguyên chất lượng ví dụ như Advanced JPEG Compressor. 

Thử test chương trình này thì được kết quả như sau (cả hai ảnh đều ở định dạng JPG):


      13Kb     ->             400%         ->        3Kb

Bạn có nhận ra được sự suy giảm chất lượng hình ảnh ? Tôi thì không. Software này đặc biệt hữu ích với các web có nhiều hình ảnh (truyện tranh).

3/ Tối ưu javascript: thông thường thì ta không nên chèn quá nhiều script vào template bởi gây chậm đáng kể, tuy nhiên nếu điều đó là bất khả kháng thì vẫn có một số cách để tăng tốc. Chúng ta có thể chèn thẳng code trong file .js vào trong template bằng cách dùng thẻ
<script type='text/javascript'>//<![CDATA[
code
//]]></script>

Tuy nhiên cũng cần chú ý với cách này, tuy nó có tăng tốc độ load trang web nhưng lại ảnh hưởng đến SEO. Sở dĩ nói vậy là vì Google không mặn mà lắm với các trang web có phần code HTML quá dài dòng và người chịu thiệt hại sẽ là bạn. Nếu ta sử dụng các liên kết tới file .js thì sẽ giảm được khả năng này. Vì vậy mình khuyên chỉ nên chèn các đoạn script có dung lượng < 10KB, và bạn cũng có thể nén nó lại bằng cách truy cập địa chỉ này (lưu ý là không phải lúc nào cũng nén thành công). Nên chèn script vào cuối phần code của template nếu được, càng sát thẻ </body> càng tốt.

Một đoạn script không nhất thiết phải được load ở tất cả các trang trên blog. Ví dụ: trang web của bạn có một slider ở trang chủ sử dụng hiệu ứng jquery. Vậy jquery có còn cần thiết ở trang đọc bài (không có slider) không ? Tất nhiên là không, ta sẽ sử dụng câu lệnh sau để loại bỏ sự phiền hà này:
<b:if cond='data:blog.url == data:blog.homepageUrl'>
<script src='jquery.js' type='text/javascript'/>
</b:if>

Ở trên chỉ là ví dụ, hãy áp dụng cách này cho các script khác như related posts hoặc page-navigation chẳng hạn.

4/ Hạn chế sử dụng các tiện ích bên ngoài như Linkwithin, DISQUS, Facebook Fanpage... tuy rất tiện lợi nhưng chúng gây chậm rõ rệt, và SEO tệ hại.

5/ Hiện nay Blogger đã hỗ trợ tính năng readmore (đọc thêm), nhưng khả năng tùy biến của nó là chưa cao, và đa số chúng ta vẫn thường dùng Auto-readmore script bởi đẹp và tiện lợi. Tuy nhiên đây cũng chính là nguyên nhân gây chậm, bởi vì không như readmore của Blogspot, toàn bộ nội dung của bài đăng (tất cả hình ảnh) vẫn được load ở trang chủ, nó chỉ là bị ẩn đi thôi.

Thậm chí nếu số hình ảnh là quá lớn thì sẽ xảy ra tình trạng mất bài ở trang chủ. Mình khuyên là không nên dùng script auto, bạn có thể tham khảo thủ thuật auto-readmore không dùng javascript để khắc phục lỗi này.

Thứ Hai, 17 tháng 1, 2011

Dropbox - Một dịch vụ hosting miễn phí và chất lượng

dropbox
Nếu đã từng áp dụng một số thủ thuật có sử dụng các file javascript trên blogspot thì chắc hẳn bạn phải cần đến một dịch vụ file hosting. Mình thường dùng Google Code để lưu trữ các file .js, thế nhưng vào một ngày xấu trời thì tài khoản Google Code của mình đã bị block do quá lạm dụng (vì thực chất đây là dịch vụ chỉ dành cho các nhà phát triển web). Ngoài ra, host ở Google Sites cũng không thể sử dụng trên custom domain.



Sau đôi lần bôn ba tìm host mới thì mình tình cờ biết tới Dropbox - một dịch vụ lưu trữ và chia sẻ tập tin thuộc hàng nổi tiếng nhất hiện nay. Tuy gói free của nó chỉ được 2GB storage và bandwidth 10GB / ngày nhưng như vậy là quá đủ đối với một blog. Tốc độ download/upload khá nhanh và ổn định. Link hoàn toàn là direct.

dropbox

Sau khi đăng kí một tài khoản trên trang chủ, bạn tiếp tục download chương trình Dropbox tại đây. Tiến hành cài đặt và log in bằng tài khoản vừa đăng kí. Một folder mới tên là DROPBOX sẽ được tự động khởi tạo, trong folder này có thêm 2 thư mục con khác là Photos và Public. Bạn có thể upload bất kì thứ gì lên server của Dropbox bằng cách copy nó vào thư mục Public, đợi một lúc rồi click chuột phải vào file và chọn Copy Public Link để lấy link sử dụng. Khi muốn cập nhật file js thì chỉ việc mở Dropbox và copy đè lên file cũ, rất nhanh và tiện lợi.

Mình giới thiệu dịch vụ này một phần là vì nó có liên quan đến các bài viết sắp tới. Hy vọng Dropbox có ích cho bạn.

Chủ Nhật, 16 tháng 1, 2011

Trình diễn ảnh chuyên nghiệp với prettyPhoto

prettyphoto
Trong quá trình tìm hiểu các theme Wordpress mới thì mình có để ý là các designer thường sử dụng một plugin của jQueryprettyPhoto cho các theme của họ để trình diễn ảnh.

Đây là một dạng lightbox nhưng có nhiều chức năng hơn như hiển thị cả video và flash. Trang web của bạn sẽ trở nên chuyên nghiệp hơn nếu sử dụng plugin này. Muốn biết nó như thế nào thì bạn click vào hình ở dưới:


Kiểu default
prettyPhoto Example

Hiển thị dạng gallery:

GalleryGalleryGallery

Trình diễn Video:

Để sử dụng được plugin này trên blogspot thì trước tiên bạn phải tắt hiệu ứng ảnh mặc định của Blogger, vào phần Cài đặt -> Định dạng rồi tìm và chọn như sau:


Save lại, tiếp tục vào phần chỉnh sửa HTML rồi chèn đoạn code sau phía trên thẻ </body>
<link href='http://www.no-margin-for-errors.com/wp-content/themes/NMFE/css/prettyPhoto.css' media='screen' rel='stylesheet' type='text/css'/>
<script src='http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js' type='text/javascript'/>
<script src='http://www.no-margin-for-errors.com/wp-content/themes/NMFE/js/jquery.prettyPhoto.js' type='text/javascript'/>
<script type='text/javascript'>
jQuery("a[rel^='prettyPhoto']").prettyPhoto();
</script>

Sau đó, trong khi đăng ảnh trong bài thì bạn thêm dòng rel="prettyphoto" như thế này:
<a href="image.jpg" rel="prettyphoto"><img src="..."/></a>

Để hiển thị kiểu gallery thì sửa thành rel="prettyPhoto[pp_gal]" , còn muốn xem video thì thay link ảnh image1 thành link dẫn tới video đó, ví dụ như : http://www.youtube.com/watch?v=_EC2tmFVNNE

- Bạn có thể truy cập trang chủ của plugin để xem hướng dẫn sử dụng đầy đủ.
- Nên upload các file css và js lên host riêng.

Thứ Bảy, 15 tháng 1, 2011

Glow Template

glow template
Glow vốn là một theme Wordpress của ElegantThemes , trong một lần rãnh rỗi mình đã thử convert nó sang Blogger, tuy chưa giống 100% nhưng cũng chấp nhận được. Template này thích hợp cho blog cá nhân (chống chỉ định với các trang tin tức) với tiêu chí là đơn giản nhưng đẹp.

Screenshot   |   Xem demo   |   Tải về



Sau khi cài đặt template, để thời gian đăng bài hiển thị chính xác bạn chỉnh lại múi giờ như sau:

Tiện ích dịch ngôn ngữ Jquery Translate cho blogspot

jquery translate
Chắc hẳn bạn đã biết tới tiện ích Google Translate - rất hữu dụng cho các website mà có traffic từ nhiều quốc gia khác nhau. Tiện ích mà mình sắp giới thiệu dưới đây cũng dựa trên công cụ Translate của Google nhưng có kết hợp với Jquery :

Cool ? Toàn bộ trang web đã được dịch sang ngôn ngữ khác mà không phải mở thêm một tab nội dung mới trên trình duyệt. Đặc biệt hơn nữa, ngôn ngữ vẫn được dịch tự động vào các lần truy cập tiếp theo.

Để add tiện ích này vào blog thì bạn tạo một widget HTML/javascript mới rồi paste đoạn code sau vào:
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js" type="text/javascript"></script>
<script src="http://jquery-translate.googlecode.com/files/jquery.translate-1.3.9.min.js" type="text/javascript"></script>
<script type='text/javascript'>//<![CDATA[
jQuery.cookie=function(key,value,options){if(arguments.length>1&&(value===null||typeof value!=="object")){options=jQuery.extend({},options);if(value===null){options.expires=-1;}
if(typeof options.expires==='number'){var days=options.expires,t=options.expires=new Date();t.setDate(t.getDate()+days);}
return(document.cookie=[encodeURIComponent(key),'=',options.raw?String(value):encodeURIComponent(String(value)),options.expires?'; expires='+options.expires.toUTCString():'',options.path?'; path='+options.path:'',options.domain?'; domain='+options.domain:'',options.secure?'; secure':''].join(''));}
options=value||{};var result,decode=options.raw?function(s){return s;}:decodeURIComponent;return(result=new RegExp('(?:^|; )'+encodeURIComponent(key)+'=([^;]*)').exec(document.cookie))?decode(result[1]):null;};
var date=new Date();date.setTime(date.getTime()+(86400*360));$(function(){if($.cookie('lang')=='EN'){lanEN();}
if($.cookie('lang')=='VI'){lanVN();}
if($.cookie('lang')=='ES'){lanES();}
if($.cookie('lang')=='FR'){lanFR();}})
function lanVN(){$('body').translate('vietnamese');$.cookie('lang','VN',{path:'/',expires:date});}
function lanEN(){$('body').translate('english');$.cookie('lang','EN',{path:'/',expires:date});}
function lanES(){$('body').translate('Spanish');$.cookie('lang','ES',{path:'/',expires:date});}
function lanFR(){$('body').translate('French');$.cookie('lang','FR',{path:'/',expires:date});}
//]]></script>
<a href="javascript:void(0)" onclick="lanES()" title="Espanol"><img style="margin-right:5px" alt="Spanish" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh0Y2RepLtU5tVFlMrOyRqFHKcflbzYdItyDDDh-hi0CQ_issORVAMKyBDPIagJ6pnOmhMRo1F1TTqc3XoMb29fqbh8_CandzNR24-e08tFuuZcJ6RW5t87uf_u26noMYY0w4jbXEnZh9Y/s1600/spanish.png" /></a><a href="javascript:void(0)" onclick="lanEN()" title="English"><img style="margin-right:5px" alt="English" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgMAOPE-D-BrVm3oUZBLi8vHDiowK728RJ680_e_j63izcqHReMOe_RkWwapbCb9sSHSiPlAF9U5qPBjTeUkFTsv8_S0LmbeTj-u-J1NZt_bsSQ3UMwTuUgIW3F4FC773A-_aBx9e7ACas/s1600/english.png" /></a><a href="javascript:void(0)" onclick="lanFR()" title="French"><img style="margin-right:5px" alt="French" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgEdJ8iOpAUy7C56Uz9yq_gs9oEe6GjRIjtpfaMm7rbgEiQTGt9uvxKdvft9pfkB3E4IpMM5UPucLZxFBS_TIIapyXlTDavXYYFrO2I2B9TtTFDN8RQOggKkgKyi8bE4MPI6DuUBgMtdUQ/s1600/french.png" /></a><a href="javascript:void(0)" onclick="lanVN()" title="Vietnamese"><img alt="Vietnamese" src="http://lh5.ggpht.com/_rVQLxDFDz0A/TJXxIw-AcOI/AAAAAAAAGqQ/6wL1yekmQls/Vietnam.png" /></a>

Bạn có thể thêm vào một số ngôn ngữ khác mà Google có hỗ trợ bằng cách thay đổi các dòng màu đỏ:
<a href="javascript:void(0)" onclick="lanVN()" title="Vietnamese"><img alt="Vietnamese" src="image.png" /></a>

Happy New Year 2011 !



Nhân dịp Tết Nguyên Đán - Tân Mão 2011, Noct kính chúc toàn thể Blogger một năm mới an khang thịnh vượng, tràn đầy niềm vui và may mắn. Chúc quí bạn bè - những người hay ghé thăm blog tôi, những điều tốt đẹp nhất. Chúc blog của các bạn không ngừng phát triển đổi mới để đóng góp nhiều hơn nữa cho Blogger Việt. Cám ơn bạn đã dành thời gian ghé thăm Noct Blog, những comment của các bạn là niềm vui lớn nhất của tôi.

Tuy còn gần tuần nữa mới Tết nhưng mình đăng bài này trước để "cướp cờ". Bởi hôm nay cũng là ngày về quê ăn Tết cùng gia đình ^_^. Chắc chắn sau Tết, Noct Blog sẽ có thêm nhiều bài "độc" để chém gió cùng anh em.

Khai trương blog !

hello
Cũng đã khá lâu từ kể khi mình bắt đầu làm quen với Blogger, số blog lập ra khá nhiều nhưng không ưng ý lắm, tiếng Anh cũng có, tiếng Việt cũng có. Trong quá trình đó mình đã thu nhặt được rất nhiều kinh nghiệm trong việc xây dựng một trang web trên nền Blogspot, vì vậy mình tự tin mở blog này để chia sẻ những gì đã trải nghiệm được đồng thời cũng muốn giao lưu, học hỏi bốn phương. Hy vọng bạn sẽ thích blog này.


Noct

Vì template đang dùng cho blog được xây dựng chủ yếu trên nền CSS3 nên chống chỉ định với IE8 trở xuống.

Do mới lập nên chắc chắn còn nhiều thiếu sót, mình sẽ rất vui nếu nhận được góp ý của bạn nhằm hoàn thiện blog.