Thứ Năm, 22 tháng 3, 2012

BlogSpot cải thiện tính năng SEO cho blog

Maphim.Net | Xem phim Online, xem phim han, phim 47, tron boBlogger hôm nay đã cập nhật nhiều tính năng SEO mới cho Blogger. Phải tranh thủ xem qua mới rõ hết được, có lẽ giao diện blog cũ sẽ không được nâng cấp thêm. Các bạn hãy vào giao diện Blog mới để thiết kế tuỳ chỉnh. Địa chỉ giao diện mới tại đây.
Một số điểm mới có thể kể ở đây, cụ thể là :

 1. Thẻ mô tả 

   - Tuy đã được hỗ trợ trong phần cài đặt chính nhưng nó vẫn được gom nhóm vào phần tìm kiếm chung cho blog của bạn. Hãy bật nó lên lần nữa nhé.

 2. Lỗi và chuyển hướng

    -  Bạn đã có thể tạo thông báo lỗi bằng các đoạn mã, hay ảnh hiển thị.
    -  Tính năng chuyển hướng mới đã được cải thiện, giờ bạn có thể dùng javascript để tạo thêm các link cho mình. Một các hack tag SEO cho blog, mình sẽ sớm công bố tiện ích này, gộp chung nó vào phần tìm kiếm theo tag, keywords của từ khoá.


Maphim.Net | Xem phim Online, xem phim han, phim 47, tron bo

   -  Mọi người có thể check thử link sau : .. sieuluoi, bạn sẽ nhận được thông báo Rất tiếc, trang bạn đang tìm trong blog này không tồn tại. Nhưng với vài thủ thuật nhỏ ta sẽ biến nó thành một phần của Blog, như một Website hoàn thiện, hay đúng hơn là hoàn thiện.

Maphim.Net | Xem phim Online, xem phim han, phim 47, tron bo

3. Robots.txt và tuỳ chỉnh tìm kiếm của Robots.txt.

  - Với dự án mở của Blogger này ta có thể mở phần /search bị đóng lâu nay của Blogger.

User-agent: * Disallow: /search == > Allow: /search
Allow: /
 -  Chưa biết có thăng thêm index lên Google không nhưng mình tin là có.
-  Tuỳ chỉnh các thẻ meta robots mà không cần mó tay vào code temp blog.


Maphim.Net | Xem phim Online, xem phim han, phim 47, tron bo

Kết chung lại,  blogger đang càng ngày càng thân thiện với người dùng, trong năm tới và kể cả ngay về sau này nó còn tiếp tục miễn phí không thì mình không đoán được. Chỉ biết bay giờ mình yêu BlogSpot, một thứ ngon bổ rẻ.

Thứ Hai, 19 tháng 3, 2012

Share ANCTemp_Tivi & Data 60 Channel

Temp ANCTemp_Tivi này mình tự làm, hôm nay gửi đến mọi người .. Hì.. Template này có 3 tiện ích chính, đó là dùng phím tắt, vì lười thò chân thò tay vào chuột ngày đông, cầm cái bút hay thước kẻ thò ra ngoài chân ấn phím. =))



 Sử dụng temp này nhé:
 
     = > Các bạn tìm đoạn code sau đây : //anc.home , sửa nó thành domain của bạn. Sau đó bạn bỏ dấu // đi nhé.
    = > Widget Home các bạn lấy một bài viết paste vào HTML đó. Tuỳ bạn, thích bài viết nào trong data mình share.
   = > Ấn 1 :  Bật / Tắt đèn . Phím 2 : Phóng lớn / Thu nhỏ .. Phím 3 : Màn ảnh lớn, tương ứng với room max.
 = > Fix lỗi hiện ảnh và logo của tv24.vn với các kênh của SCTV.





< = > Tương lai sẽ làm cho mức độ lười tăng cao hơn, với các phím tắt đa dạng.. Đã là tivi thì phải có Remote chứ. ^^!

Chúc các bạn thành công !

Thứ Sáu, 9 tháng 3, 2012

ANCKeywords - Tự động cập nhập keywords từ người dùng cho site.

Lâu lắm không viết Blog, tại công việc cũng nhiều... Phần vì quá bận, phần vì yêu cầu các bạn riêng rẽ hay không thồng nhất, nên một vài Plugin mình ngừng chia sẻ và phát triển thêm.

Plugin mới này mình cũng mới test thử và hiệu quả cũng rất tốt. Còn về khách quan mà nói, mình không phải một dân chuyên SEM, SEO. Nên kinh nghiệm về SEO và SEM còn hạn chế. Có một pro đã nói plugin này không an toàn với Sanbox của Google, hoặc index từ Google. Do vậy các bạn nên cân nhắc khi sử dụng tool này.



Nói sơ qua về plugin này, nó có thể nói là một công cụ mạnh cho việc tạo và hỗ trợ thêm về từ khoá cho site của bạn. Đôi khi bạn hay phải cập nhật từ khoá hot cho site, nhưng công việc bận rộn, khiến bạn không thể rảnh tay mà cập nhật được. Mình làm tool này mong làm giảm nhẹ việc đó. Tất cả các từ khoá sẽ được cập nhật từ người dùng, các từ khoá tìm kiếm nhiều nhất, hot nhất đều được tự động thêm vào sau mỗi ngày, mỗi giờ, tuỳ vào tuỳ chỉnh của bạn.

Sử dụng như sau:

1. Hãy đăng ký một nick tại đây (có thể coi đây là trang lưu trữ thông tin keywords cho site bạn.)


 2. Đăng nhập vào vào phần chữ đỏ sau để lấy KeyAPI cho site.


Lấy KeyAPI tại đây : các bạn cần phải lấy bao gồm Your secret API key & Your site guid 


3. Sử dụng ANCKeywords để tạo keywords cho site từ KeyAPI lấy được.

Tạo một file js vào cho đoạn mã sau upload lên Google Code.


//Begin code
var aseo = {
tag:"{các từ khoá liên quan đến site bạn, 4 từ, ngăn nhau bởi dấu ,}",num:"",ap:"Tên site hoặc domain",as:'Lời giới thiệu'
}
veo = "{domain},{subdomain}";

function s_write(keysite,keyapi)
{
surl = 'https://api.tynt.com/publisher/v1/keyword/inbound?site_guid='+keysite+'&api_key='+keyapi+'&hours=24&callback=ancseo';
var sr = document.createElement('script');
sr.src = surl;
document.getElementsByTagName('head')[0].appendChild(sr);

sdata = "if(document.location.protocol=='http:'){"
+"var Tynt=Tynt||[];Tynt.push('"+keysite+"');"
+'Tynt.i={"ap":"'+aseo.ap+'","as":"'+aseo.as+'","st":true};'
+"(function(){var s=document.createElement('script');"
+'s.async="async";s.type="text/javascript";'
+"s.src='http://tcr.tynt.com/ti.js';var h=document.getElementsByTagName('script')[0];h.parentNode.insertBefore(s,h);})();}";

var srr = document.createElement('script');
srr.innerHTML = sdata;
document.getElementsByTagName('head')[0].appendChild(srr);

}

function ancseo(x){

num_seo = x.data.length;

for(var i=0; i<num_seo; i++){
veo += x.data[i];
}

var meta = document.createElement('meta');
meta.name = 'keywords';
meta.content = veo.replace(/\,[\d]*/gi,",") + aseo.tag;
document.getElementsByTagName('head')[0].appendChild(meta);

aseo.tag = veo + aseo.tag;

}

function diseo(name,content){

var mt = document.createElement('meta');
mt.name = name;
mt.content = content;
document.getElementsByTagName('head')[0].appendChild(mt);
}
//Endcode

Sau khi tạo xong bạn lấy link và chèn vào phần header đoạn code sau.

<script src="//Link file của bạn"></script>
<script>
/*--- Auto SEO Update Keyword ---*/
s_write('{Your site guid}','{Your secret API key}');
</script>

 Số 24 bạn có thể thay thành các số sau: 1, 8, 12, 24. Đây là thời gian  update keywords cho các bạn.

Kết quả từ sau một đêm của mình các bạn có thể xem và cho nhận xét.


Chúc các bạn thành công !

Thứ Năm, 9 tháng 2, 2012

ANCData - Plugin load feed Blogger version 1

Đây là công cụ đặc biệt, có lẽ rất được nhiều người mong đợi. Công cụ này được mình phát triển khi rip blog. Đôi khi bạn thấy các site của pro (HelloXimo) rip chạy rất nhanh và mượt. Tại sao vậy ? Câu hỏi nằm ở function showrecentposts(json) của js mà nhiều blog vẫn đang dùng. Đây là một hàm lọc feed (hay file .xml) của Blogger. Việc sử dụng feed sẽ đem lại tốc độ cao hơn so với dùng biến có sẵn mà mình đã giới thiệu ở một số bài viết trước.





(ViewSource Demo để xem code)

Nhưng đặc điểm bất tiện của hàm này là với mỗi lần callback showrecentposts trong đoạn script ví dụ sau.



<script src="http://www.maphim.net/feeds/posts/default/-/Phim chiếu rạp?max-results=4&amp;orderby=published&amp;alt=json-in-script&amp;callback=showrecentposts ">
</script>



Ta lại phải đổi tên hàm callback để lấy feed cho một tag mới. Nói khác đi, chúng ta lại phải copy y sì một hàm showrecentposts2, showrecentpost3, showrecentposts4 ...v.vv cho các tag mới.

Vậy, ANCData là gì ? Chắc bạn cũng đoán ra từ VD trên. Nó là một plugin load feed. Nhưng nó chỉ là một hàm callback duy nhất : ancdata. Có vẻ với những ai chưa nghe về load feed sẽ rất khó mường tượng. Nhưng bạn chỉ cần sử dụng ANCData sẽ không cần phải vọc nhiều.


* Thuộc tính. 


title : tiêu đề bài viết.
url : link bài viết.
label: nhãn bài viết.
img: ảnh bài viết
       -  img.f : file ảnh đầu tiên của bài viết kich thươc full khổ.
       -  img.i72: file ảnh mặc định của google nếu bạn up lên, hoặc sử dụng các sản phẩm ảnh của       google.
content: nội dung toàn bộ bài viết.
snippet : nội dung tóm tắt gồm 120 ký tự.
date: ngày tháng năm gửi bài
      - date.d : ngày
      - date.m : tháng
      - date.y : năm

author: tác giả gửi bài viết.


* Sử dụng :

B1: Bạn chỉ cần chèn đoạn mã sau vào sau  thẻ <head> hoặc sau <body>

<script src="http://anhnc.googlecode.com/svn/trunk/ANC/data/feed.js"></script> <script>
            anc.home ="domain của bạn"; //  (mặc định là maphim.net)
            anc.post = sô lượng tối đa ;  // (mặc định là 100)
            anc.img.no = "ảnh hiển thị khi bài viết không có ảnh"; // mặc định là ảnh của maphim.net
</script>

B2: Giờ bạn sẽ sử dụng ANCData một cách dễ dàng.


Giả sử mình muốn tạo ra một module có cấu trúc như hình sau.




Mình chỉ cần viết như sau :

<div class="box">
<h3>Phim hành động mới</h3>
<div class="bcontent">
    <script src="http://www.maphim.net/feeds/posts/default/-/Hành động?max-results=4&amp;orderby=published&amp;alt=json-in-script&amp;callback=ancdata">
    </script>
    <script>
       
        for (var i =0; i< anc.max; i++){
            document.write('<li><a href='+anc.url[i]+'>'+anc.title[i]+'</a></li>');
        }
    </script>
</div>
</div>

Không chỉ dừng ở đó, bạn có thể tạo nhiều tag giống nhau ngoài tag Hành động kể trên, chỉ với một hàm callback duy nhất. Đây chỉ là VD đơn giản sử dụng ANCData, bạn có thể tạo riêng cho mình các modum hợp lý từ các thuộc tính mình đã đưa.

Version 1 chưa áp dụng cho comment. Sẽ tiếp tục phát triển trong các phiên bản sau nếu có thời gian.


Note: Để gọi các biến trong thuộc tính, bạn cần thêm trước anc.thuoctinh
          Muốn lấy một tag trong list tag bạn chỉ cần viết. anc.label.split(',')[vitri tag can lay]

Chúc các bạn thành công !

Chủ Nhật, 5 tháng 2, 2012

Đưa Radio vào Blog của bạn (Yêu cầu)

Đáp ứng yêu cầu của giáo xứ phú giáo, trong nhưng ngày đầu năm này có lẽ anh Dũng cũng bận cho việc ... Va lung tung .. Không có thời gian chăm sóc blog được. Còn riêng mình cũng tung hoành khắp nơi, bận ăn, bận uống bù hết cả đầu. Đọc thấy yêu cầu này phù hợp với khả năng, giúp bạn một chút chút. ..

Maphim.Net | Xem phim Online, xem phim han, phim 47, tron bo



Style CSS :

<style>
    .radio{padding-top: 5px; border: 1px dashed #cccccc; width: 430px; position: fixed; bottom: 20px; right: 0px;}
    li{list-style:none;float:left; margin-left: 10px; padding: 5px;}
    li:hover{background-color: #494949; box-shadow: 1px 0px 3px;}
    li:active{box-shadow: 2px 1px 3px;}
   
    li.p{margin-left:30px; color: green; box-shadow: 2px 0px 3px 1px;}
    li.p:hover{background:none;}
    li.p span{text-decoration:blink;}
   
    a{text-decoration:none; color: #888888; font-size: 12px;}
    #player{margin-top:20px;}
</style>

Đài của mình..
Maphim.Net | Xem phim Online, xem phim han, phim 47, tron bo

<div class="channel">
    <li><a href="javascript:radio('vov1')">VOV1</a></li>
    <li><a href="javascript:radio('vov2')">VOV2</a></li>
    <li><a href="javascript:radio('vov3')">VOV3</a></li>
    <li><a href="javascript:radio('vov4')">VOV4</a></li>
    <li><a href="javascript:radio('vov5')">VOV5</a></li>
    <li id="pl" class="p"></li>
</div>
    <div id="player">Radio23h - Blog Radio, chia sẻ xúc cảm cuộc sống</div>
</div>

JavaScript

<script>
function radio(channel){
    var data = '<embed width="430" height="24" flashvars="&amp;file='+channel+'.flv&amp;streamer=rtmp://123.30.50.46:8080/live&amp;skin=&amp;autostart=true" allowfullscreen="true" allowscriptaccess="always" quality="high" name="mpl" id="mpl" style="undefined" src="http://player.longtailvideo.com/player5.9.swf" type="application/x-shockwave-flash">';
   
    document.getElementById("player").innerHTML = data;
    document.getElementById("pl").innerHTML = channel+" playing<span>...</span>";
    }
radio('vov3');   
</script>


radio('vov3') ==> là đài mặc định bạn chạy đầu tiên.

Chúc các bạn thành công !

Thứ Ba, 24 tháng 1, 2012

Nâng cấp ANCMedia 3.3 - add server.

Đầu năm đầu tháng khai xuân một bài. Chúc mọi người một năm mới đầy sức khoẻ, may mắn, hạnh phúc. Mình về tết cũng rảnh đôi chút, sửa lại cho mọi người tiện add server.. Chứ suốt ngày kêu ca và yêu cầu mình có 3 đầu 6 tay cũng không làm hết được. ^^

Maphim.Net | Xem phim Online, xem phim han, phim 47, tron bo
Mình đã tách riêng làm 2 file js..Mọi người có thể up lên google code. Nhưng để tiện edit các bạn nên down dropbox về và up file server lên đó.

* File server : http://anhnc.googlecode.com/svn/trunk/ANC/3.3/server.js

_Trong file server này gồm 2 phần chính: config và server.

Maphim.Net | Xem phim Online, xem phim han, phim 47, tron bo
 Danh sách id các bạn có thể thay đổi tuỳ ý. Đã có nhiều bạn có host riêng, vì vậy mình đã làm thêm config cho Player, Proxy, Skin...

* File player: http://anhnc.googlecode.com/svn/trunk/ANC/3.3/player.js

_Vẫn là player có sẵn trong site, nhưng nếu dùng file đó để + file server sẽ không còn dùng được.

* Trong site chỉ cần paste 2 file này như sau vào dưới "anc_tp" hoặc </body>. Tốt nhất là dán dưới </body>
<script src="http://anhnc.googlecode.com/svn/trunk/ANC/3.3/server.js"></script>   
<script src="http://anhnc.googlecode.com/svn/trunk/ANC/3.3/player.js"></script>   

== > Phiên bản 3.3 này mình đã cải thiện vấn đề code, các player trước nhìn rất đau mắt, khó cấu hình CSS, nhiều đoạn code HTML bị thừa. Mọi người có thể nhìn vào hình dưới.

 +) ANC_old

Maphim.Net | Xem phim Online, xem phim han, phim 47, tron bo

+) ANC_new


* ) Giờ vẫn đang nghỉ tết nên mình chưa có mạng add server lên site mình, do đó không có demo cho mọi người. Nhưng có thể xem video hướng dẫn tại đây..

*) Các lưu ý mình đã ghi trong file server, các bạn có thể đọc.

Chúc các bạn thành công !

Thứ Ba, 3 tháng 1, 2012

[Updated] K14 - Pro Menu (với hiệu ứng prodown)

Lấy ý tưởng từ việc thực hiện demo cho bài viết Tạo Menu Thanh menu ngang có sổ dọc xuống mình dự định sẽ updated thủ thuật lên bằng việc tạo các giao diện khác nhau cho menu khi xem ở các trang khác nhau, ví dụ như các trang label. Nhưng sau đó mình nhớ đến kênh14 cũng có menu như vậy (chỉ khác là không có dropdown) mà giao diện lại đẹp nữa, nên mình quyết định Rip menu này. Và ở bài này menu sẽ không có hiệu ứng dropdown, mình dự định sẽ thêm hiệu ứng dropdown trong thời gian tới.


Xem DEMO

Hình ảnh minh họa :

Updated: Đã cập nhật hiệu ứng sổ dọc cho menu, các bạn có thể xem ở bên dưới

Do làm biếng design giao diện cho nó, nên mình lấy hình nên bên kênh 14 về rồi fix lại để giới thiệu cho mọi người. Và sau đây là 1 số tính năng của nó :
- Tự động thay đổi giao diện của menu cho các trang định sẵn.
- có hiệu ứng trang hiện hành (current) trên menu.
- có 6 kiểu giao diện cho các lựa chọn để thay đổi.

Sau đây là các bước thực hiện :
- Tạo 1 widget HTML/javascript ở nơi muốn đặt menu (tốt nhất là trên header của blog), sau đó dán đoạn code bên dưới vào :
<style type="text/css">
#promenu ul li a:hover {text-decoration:none;}
#promenu {
background-repeat: repeat-x;
background-image: url(https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjoP45khL8XKsShBgBgC9-jALLlTn2Xe4eLhqiMNWeoTWwKzTYIxWMxroOJp2aq-1CqkHx94QzeqGpgEhdrRZvUZ7OWIFyWCg9Oh-VYN7rJg3nBXlDrqbgq7yIcHBi1VzW21PT_MmsUyz_G/s400/1-6-bg.png);
width: 100%;
height: 32px;
}
.menu {
list-style: none;
width: 100%;
margin: auto!important;
}
.menu li {
float: left;
text-align: center;
padding:0!important;
}
.menu li a {
color: white;
}
.menu .active, .menu li:hover {
background-position: 0 -34px;
float: left;
}
.menu .active span, .menu span:hover {
background-position: 100% -34px;
float: left;
line-height: 30px;
height: 30px;
}
.menu li a span {
font: 12px/31px Tahoma;
font-weight: 700;
display: block;
text-align: center;
padding: 0 8px 0 9px;
}
.menusep {
background-position: 0 0;
height: 32px;
line-height: 32px;
width: 2px;
}
</style>

<script type="text/javascript">
//<![CDATA[
var style1=["0px","https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgrRFYXzkUABokz09sGX3M6iA9NmQIWDZq3rn6X3riA1uHPyL3sTdcaNcAOe7p3YPco8clPe_PWZjFUI0IvbHL_KudRL134nbpsmpOzJI4QEAeEzg_szftzXtY5AVyLdGQbFnINn8aUjHCk/s318/style1-sp.png"];
var style2=["-40px","https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjnj6R3NgnAnEaAsZGcGQVIKAOXBifBCCk12U890zvcaT0ZGJjUU_WYH854wTHgzNVdIX2H07MrzwJtFDyQTjD2rxFv2XI7jE_t4jeTSY6rbrqzSYCBM5-Rv8WFNkYcSEkC4kxp9zYfz04m/s318/style2-sp.png"];
var style3=["-80px","https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjDt4TcQwrsp8nUStJL7Ue-DKzXfeVcpXcoP0sS8uqZo01fFePChzm1-MuWIR48t3ITO6_l3EnY-wr-7pG_QVtsHpGpi7VZ7AtGawcsNk5FtlseTkr8FywQ3UNuzEv66x5F9gF6eQOMdUvE/s318/style3-sp.png"];
var style4=["-120px","https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhVxiHRY4GgSxB-pQuC3a5LqBRrjSr_4B0F994JR9IWkMQ5FkmYbPzQ0DgKOEh3RWePGPYcbxB25u4pySz7YkcbWn70HwEs7oOVSUtj8c-YRRFzMD21zEDvk-JaTffNtCtioc1P8psx16Or/s318/style4-sp.png"];
var style5=["-160px","https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhyY3-mYBDneOEupOaTm8TkP37YAdoScJDjk2-c64eMW85JapQ65Cqus108gXyNlIt3K-I8akoIPfjRx2DeYuhXuSMlZHyn2qKgemtgngd-Zwqu8sGhyO0R27R2u5op-uEVyV_QP1E7WeJr/s318/style5-sp.png"];
var style6=["-200px","https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj6DUvIeffVVmIvOh3MDrMobl30Ld1PLkHmd66FF1jYI_VKoI5gNdlWm9ctI5MNvc9pbjgdl04M0a_ZKeKf5kQw68lrWyux4DitVBESsT2JknvFkNxpK_cBeCOLCnOhMOR7aG67hbBQVBx9/s318/style6-sp.png"];

var m0=["http://demo.fandung.com","Home","home_id"];
var m1=["link_menu1","Menu1","m_id1"];
var m2=["link_menu2","Menu2","m_id2"];
var m3=["link_menu3","Menu3","m_id3"];
var m4=["link_menu4","Menu4","m_id4"];
var m5=["link_menu5","Menu5","m_id5"];
var m6=["link_menu6","Menu6","m_id6"];

var ttmenu = [m0,m1,m2,m3,m4,m5,m6];

var n=ttmenu.length;
var list_menu=[];
var list_active=[];
var c_menu='';
var m_homepage='http://demo.fandung.com';
var h_cond=m_homepage+'/search';

var active_cond = location.href;
var home_cond=active_cond.split("?")[0];

var bg_pos='';
var sp_img='';

if (active_cond.indexOf(ttmenu[1][0])!=-1) {bg_pos=style2[0];sp_img=style2[1];}
else if (active_cond.indexOf(ttmenu[2][0])!=-1) {bg_pos=style3[0];sp_img=style3[1];}
else if (active_cond.indexOf(ttmenu[3][0])!=-1) {bg_pos=style4[0];sp_img=style4[1];}
else if (active_cond.indexOf(ttmenu[4][0])!=-1) {bg_pos=style5[0];sp_img=style5[1];}
else if (active_cond.indexOf(ttmenu[5][0])!=-1) {bg_pos=style6[0];sp_img=style6[1];}
else if (active_cond.indexOf(ttmenu[6][0])!=-1) {bg_pos=style2[0];sp_img=style2[1];}
else {bg_pos=style1[0];sp_img=style1[1];}

var mcss = document.createElement('style');
mcss.type = 'text/css';
mcss.innerHTML = '#promenu {background-position: 0 '+bg_pos+'} .menu li:hover, .menu .active, .menu .active span, .menusep, .menu span:hover {background-image: url('+sp_img+')}';
document.body.appendChild(mcss);

c_menu +='<div id="promenu"><ul class="menu">';

for (var i=0;i<n;i++) {

if ((home_cond==m_homepage)||(home_cond==h_cond)) {list_active[0]='class="active"';}
else if (active_cond.indexOf(ttmenu[i][0])!=-1) {list_active[i]='class="active"';} else {list_active[i]='';}

list_menu[i]='<li><a href="'+ttmenu[i][0]+'" '+list_active[i]+' id="'+ttmenu[i][2]+'"><span>'+ttmenu[i][1]+'</span></a></li>';
c_menu +=list_menu[i];
if (i<n-1) {c_menu +='<li class="menusep"> </li>';}
}
c_menu +='</ul></div>';
document.write(c_menu);

//]]>
</script>

Một vài hướng dẫn :
- Việc đầu tiên là thay http://demo.fandung.com thành tên miền của blog bạn, nhớ là không có dấu (/) theo sau tên miền.
- Để thêm menu, bớt menu, thay đổi tên hiển thị của menu, thay đổi link liên kết của menu,... các bạn chỉnh sửa ở đoạn code như bên dưới :
...
...
var m0=["http://demo.fandung.com","Home","home_id"];
var m1=["link_menu1","Menu1","m_id1"];
var m2=["link_menu2","Menu2","m_id2"];
var m3=["link_menu3","Menu3","m_id3"];
var m4=["link_menu4","Menu4","m_id4"];
var m5=["link_menu5","Menu5","m_id5"];
var m6=["link_menu6","Menu6","m_id6"];

var ttmenu = [m0,m1,m2,m3,m4,m5,m6];
...
...
- http://demo.fandung.com thay bằng địa chỉ trang chủ của blog bạn
- link_menu1, link_menu2, ... là đia chỉ liên kết của các menu.
- Menu1, Menu2, ... là tên hiển thị của các menu.
- nếu muốn thêm nhiều menu nữa thì các bạn thêm code tương tự như bên dưới :
...
...
var m0=["http://demo.fandung.com","Home","home_id"];
var m1=["link_menu1","Menu1","m_id1"];
var m2=["link_menu2","Menu2","m_id2"];
var m3=["link_menu3","Menu3","m_id3"];
var m4=["link_menu4","Menu4","m_id4"];
var m5=["link_menu5","Menu5","m_id5"];
var m6=["link_menu6","Menu6","m_id6"];
var m7=["link_menu7","Menu7","m_id7"];
var m8=["link_menu8","Menu8","m_id8"];


var ttmenu = [m0,m1,m2,m3,m4,m5,m6,m7,m8];
...
...
- để tùy chọn style cho menu ở mỗi trang, các bạn chỉnh sửa ở đoạn code bên dưới :
...
...
if (active_cond.indexOf(ttmenu[1][0])!=-1) {bg_pos=style2[0];sp_img=style2[1];}
else if (active_cond.indexOf(ttmenu[2][0])!=-1) {bg_pos=style3[0];sp_img=style3[1];}
else if (active_cond.indexOf(ttmenu[3][0])!=-1) {bg_pos=style4[0];sp_img=style4[1];}
else if (active_cond.indexOf(ttmenu[4][0])!=-1) {bg_pos=style5[0];sp_img=style5[1];}
else if (active_cond.indexOf(ttmenu[5][0])!=-1) {bg_pos=style6[0];sp_img=style6[1];}
else if (active_cond.indexOf(ttmenu[6][0])!=-1) {bg_pos=style2[0];sp_img=style2[1];}
else {bg_pos=style1[0];sp_img=style1[1];}
...
...
- ttmenu[1][0], ttmenu[2][0], ..., ttmenu[6][0] ; đây là các phần tử trong mảng 2 chiều ttmenu, tương ứng với địa chỉ liên kết của các menu : Menu1, Menu2, ..., Menu6
- ở trên menu0, tức là menu HOME mình cho style mặc định là style1. cùng style với các trang liên kết không có trong menu (ví dụ các trang archive hoặc trang bài viết, ...) , hoặc các liên kết không được chọn style để hiển thị.
- code trên sẽ được hình dung như bên dưới :
Menu0 ------ style1
Menu1 ------ style2
Menu2 ------ style3
Menu3 ------ style4
Menu4 ------ style5
Menu5 ------ style6
Menu6 ------ style2
Trang khác ------ style1
- Nếu muốn thay đổi style cho các trang, các bạn chỉ cần đổi tên style1, style2,... thành các style khác là được. tức là các vị trí trong code bên dưới :
...
...
if (active_cond.indexOf(ttmenu[1][0])!=-1) {bg_pos=style2[0];sp_img=style2[1];}
else if (active_cond.indexOf(ttmenu[2][0])!=-1) {bg_pos=style3[0];sp_img=style3[1];}
else if (active_cond.indexOf(ttmenu[3][0])!=-1) {bg_pos=style4[0];sp_img=style4[1];}
else if (active_cond.indexOf(ttmenu[4][0])!=-1) {bg_pos=style5[0];sp_img=style5[1];}
else if (active_cond.indexOf(ttmenu[5][0])!=-1) {bg_pos=style6[0];sp_img=style6[1];}
else if (active_cond.indexOf(ttmenu[6][0])!=-1) {bg_pos=style2[0];sp_img=style2[1];}
else {bg_pos=style1[0];sp_img=style1[1];}
...
...

- Nếu như có nhiều menu thì các bạn cứ thêm code như bên dưới để chọn style cho nó :
...
...
if (active_cond.indexOf(ttmenu[1][0])!=-1) {bg_pos=style2[0];sp_img=style2[1];}
else if (active_cond.indexOf(ttmenu[2][0])!=-1) {bg_pos=style3[0];sp_img=style3[1];}
else if (active_cond.indexOf(ttmenu[3][0])!=-1) {bg_pos=style4[0];sp_img=style4[1];}
else if (active_cond.indexOf(ttmenu[4][0])!=-1) {bg_pos=style5[0];sp_img=style5[1];}
else if (active_cond.indexOf(ttmenu[5][0])!=-1) {bg_pos=style6[0];sp_img=style6[1];}
else if (active_cond.indexOf(ttmenu[6][0])!=-1) {bg_pos=style2[0];sp_img=style2[1];}
else if (active_cond.indexOf(ttmenu[7][0])!=-1) {bg_pos=style3[0];sp_img=style3[1];}
else if (active_cond.indexOf(ttmenu[8][0])!=-1) {bg_pos=style4[0];sp_img=style4[1];}

else {bg_pos=style1[0];sp_img=style1[1];}
...
...
- lưu ý : ttmenu[7][0], và ttmenu[8][0] là liên kết của các Menu7, và Menu8.
- nếu muốn chỉ 1 trang nào đó có giao diện đặc biệt khác với các trang còn lại (ở đây mình ví dụ là trang Menu1) thì đoạn code ở trên sẽ chỉ còn như bên dưới :
...
...
if (active_cond.indexOf(ttmenu[1][0])!=-1) {bg_pos=style2[0];sp_img=style2[1];}
else {bg_pos=style1[0];sp_img=style1[1];}
...
...
- Đoạn code trên có nghĩa là chỉ có trang Menu1 là có giao diện riêng biệt là Style2, còn các trang khác sẽ có giao diện Style1.

Như vậy mình hướng dẫn đã xong. các bạn cứ test thử, nếu có trục trặc gì mình sẽ fix lại bài viết và cập nhật thêm hướng dẫn.

----- UPDATED -----
K14 - Promenu (với hiệu ứng sổ dọc)
- ở bản update này, mình sẽ cập nhật thêm tính năng thêm submenu cho menu chính. Tính năng này mình kết hợp từ bài viết "Tạo menu nằm ngang với hiệu ứng sổ dọc".
- Để thực hiện việc cập nhật này, các bạn phải xem lại bài viết Tạo Menu Thanh menu ngang có sổ dọc xuống

Xem DEMO

Hình ảnh minh họa :

- Sau đây là code mẫu của thủ thuật đã updated, các bạn thực hiện theo hướng dẫn của bài này và bài Tạo Menu Thanh menu ngang có sổ dọc xuống để có thể chỉnh sửa lại từ code mẫu :
<script src="http://fandung.googlecode.com/svn/trunk/js/dropdown2.js" type="text/javascript"></script>

<style type="text/css">
#promenu ul li a:hover {text-decoration:none;}
#promenu {
background-repeat: repeat-x;
background-image: url(https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjoP45khL8XKsShBgBgC9-jALLlTn2Xe4eLhqiMNWeoTWwKzTYIxWMxroOJp2aq-1CqkHx94QzeqGpgEhdrRZvUZ7OWIFyWCg9Oh-VYN7rJg3nBXlDrqbgq7yIcHBi1VzW21PT_MmsUyz_G/s400/1-6-bg.png);
width: 100%;
height: 32px;
}
.menu {
list-style: none;
width: 100%;
margin: auto!important;
}
.menu li {
float: left;
text-align: center;
padding:0!important;
}
.menu li a {
color: white;
height:30px;
display:block;
}
.menu .active, .menu li:hover {
background-position: 0 -34px;
float: left;
}

.menu .active span, .menu span:hover {
background-position: 100% -34px;
float: left;
line-height: 30px;
height: 30px;
}

.menu li a span {
font: 12px/31px Tahoma;
font-weight: 700;
display: block;
text-align: center;
padding: 0 8px 0 9px;
}
.menusep {
background-position: 0 0;
height: 32px;
line-height: 32px;
width: 2px;
}
.promenu_sub {
background-repeat: repeat-x;
background-image: url(https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjJZbaK6D1jJqW59xnjAHIfmiRDPeIJ9M13S0pIKvhHUO6shIIEhW8x5I_TujnQGSB4BKJIjKqA3ckc7wwGDQYk3oYfuJs737ZuvopfVjz9qzmxx8PJhp_t7uCj3uI6aVvq7dW4WucEWm-H/s240/1-6-bg_sub2.png);
margin-top:1px;
padding:1px;
color: #fff;;
margin: 1 1px;
padding: 7px 12px;
font-weight:bold;
font-family:Arial, Helvetica, sans-serif;
font-size:12px;
cursor:pointer;
border-top:1px solid #ededed;
}
</style>

<script type="text/javascript">
//<![CDATA[
var style1=["0px","https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgrRFYXzkUABokz09sGX3M6iA9NmQIWDZq3rn6X3riA1uHPyL3sTdcaNcAOe7p3YPco8clPe_PWZjFUI0IvbHL_KudRL134nbpsmpOzJI4QEAeEzg_szftzXtY5AVyLdGQbFnINn8aUjHCk/s318/style1-sp.png"];

var style2=["-40px","https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjnj6R3NgnAnEaAsZGcGQVIKAOXBifBCCk12U890zvcaT0ZGJjUU_WYH854wTHgzNVdIX2H07MrzwJtFDyQTjD2rxFv2XI7jE_t4jeTSY6rbrqzSYCBM5-Rv8WFNkYcSEkC4kxp9zYfz04m/s318/style2-sp.png"];

var style3=["-80px","https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjDt4TcQwrsp8nUStJL7Ue-DKzXfeVcpXcoP0sS8uqZo01fFePChzm1-MuWIR48t3ITO6_l3EnY-wr-7pG_QVtsHpGpi7VZ7AtGawcsNk5FtlseTkr8FywQ3UNuzEv66x5F9gF6eQOMdUvE/s318/style3-sp.png"];

var style4=["-120px","https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhVxiHRY4GgSxB-pQuC3a5LqBRrjSr_4B0F994JR9IWkMQ5FkmYbPzQ0DgKOEh3RWePGPYcbxB25u4pySz7YkcbWn70HwEs7oOVSUtj8c-YRRFzMD21zEDvk-JaTffNtCtioc1P8psx16Or/s318/style4-sp.png"];

var style5=["-160px","https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhyY3-mYBDneOEupOaTm8TkP37YAdoScJDjk2-c64eMW85JapQ65Cqus108gXyNlIt3K-I8akoIPfjRx2DeYuhXuSMlZHyn2qKgemtgngd-Zwqu8sGhyO0R27R2u5op-uEVyV_QP1E7WeJr/s318/style5-sp.png"];

var style6=["-200px","https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj6DUvIeffVVmIvOh3MDrMobl30Ld1PLkHmd66FF1jYI_VKoI5gNdlWm9ctI5MNvc9pbjgdl04M0a_ZKeKf5kQw68lrWyux4DitVBESsT2JknvFkNxpK_cBeCOLCnOhMOR7aG67hbBQVBx9/s318/style6-sp.png"];

var m0=["http://demo.fandung.com","Home","home_id"];
var m1=["/search/label/Label1","Label1","id1"];
var m2=["/search/label/Label2","Label2","id2"];
var m3=["/search/label/Label3","Label3","id3"];
var m4=["/search/label/Label4","Label4","id4"];
var m5=["/search/label/Label5","Label5","id5"];
var m6=["/search/label/Label6","Label6","id6"];
var m7=["/search/label/Label7","Label7","id7"];
var m8=["/search/label/Label8","Label8","id8"];
var m9=["/search/label/Label9","Label9","id9"];

var ttmenu = [m0,m1,m2,m3,m4,m5,m6,m7,m8,m9];
var n=ttmenu.length;
var list_menu=[];
var list_active=[];
var c_menu='';
var m_homepage='http://demo.fandung.com/';
var h_cond=m_homepage+'search';

var active_cond = location.href;
var home_cond=active_cond.split("?")[0];

var bg_pos='';
var sp_img='';

if (active_cond.indexOf(ttmenu[1][0])!=-1) {bg_pos=style2[0];sp_img=style2[1];}
else if (active_cond.indexOf(ttmenu[2][0])!=-1) {bg_pos=style3[0];sp_img=style3[1];}
else if (active_cond.indexOf(ttmenu[3][0])!=-1) {bg_pos=style4[0];sp_img=style4[1];}
else if (active_cond.indexOf(ttmenu[4][0])!=-1) {bg_pos=style5[0];sp_img=style5[1];}
else if (active_cond.indexOf(ttmenu[5][0])!=-1) {bg_pos=style6[0];sp_img=style6[1];}
else if (active_cond.indexOf(ttmenu[6][0])!=-1) {bg_pos=style2[0];sp_img=style2[1];}
else if (active_cond.indexOf(ttmenu[7][0])!=-1) {bg_pos=style3[0];sp_img=style3[1];}
else {bg_pos=style1[0];sp_img=style1[1];}

var mcss = document.createElement('style');
mcss.type = 'text/css';
mcss.innerHTML = '#promenu, .promenu_sub {background-position: 0 '+bg_pos+'} .menu li:hover, .menu .active, .menu .active span, .menusep, .menu span:hover {background-image: url('+sp_img+')}';
document.body.appendChild(mcss);

// submenu
function otab(){document.write('<table border="0" bordercolor="#999" style="background-color: #FFF" cellspacing="0" cellpadding="0">');}

function submn(submn_link,submn_text){ document.write('<tr><td onmouseover="this.style.background=\'url(https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjoP45khL8XKsShBgBgC9-jALLlTn2Xe4eLhqiMNWeoTWwKzTYIxWMxroOJp2aq-1CqkHx94QzeqGpgEhdrRZvUZ7OWIFyWCg9Oh-VYN7rJg3nBXlDrqbgq7yIcHBi1VzW21PT_MmsUyz_G/s400/1-6-bg.png) repeat-x 0 '+bg_pos+'\'" onmouseout="this.style.background=\'url(https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjJZbaK6D1jJqW59xnjAHIfmiRDPeIJ9M13S0pIKvhHUO6shIIEhW8x5I_TujnQGSB4BKJIjKqA3ckc7wwGDQYk3oYfuJs737ZuvopfVjz9qzmxx8PJhp_t7uCj3uI6aVvq7dW4WucEWm-H/s240/1-6-bg_sub2.png) repeat-x 0 '+bg_pos+'\'" class="promenu_sub" onclick="window.location.href=\''+submn_link+'\'">'+submn_text+'</td></tr>');}

function ctab(){document.write('<\/table>');}

function otab(child_id){document.write('<table id="' + child_id +'" border="0" bordercolor="#999" style="background-color: #FFF" cellspacing="0" cellpadding="0">');}

//submenu

c_menu +='<div id="promenu"><ul class="menu">';

for (var i=0;i<n;i++) {

if ((home_cond==m_homepage)||(home_cond==h_cond)) {list_active[0]='class="active"';}
else if (active_cond.indexOf(ttmenu[i][0])!=-1) {list_active[i]='class="active"';} else {list_active[i]='';}

list_menu[i]='<li><a href="'+ttmenu[i][0]+'" '+list_active[i]+' id="'+ttmenu[i][2]+'"><span>'+ttmenu[i][1]+'</span></a></li>';
c_menu +=list_menu[i];
if (i<n-1) {c_menu +='<li class="menusep"> </li>';}
}
c_menu +='</ul></div>';
document.write(c_menu);

//]]>
</script>

<script type="text/javascript">
otab("id1_child");
submn('link_submenu1.1','Submenu 1.1');
submn('link_submenu1.2','Submenu 1.2');
ctab();
at_attach("id1", "id1_child", "hover", "y", "pointer");

otab("id2_child");
submn('link_submenu2.1','Submenu 2.1');
ctab();
at_attach("id2", "id2_child", "hover", "y", "pointer");

otab("id3_child");
submn('link_submenu3.1','Submenu 3.1');
ctab();
at_attach("id3", "id3_child", "hover", "y", "pointer");

otab("id4_child");
submn('link_submenu4.1','Submenu 4.1');
submn('link_submenu4.2','Submenu 4.2');
submn('link_submenu4.3','Submenu 4.3');
submn('link_submenu4.4','Submenu 4.4');
submn('link_submenu4.5','Submenu 4.5');
submn('link_submenu4.6','Submenu 4.6');
ctab();
at_attach("id4", "id4_child", "hover", "y", "pointer");

otab("id5_child");
submn('link_submenu5.1','Submenu 5.1');
submn('link_submenu5.2','Submenu 5.2');
ctab();
at_attach("id5", "id5_child", "hover", "y", "pointer");

otab("id6_child");
submn('link_submenu6.1','Submenu 6.1');
ctab();
at_attach("id6", "id6_child", "hover", "y", "pointer");

otab("id7_child");
submn('link_submenu7.1','Submenu 7.1');
submn('link_submenu7.2','Submenu 7.2');
submn('link_submenu7.3','Submenu 7.3');
ctab();
at_attach("id7", "id7_child", "hover", "y", "pointer");

otab("id8_child");
submn('link_submenu8.1','Submenu 8.1');
submn('link_submenu8.2','Submenu 8.2');
submn('link_submenu8.3','Submenu 8.3');
submn('link_submenu8.4','Submenu 8.4');
submn('link_submenu8.5','Submenu 8.5');
submn('link_submenu8.6','Submenu 8.6');
submn('link_submenu8.7','Submenu 8.7');
ctab();
at_attach("id8", "id8_child", "hover", "y", "pointer");
</script>
- bản updated vẫn chưa hoàn thiện ở phần hiện hiệu ứng thay đổi style cho menu ở các trang submenu, mình sẽ fix sớm khi có thể.