vietnamese Tiếng Việt english English
Hôm nay:

Truy cập Blogspot vô tư khỏi sợ bị chặn

02:16 |
Dùng Open DNS: Open DNS là một DNS Server trung gian, bổ sung thêm các bộ lọc web và giúp bạn tăng cường tốc độ lướt web. Ngoài ra, nhờ qua DNS trung gian này nên bạn sẽ không còn bị chặn nữa. Để sử dụng các máy chủ OpenDNS, bạn sẽ phải thay đổi một chút trong thiết lập máy tính. Nếu đang sử dụng Windows XP, đầu tiên bạn chọn Control Panel --> Network and Internet Connections --> Network Connections, kích chuột phải vào kết nối mạng trong cửa sổ Network Connections, chọn Properties. Hộp thoại như hình dưới xuất hiện


Chọn Internet Protocol (TCP/IP) và kích vào Properties


.
Read more…

Chèn Chabox Gtalk vào BlogSpot.

23:56 |
Nếu site bạn rất nhiều bạn bè có tài khoản Google, tại sao không thử chèn thêm một ChatBox để tăng tình năng trò chuyện kết bạn cho Blog. Việc đơn giản phải làm là bạn chỉ cần nhúng một iframe của Google cho sẵn.





Xem DEMO


Các bạn coppy và cài đặt nhé. Và nhớ chỉnh lại CSS. của mình.


<style>
    #chat{position:fixed; top:0px; left:1px;}
    .bt{background:url('http://cdn1.iconfinder.com/data/icons/androiddevicons/dialog.png') no-repeat; width: 48px; height: 48px;}
    #cbody{border-radius: 3px 10px 0px #444;}
</style>
<div id="chat">
<div class="bt" onclick="toggle()" ></div>
<p id="cbody" style="display:none;">
    <iframe height="350" frameborder="0" width="300" src="http://talkgadget.google.com/talkgadget/client?fid=gtalk0&amp;relay=http%3A%2F%2Fwww.google.com%2Fig%2Fifpc_relay"></iframe>
</p>
</div>
<script>
    var $_ = function(x){return document.getElementById(x);}
   
    function toggle(){
    var ck = $_("cbody").style.display;
        if(ck != "none"){
            $_("cbody").style.display = "none";
        }
        if(ck != "block"){
            $_("cbody").style.display = "block";
        }
    }
</script>


Chúc bạn thành công !
Read more…

Jquery Slider Tin Tức - News Slider

10:44 |

Hẳn nhiều bạn cần slide này... mình đã phát triển phiên bản thumbail cho site phim. Nhưng gà CSS quá nên đắp chiếu, lấy silder của trang tin tức này cho các bạn dùng.



Nói về jquery thì mình cũng chả rành lắm, đến từ jquery viết còn hay nhầm thì các bạn chắc cũng đoán được. Phần slider rip của gostep.info, các bạn có thể vào đó xem.

Xem DEMO

Mình cũng hơi buồn ngủ, các bạn setup luôn nhé.


CSS (Cái này cũng gà lắm, mọi người tự căn chỉnh nhé !)

<style>
ul#ticker {
    font: "Helvetica,Arial";
    height: 26px;
    overflow: hidden;
    text-align: right;
    color: red;
    font-size: 12px;
    line-height: 28px;
    background: #444;
}
ul#ticker strong,ul#ticker strong a {
    color: green;
    font-size: 10px;
    padding-right: 5px;
    text-transform: uppercase;
}
#ticker a {
    text-decoration: none;
}
ul#ticker a {
    color: white;
    text-decoration: none;
}
ul, li {
    list-style: none outside none;
}
ul#ticker .meta-comments a,.meta-sep,.meta-date{
    color: #777777;
}
</style>


Javascript

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
<script src="http://anhnc.googlecode.com/svn/trunk/p/news.js"></script>
<script src="/feeds/posts/default?max-results=12&amp;orderby=published&amp;alt=json-in-script&amp;callback=news"></script>


Phần numberposts (12) có thể unlimit nhé ;))

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

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

05:09 |
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.
.
Read more…

Quà tặng âm nhạc cho BlogSpot

13:21 |
Hehe, gần tết rồi.. thêm không khí cho cho Blog của bạn chút nhỉ. Hôm nay giới thiệu với các bạn một Plugin mới. Quà tặng âm nhạc, điều không tưởng phải không, chỉ có ở các 4rum. Nhờ có load feed comment của anh Dũng, mình mới dám nghĩ đến tạo ra cái gì đó mới lại từ tiện ịch này.


Lâu nay ẩn danh cũng vì đang làm đồ án, rảnh tay mới code được.



Mình cũng không rành lắm CSS, vậy nên mình chỉ viết js thôi. Các bạn code theo phong cách riêng của mình nhé, mới làm hiện bài hát đầu tiên. Có thêm thời gian mới tạo được thêm 2 cái nút tiến lùi, chắc cũng trước tết thôi. ^^! Chờ nhé.

Nhaccuatui.com

Mp3.zing.vn

Nhacso.net

Music.soha.vn

Nhac.vui.vn

Zippshare và *.mp3
Tha hồ chọn lựa skin ;))

Để sử dụng tiện ích, các bạn tạo một trang mới hoặc một bài mới. Tạo một widget HTML mới, dán code sau vào.

CSS

<style type="text/css">
#tomusic{border:1px dashed #444; padding: 5px; width: 680px;}
#avmusic img{padding: 1px; width: 120px;}
#avmusic a{position: relative; left:0px; bottom:-px;}
#anc_chuc{width:90%; height: 95px; float: right;}
.process{
    background: url("http://dl.dropbox.com/u/52283085/47/sr.gif") no-repeat scroll right top transparent;
    color: #EDE7C2;
    display: block;
    float: left;
    font-size: 13px;
    height: 33px;
    margin-left: -13px !important;
    margin-top: 80px;
    padding-right: 9px;
    position: absolute;
    text-shadow: 1px 1px 1px #131212;
    z-index: 100;
}
.process a{text-decoration:none; color: #888888;}
.process span {
    background: url("http://dl.dropbox.com/u/52283085/47/gc.png") no-repeat scroll 0 0 transparent !important;
    float: left;
    height: 33px;
    padding: 5px 0 0 8px;
}
</style>


JavaScript

<script type="text/javascript">
var cm_desc = 50; // Để 50 chắc là đủ (sô ký tự hiển thị)
var homepage = "domain";
postID = "id_bai_qua_tang_am_nhac";

var cm_ava = new Array();
cm_ava['openid'] = "https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhQu31bQ6odCrAfXspr2tiArJIoz3CdYvh-rPwXFdjl-O7OYv6KTmrn5tcvCyFoAhvdRhs76wdFFFIsIeGqZIrX90ciQ3IxZgNzgFo1vjhgsvPkgdCAkg_37l16VqjrTncDd8PGYO_QG0F5/";
cm_ava['livej'] = "https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEghnXUuVCa9cM2oFWW-LtMZUBi5Td9hlRRjGyCaSnLdJ8L-sk9YYohCnjL7pytHFf_1rDrM1cKsd4_wcUVbutLFpLhY-ysH0T9feufUADRxkCo5lyzfRIylMtQwNZlYq0jb2QF34QirgKJo/";
cm_ava['wp'] = "https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiXj9CH7E0XY_Op8-xNV6xm8qAq_p45gTVi0lmwO31ooH2Z2qD9kinOcD0AJucczIOV9JcnDu5AUTJwvWNj19YB0cL0HTCn25PqbtbdaDFkDUKPwr4IX_60BbVmbjyzqE-20psUiwGdqBe8/";
cm_ava['typepad'] = "https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjx_vi2l7qq2d1v5W6pkWkG9fkYePKB5krUsgOUwihLqydZcY6l_roLp2oIGzvM91XWlaI8DJtjQsLcxtgv3hWAGNSLRffJXd0XbLVvFcRmW0OO87ygkt38f4q974MU0c4auijTrnPUAvoC/";
cm_ava['aim'] = "https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh3Sp9FSJUovqDuGFzdy3S0IMqw2T9Rv4CCBQUvalp601oDrzEypGXJCY1hw14G2FJQTm2sxdUl2lyM8fDikvKIFmE_7Au5sWlz9Ap5p19xMxqhEu8qZfeUy0F24vw76s5sE8MIlfsi_Xz7/";
cm_ava['url'] = "https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjbOedfdvj5GiVNURxHM6q33EfEHS8sEzfRh3Rmqt-HhCPXm9OZVAEtJXMGAnxF8FWQocFhSVkBLWfGXmzdIexVSx37U6vac7Ktr86sccU8rcxOr5mUuhYMSP5ITjPy1m2bCjFqn40SnYp6/";
cm_ava['anon'] = "https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi-5VNfnAcUKzHZgYL6051FWLiZpdnxm-1sLQfsA9XVqb8bwZuVFE8wFIGPXZNHcrmLD1Mj5CKIDx05eMD2gwsZ5lnvWqX27CS6sEZAoxMCzI4nd19gFOyAyp1A-N5JF6tfiZtQ4xdI8Q4e/";

</script>
<script src="http://anhnc.googlecode.com/svn/trunk/p/qtan.js" type="text/javascript"></script>
<script>
M.p(M.r());
</script>

File js này các bạn hãy edit lại nhé. Mình làm cho nó giống cấu trúc site mình thôi.

http://anhnc.googlecode.com/svn/trunk/p/qtan.js

Cấu trúc gửi bài hát như sau:

[m]link bài hát|nguoi_nhan|Lời muốn nói[/m]

Chúc mọi người thành công !
Read more…

Nhạc XUÂN

03:30 |


[id]Nhạc Xuân Tuyển Chọn;http://www.nhaccuatui.com/nghe?L=VEgc7SSVLk47|Tết;http://www.nhaccuatui.com/nghe?L=xZkcVaHWATl7|Khúc Nhạc Mừng Xuân;http://www.nhaccuatui.com/nghe?L=LTFAKAapUHSo[/id]
Read more…

Một số album nhạc noel

17:01 |
Read more…

Tiện ích Top Commentators cho blogspot

21:02 |
Tiện ích Top Commentators cho phép hiển thị những đọc giả có lượng comment nhiều nhất. Hiện tại có 1 số blog đã có tiện ích này nhưng họ đã mã hóa code và không chia sẻ, đối với 1 số bạn không rành về javacript sẽ không đọc được các đoạn mã này. Hôm nay nhân tiện có người hỏi về thủ thuật này nên mình cũng xin chia sẻ để mọi người dùng.


Một vài thông tin của tiện ích :
- Không đếm comment của khách nặc danh.
- Chỉ thống kê được tối đa trong 200 comment mới nhất.
- Hiện thị ảnh đại diện (tất cả các author ngoại trừ nặc danh).
- Hiện thị số comment của từng người.

Xem DEMO

Hình ảnh minh họa

Để thực hiện các bạn chỉ việc tạo 1 widget HTML/javascript ở nơi muốn hiển thị rồi dán đoạn code bên dưới vào là được:
<style type="text/css">
.top-author ul li {
list-style:none;
width:250px;
height:45px!important;
border-bottom:1px solid #ccc;
margin-top:5px;
display:block!important;
}
.tau-cont {margin-left:38px;}
.tau-cont h4 {margin:0;padding:0;}
.tau-cont span {color:#555;}
img.tau-thumb {
float: left;
margin-right: 10px;
border: 1px solid #CCC;
padding: 0;
width: 36px;
height: 36px;
}
</style>

<script type="text/javascript">
var no_photo='https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgURddq3I1pJ8vywXQoPOFFn2nj_gu3uM8sOhoDOJXqoUkmNyAjlf_dfbBjPmp-GoyKVCemntEsfzi93yNswcwTJP5nBkLWcaGY_o7k01YRtIVINwoLFW0YQyB-zVkbQyHrxelsm5hlv-bD/s50/blogger-nophoto.png';
var another_au='https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh4HObxmwaGOIHMh5_V60IiVrywU2zRLGCYAEwRVsTABDqqSBH_vZkTq046jhCSYMeM7uZLD9k0Asx6LYiTk-f7qXyibApxc2LeUKPeEgEGlhRwOD26nELfxgJl1zX3r8uVNqbmg_vB_gkP/s23/another-ico.png';
var au_nums=5;
var rcm_nums=100;
var homepage="http://www.fandung.com";
</script>
<div class="top-author">
<script type="text/javascript" src="http://fandung.googlecode.com/svn/trunk/js/top-author.js"></script>
</div>
Một vài lưu ý :
- var no_photo : avatar của tài khoản blogger chưa có ảnh đại diện.
- var another_au : avatar của tài khoản khác blogger.
- var au_nums=5; số tác giả được hiển thị
- var rcm_nums=100; số comment sẽ được khoanh vùng để thống kê (phải nhỏ hơn hoặc bẳng 200)
- var homepage="http://www.fandung.com"; thay http://www.fandung.com bằng tên miền của blog bạn.

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

Thực hiện theo yêu cầu của Trần Việt Đức
Read more…

Chèn link Google Search vào footer của bài viết

20:29 |
Ở thủ thuật này, theo như yêu cầu, mình sẽ tạo 1 link text nhỏ ở dưới mỗi bài viết. Khi click vào link này thì lập tức sẽ mở ra 1 cửa sổ mới của trang Google với nội dung tìm kiếm chính là tiêu đề bài viết mà bạn đang xem. Như yêu cầu thì tiện ích sẽ thay thế cho việc copy tiêu đề bài viết và dán vào google để tìm kiếm. Thủ thuật này cũng là 1 cách để cho các bạn có thể kiểm tra xem bài biết của bạn đứng thứ bao nhiêu trong kết quả tìm kiếm của google (với từ khóa chính là tiêu đề bài viết).


Xem DEMO

Sau đây là các bước thực hiện :
1. Vào thiết kế
2. Vào chỉnh sửa code HTML
3. Nhấp chọn mở rộng mẫu tiện ích
4. Tìm đoạn code như bên dưới :
<div class='post-footer-line post-footer-line-3'>
- nếu không tìm thấy đoạn mã này, bạn có thể tìm các đoạn mã bên dưới :
<div class='post-footer'>
hoặc :
<data:post.body/>

5. Sau khi tìm được 1 trong các đoạn code trên, các bạn dán đoạn code bên dưới vào ngay sau nó :
<div class='google-search-link' style='text-align:center;'>
<form action='http://www.google.com.vn/search' method='get' name='search-pt' target='_blank'>
<input autocomplete='off' expr:value='data:post.title' id='search-text' name='q' style='display:none;' tabindex='7' type='text'/>
<a href='#' onclick='document[&quot;search-pt&quot;].submit()'>=== click search google ===</a>
</form>
</div>
- các bạn có thể thay dòng === click search google === thành đoạn text khác mà các bạn thích.

6. Save template.

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

Theo yêu cầu của ChoiBlogs.blogspot.com
Read more…

SlideTab Recent posts (jQuery)

07:30 |
Phải nói là ở blog của mình tiện ích recent posts rất nhiều, nhiều là do mỗi cái có giao diện khác nhau, chứ về cơ bản thì nó đều như nhau, và đa phần là do các bạn yêu cầu. Và bài này cũng không ngoại lệ. Bài này mình rip lại giao diện theo yêu cầu, chỉ có khác là thay nội dung của nó bằng tiện ích Recent Posts mà thôi.

Xem DEMO

Hình minh họa :

Sau đây là các bước thực hiện :
- Vào code template (thiết kế -> chỉnh sửa code HTML), và chèn đoạn mã code bên dưới vào trước thẻ đóng </head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js" type="text/javascript"></script>
- lưu ý là nếu trong code template của bạn đã có file jquery.min.js thì không cần chèn vào nữa, hiện tại jquery đã ra bản 1.7.1

- tiếp theo, tạo 1 widget HTML/javascript và chèn đoạn code bên dưới :
<style type="text/css">
#slidearea {
height: 242px;
overflow: hidden;
margin: 0px 20px 0 20px;
position: relative;
width: 960px;
background: url(https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjajgopL8GnLhbMDUOI6VRn__nh5l9ggVcD_yiRjjQLlmnvyBMI5mnj33Ub6yLpwR2Zm9Bl3LsVzN3Vn4x6S0TyOixNIf2csKsCeioFPftULhOkgVIfbxyXS8wOzyRetNiA01dGPrBOas5j/s0/slider.png) no-repeat;
}
#gallerycover {
overflow: hidden;
margin: 15px 30px 0 30px;
width: 900px;
}
.mygallery {
overflow: hidden;
visibility: visible;
position: relative; z-index: 2;
left: 0px;
width: 900px;
}
.mygallery ul {
margin:0;
padding:0;
position: relative;
list-style-type: none;
z-index: 1;
width: 2700px;
left: -1620px;
}
.mygallery ul li {
overflow: hidden;
float: left;
width: 180px;
height: 210px;
}
.mytext {
position: relative;
margin: 0 5px 0 5px;
width: 170px;
height: 210px;
display: inline;
float: left;
color: #C4C4C4;
}
.mytext p {
padding: 0 0;
color: #555;
font-size: 12px;
line-height: 20px;
width: 170px;
text-shadow: 1px 1px 0 #F6F6F6;
}
.mytext h2 {
padding: 5px 0;
color: black;
width: 170px;
font-size: 14px;
font-weight: bold;
}
.mytext h2 a:link, .mytext h2 a:visited {
color: black;
text-decoration: none;
outline: none;
}
.mytext h2 a:hover {color:#888;}
img.sidim {
width: 170px;
height: 100px;
}
.prevb {
float: left;
width: 20px;
height: 35px;
z-index: 200;
background: url(https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgFoaBkISU8A4irPtO1sJREErqbWGcmyY4xkwbcLK4MKdgtdxW5uAAeIhiYgspxT4R1V6n0eBDHUkx8v0TfPJO2WoRhY8rJcLSEPo_w52Kh3SIdi5wdJtWHdNUQ6qFO_Qlu5pfE8Ykmm7Qm/s0/prev.png)!important;
position: absolute;
left: 5px;
bottom: 110px;
}
.nextb {
float: right;
width: 20px;
height: 35px;
z-index: 200;
background: url(https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgbjwzym7j6aLTDVyBKPjW4OuRi3r_t0JLEs9T1vjRLhNrwCcXYiiJM8AmBKYzCYzVgxw8Ir7GTqY9IUBZ9CImzahKYAdZsHvDXVARrmrRHLTzi3wQtHBOb9dB8Ik8m21mPAtU7wAVrxNoT/s0/next.png)!important;
position: absolute;
right: 5px;
bottom: 110px;
display: block;
}
</style>

<script src="http://fandung.googlecode.com/svn/trunk/js/slide-mygallery.js" type="text/javascript"></script>

<script stype="text/javascript">
var $jx = jQuery.noConflict();
$jx(function() {
$jx(".mygallery").jCarouselLite({
btnNext: ".nextb",
btnPrev: ".prevb",
visible: 5,
auto: 3000,
speed: 1000,
easing: "backout"
});
});
</script>

<div id="slidearea">
<div id="gallerycover">
<div class="mygallery">
<ul>
<script type="text/javascript">
var mode = "all";
var g_numposts = 10;
var g_numcontents = 15;
var g_label="B-advance";
var homepage="http://www.fandung.com";
</script>

<script src="http://fandung.googlecode.com/svn/trunk/js/feed-mygallery.js" type="text/javascript"></script>
</ul>

<div class="clear"></div>
</div>
</div>
<a class="prevb" href="#"></a>
<a class="nextb" href="#"></a>
</div>

Hướng dẫn tùy chỉnh :
- visible: 5 đây là số bài viết sẽ được hiển thị ra ngoài, như trong demo là 3.
- auto: 3000 đây là thời gian chạy auto, 3000 tương ứng với 3 giây, tức là sau 3 giây tự động chuyển bài.
- speed: 1000 là tốc độ chuyển bài viết khi click vào button left hoặc right (mũi tên màu cam)
- Lưu ý : nếu không muốn chạy auto, thì bạn bỏ dòng auto: 3000, trong đoạn code javascript, tức là đoạn script ở trên chỉ còn như bên dưới :
<script stype="text/javascript">
var $jx = jQuery.noConflict();
$jx(function() {
$jx(".mygallery").jCarouselLite({
btnNext: ".nextb",
btnPrev: ".prevb",
visible: 5,
speed: 1000,
easing: "backout"
});
});
</script>
- var mode = "all"; là chế độ hiển thị theo cả blog hoặc theo 1 nhãn nào đó, nếu giá trị là all thì hiển thị các bài viết mới của blog, nếu giá giá trị là single thì sẽ hiển thị bài viết theo nhãn được chọn (là biến g_label bên dưới)
- var g_numposts = 10; là số bài viết sẽ load (lưu ý là số bài viết sẽ load (g_numposts) khác với số bài viết sẽ được hiển thị (visible: {giá trị thiết lập}) )
- var g_numcontents = 15; số chữ (là các chuỗi ngăn cách bằng dấu khoảng trắng) sẽ được hiển thị ở đoạn mô tả bài viết.
- var g_label="B-advance"; tên nhãn sẽ được chọn nếu hiển thị ở chế độ mode = "single";
- var homepage="http://www.fandung.com"; thay http://www.fandung.com thành tên domain của blog bạn, ví dụ http://YOUR-BLOG-NAME.blogspot.com

- Ngoài ra nếu tiện ích rộng quá thì các bạn tùy chỉnh lại các thông số về chiều dài và rộng trong code CSS.

- Thủ thuật này xin lưu ý là hơi nặng, nên bạn nào thật sự thích thì hãy sử dụng, còn không thì có thể tham khảo thôi.

Thực hiện theo yêu cầu của Việt Nam
Read more…

Tân cổ

16:37 |


Read more…

Dương Ngọc Thái

23:39 |
Read more…

[Update] Tạo Menu Thanh menu ngang có sổ dọc xuống

07:54 |
Create Dropdown Menu
[FD BlOg] - Để cho khách viếng thăm có thể dễ dàng truy cập và tìm kiếm thông tin về bài viết trên blog của bạn thì phổ biến nhất là tạo 1 menu truy cập cho blog. Việc tạo menu sẽ giúp cho người truy cập dễ dàng tìm thấy thông tin mà mình muốn tìm.

Ở đây mình sẽ giới thiệu menu nằm ngang và có liên kết với các menu con khác, và hiển thị của các menu con này là sổ dọc xuống theo từng menu chính.

Update 17/12/2011:

- Đây có thể nói là 1 trong các bài viết có lượng view lớn nhất trên BlOg FD, và cũng là bài viết có nhiều comment phàn nàn nhất về việc bài viết khó hiểu, hoặc không làm được. Hôm nay mình sẽ fix lại bài hướng dẫn. Và nhân tiện mình cũng fix lại code của thủ thuật để cho tiện và cho đẹp hơn 1 chút.

- Ở thủ thuật cũ, phần chèn link của các menu phụ (menu con) chỉ góm gọn trong các link của các nhãn, trong bài fix này các link của menu con sẽ cơ động hơn, không còn phải theo khuôn mẫu link như thế này http://YOUR-BLOG-NAME.blogspot.com/search/label/LABEL-NAME, tức là có thể chèn các link khác như link của 1 bài viết nào đó chẳng hạn.


Xem DEMO

Hình ảnh minh họa :




Trước tiên để tạo menu, bạn phải thống kê lại các nhãn, (giống như lập 1 bản đồ trong blog vậy) sau đó ta sẽ gôm các nhãn lại theo từng mục, ví dụ: giải trí , học tập... và các mục giải trí, học tập sẽ là 1 menu chính, còn các trang nhãn hoặc 1 trang bài viết nào đó sẽ là 1 menu phụ.

Thứ 2 là xác định nơi đặt menu, thông dụng nhất sẽ là ở trên phần header.Như vậy các bạn phải tạo 1 widget HTML/Javascript vào header rồi dán code của thủ thuật vào.

☼ Bây giờ ta bắt đầu vô chi tiết:
1. Đăng nhập blog
2. Vào Bố cục (layout)
3. Vào chỉnh sửa code HTML (không cần nhấp chọn mở rộng tiện ích)
4.Chèn đọan code sau vào ngay bên dưới thẻ mở <head>

<script src="http://fandung.googlecode.com/svn/trunk/js/dropdown2.js" type="text/javascript">
</script>

- nếu chèn code ở bước 4 vào template mà submenu không hiển thị, thì các bạn chèn nó vào ngay trong widget HTML/javascript chưa code thủ thuật, tức là chèn chung với code ở bước 6 bên dưới, và chèn ngay trên cùng. (updated 18/12/2011)

5. Save template lại.
6. Quay trở lại bố cục, vào phần tử trang, tạo 1 cái widget HTML/Javascript,sau đó dán đọan code bên dưới vào.

►CODE:

<style type="text/css">
.nav23{
height: 27px;
padding: 2px 0 0;
margin-right:5px;
background-image: url(http://sites.google.com/site/fdblogsite/Home/fd.gif);
width: 100%;
border-top:1px solid #bbb;
border-bottom:1px solid #ffdab6;
}

.nav23 a, .nav23 a:visited {
color:#000;
font-weight:bold;
font-family:Arial, Helvetica, sans-serif;
text-decoration:none;
font-size:12px;
padding: 5px 10px;
display: block;
float:left;
border-right:1px solid #f17813;
}
.nav23 a:hover {
background-image: url(https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiAZXS8wjZxiQnepnwgdw9e7-tvEJ78KvBDOk5_y3yfqa-8ASQrNpWtah4VvpbGA4gKCz5l2TT5ql4HOdpNhTsVDKZooucW88uBqFu9o6kt52WjcpIzb6md-1dnaEgWJH-7w8-EcT469rd7/s26/nav23-bg-hv.png);
color:#FFF;
}
.nav23sub{
background:#F57900;
margin-top:1px;
padding:1px;
color: #fff;;
margin: 1 1px;
padding: 5px 10px;
font-weight:bold;
font-family:Arial, Helvetica, sans-serif;
font-size:12px;
border-top:1px #ffc185 solid;
cursor:pointer;
}
</style>

<script type="text/javascript">

var bg_submenu="#F57900"; // màu nền của submenu
var bg_hv_submenu="#24BDE2"; // màu nền của submenu khi rê chuột

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=\''+bg_hv_submenu+'\'" onmouseout="this.style.background=\''+bg_submenu+'\'" class="nav23sub" 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">');
}

// end of define functions!

</script>
<div class="nav23">
<a id="idmenu1" href="#" >Menu 1</a>
<a id="idmenu2" href="#">Menu 2</a>
<a id="idmenu3" href="#">Menu 3</a>
<a id="idmenu4" href="#">Menu 4</a>
<a id="idmenu5" href="#">Menu 5</a>
<a id="idmenu6" href="#">Menu 6</a>
<a id="idmenu7" href="#">Menu 7</a>
</div>

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

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

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

otab("idmenu4_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("idmenu4", "idmenu4_child", "hover", "y", "pointer");

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

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

otab("idmenu7_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("idmenu7", "idmenu7_child", "hover", "y", "pointer");
</script>

- Chú ý :
+ Menu 1, Menu 2, ... Menu 7 là các menu chính (menu cha)
+ Submenu 1.1, Submenu 2.1, ... Submenu 7.1, ... là tên các menu phụ (menu con)
+ link_submenu1.1, link_submenu1.2, ... link_submenu7.1, ... là link liên kết của các menu phụ ví dụ như : http://www.fandung.com/search/label/B-basic hoặc http://www.fandung.com/p/contact.html
+ Nếu các menu chính có liên kết đến thì các bác bạn thay kí tự # trong code của nó thành link liên kết nào đó. Ví dụ như bên dưới :
<a id="idmenu1" href="http://www.fandung.com" >Menu 1</a>
+ Các code cùng màu (đỏ, xanh dương, xanh, cam, đen, tím, xanh xám)sẽ liên kết với nhau (kiểu : cha - con)
+ Ví dụ 1 đoạn code :
otab("idmenu1_child");
submn('link_submenu1.1','Submenu 1.1');
submn('link_submenu1.2','Submenu 1.2');
ctab();
at_attach("idmenu1", "idmenu1_child", "hover", "y", "pointer");
- Đây là code để hiển thị các menu con của Menu chính (cha) có tên là Menu 1, và code của menu cha là bên dưới :
<a id="idmenu1" href="#" >Menu 1</a>
- Bạn lưu ý dòng id="idmenu1" trong code trên, chữ idmenu1 này bắt buộc phải giống với chữ idmenu1 trong code của menu con, tức là đoạn code này :
otab("idmenu1_child");
submn('link_submenu1.1','Submenu 1.1');
submn('link_submenu1.2','Submenu 1.2');
ctab();
at_attach("idmenu1", "idmenu1_child", "hover", "y", "pointer");
- Nếu muốn tạo thêm nhiều menu con cho menu cha (ví dụ đối với menu cha Học Tập như trong code mẫu), ta sẽ thêm code như bên dưới :
otab("idmenu1_child");
submn('link_submenu1.1','Submenu 1.1');
submn('link_submenu1.2','Submenu 1.2');
submn('link_submenu1.3','Submenu 1.3');
submn('link_submenu1.4','Submenu 1.4');
ctab();
at_attach("idmenu1", "idmenu1_child", "hover", "y", "pointer");
- Còn nếu như các bạn muốn 1 menu chính nào đó không có submenu thì các bạn chỉ việc xóa code của submenu, lấy ví dụ ở Menu 6, thì ta sẽ xóa đoạn code như bên dưới :
...
...
...
otab("idmenu6_child");
submn('link_submenu6.1','Submenu 6.1');
ctab();
at_attach("idmenu6", "idmenu6_child", "hover", "y", "pointer");
...
...
...
- Nếu muốn thêm 1 menu nữa (ví dụ Menu 8) thì ta thêm code tương tự ở 2 phần như bên dưới :
...
...
...
<a id="idmenu6" href="#">Menu 6</a>
<a id="idmenu7" href="#">Menu 7</a>
<a id="idmenu8" href="#">Menu 8</a>
</div>
...
...
...
otab("idmenu7_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("idmenu7", "idmenu7_child", "hover", "y", "pointer");

otab("idmenu8_child");
submn('link_submenu8.1','Submenu 8.1');
submn('link_submenu8.2','Submenu 8.2');
ctab();
at_attach("idmenu8", "idmenu8_child", "hover", "y", "pointer");


</script>

Bạn nên đặt menu này ở trên head là đẹp nhất, nếu blog của bạn nào chưa có tạo thủ thuật "Thêm tiện ích" vào phần header thì có thể xem ở đây.

-------------- BONUS --------------

- Trong demo mình có 4 mẫu menu, ở trên là code của mẫu 0, và đây là code của 3 mẫu còn lại, các bạn có thể download về tham khảo :
http://fandung.googlecode.com/svn/trunk/menu_type1.txt
http://fandung.googlecode.com/svn/trunk/menu_type2.txt
http://fandung.googlecode.com/svn/trunk/menu_type3.txt
- để có được 1 menu với màu sắc như ý muốn, các bạn thay đổi các giá trị mã màu như trong code highlight bên dưới là được :
<style type="text/css">
.nav23 {
height: 27px;
padding: 2px 0 0;
margin-right:5px;
width: 100%;
border-top:1px solid #bbb;
border-bottom:1px solid #ffdab6;
background-color:#88bb22;
}

.nav23 a, .nav23 a:visited {
color:#fff;
font-weight:bold;
font-family:Arial, Helvetica, sans-serif;
text-decoration:none;
font-size:12px;
padding: 5px 10px;
display: block;
float:left;
border-right:1px solid #528500;
}

.nav23 a:hover {
background-color:#528500;
}

.nav23sub {
margin-top:1px;
padding:1px;
color: #fff;;
margin: 1 1px;
padding: 5px 10px;
font-weight:bold;
font-family:Arial, Helvetica, sans-serif;
font-size:12px;
cursor:pointer;
background:#97cf26;
border-top:1px #d7ff86 solid;
}
</style>
<script type="text/javascript">
var bg_submenu="#97cf26";
var bg_hv_submenu="#528500";
...
...
...
Chúc các bạn thành công.
Read more…

Ngẫu hứng Blogger (3)

06:53 |
Các bài viết trước, mình có chú trọng nhắc đến đối tượng "Data". Gọi nó là đối tượng không biết là đúng hay sai. Nhưng cùng là newbie với nhau, nói theo ý hiểu của mình. Sai thì nhờ unnewbie chỉ giúp.


Chủ đề hôm này, tên tiếng Anh chuẩn là "Layouts Data Tags". Có nhiều loại data khác nhau với mục đích chỉ dùng trong các widget phù hợp. Data được nhận biết theo 2 dạng sau. Thứ nhất là <data:name/>  , name ở đây có thể là một đối tượng dữ liệu không có thuộc tính riêng (VD: ... ). Thứ 2 là dạng <data:name1.name2/>, name1 là đối tượng, name2 là thuộc tính riền của nó (VD: post.title, post.url...).

Có các loại widget phổ biến sau :

Globally Available Data
Page Header
Blog Posts
Blog Archives
Profile
Text / HTML / JavaScript

Feed
Picture
Labels
List
Link List
Logo

Với số lượng widget kể trên, chúng ta không thế nào nhớ hết được tất các các biến data của nó. Các biến đó mình cũng tham khảo bên support blogger. Đừng nghĩ ở đây ai hơn ai nhé, mình cũng chỉ như các bạn, đang chập chững bước vào đây. Nhưng mình đang thấy nhiều bạn đang tìm cách học sai, không nắm được căn bản, chắc sẽ mày mò rất lâu, một năm, 2 năm... chắc mới có thể ngẫm ra. Các bạn đọc và chịu khó thực hành, code nhiều các bạn sẽ luận ra và nhớ hết đa số các biến. ^^! .. Chém nhiều quá ! Giờ quan tâm chủ yếu đến Blog Post, phần trung tâm của BlogSpot. Các biến trong widget này bao gồm : feedLinks, olderPageUrl, oderPageTitle, newerPageUrl, newerPageTitle, commentLabel, authorLabel, timestampLabel, postLabelsLabel, backlinksLabel, posts...

 Để sử dụng các biến này, bạn phải tạo widget phù hợp đó là type = "Blog", kèm theo đó là có luồng tương ứng. Mình sẽ liệt kê kèm theo dưới đây, liệt kê theo sơ đồ luồng code dưới dây cho các bạn dễ hình dung nhé.


Trước hết, các bạn để ý cho mình nhé, luồng nào chứa khai báo var, nó sẽ có một vòng lặp Loop bên trong. Vì nó thuộc dạng danh sách (các bạn có thể phóng to ảnh để theo dõi). Để đưa một biến vào thuộc tính của thẻ HTML như href, src, title ...Các bạn phải thêm từ khoá expr để BlogSpot khi biên dịch có thể hiểu được đây là biến data chứ không phải giá trị của thẻ HTML.

1 Nextprev : Luồng chứa nhóm điều hướng, hiển thị link bài viết cũ và mới.

Bao gồm các biến được quan tâm :  

data:newerPageUrl, data:newerPageTitle (Nhóm bài viết mới)
data:olderPageUrl, data:olderPageTitle (Nhóm bài viết cũ.)
data:blog.homepageUrl,data:homeMsg (Nhóm trang chủ - Hiển thị )

2. ShareButtons : Chia sẻ liên kết bài viết với mạng XH. Cái này các bạn tìm hiểu thêm nhé, cũng không khó, mình không đưa vào, vì sợ bài viết dài.

3. Backlinks : Phần tạo liên kết bài viết giữa các site, cái này chắc để sau. Nếu các bạn cần mình sẽ giới thiệu, mình cũng không mò vào đây vì không dùng nó mấy :D

4. Post : Đứa con mà các bạn chăm sóc nhiều nhất. nơi đây chứa biến name1: post, gồm các thuộc tính name2 sau:


5. Status message : Đây là thanh Navigation của bạn.

6. Main : Phần này quan trọng với trang đây. Các bạn có thể tưởng tượng nơi đây là nơi tập trung các dữ liệu bên ngoài vào. Trích xuất, lọc thành biến : post (posts), coment(coments), link (links)..và đưa ra các hàm con (hàm con có thể hiểu ở đây là các luồng đã xét ở trên). Xét thấy sự phù hợp giữa name trong main và id của các luồng kể trên, dữ liệu sẽ được rót vào các luồng có (luồng bên ngoài)id = name(main) đó.


Cũng có thể điều đó là ngược lại, đây là hàm chính, hãy nhìn sự sắp xếp từ trên xuống. Các hàm con được gọi vào và sắp xếp theo thứ tự mà ta từng thấy : Thanh Navigation, Bài viết, Link điều hướng, Feeds...

Phần này mình cũng chỉ hiểu mơ hồ, biết sao nói vậy. Nếu các bạn thấy sai, mình sẽ edit lại. Nhưng mình dám chắc mình đang nói đúng. Vậy có thể coi Main là cái thùng lớn, dữ liệu được lọc thông qua các ống include có id và name tương ứng nhau.

7. Comments
 Nơi chứa comment  biến tương ứng từ số 24 -- > 30 trong bảng trên.

Kết lại.
    Còn rất nhiều biến data đang chờ bạn khám phá, các bạn có thể đoc thêm tại đây. Nếu nắm rõ sơ qua một chút cấu trúc của BlogSpot, cho dù là tiếng Anh thì bạn vẫn có thể hiểu nó đang nói gì. Mong có nhiều bạn đọc nó, hiểu nó hơn mình và tìm ra nhiều thủ thuật hay. Để Blog trở thành một nơi làm việc rẻ nhất, đông vui nhất. Khả năng diễn dải có hạn, cho dù mình biết nhưng chưa chắc đã nói được hết ý đang suy nghĩ, nếu có điều gì đó làm các bạn nhức nhối, xin bỏ qua cho mình.

Cảm ơn đã đọc bài viết của mình. Hẹn trong các chia sẻ tới. Bye !

Read more…

Blogger cập nhật tính năng threaded comment cho blogspot ?

06:11 |
Như các bạn đã biết, comment phân cấp (threaded comment) gần đây đã được Tiến Nguyễn (vnblogspot.com) giới thiệu cho mọi người, và cũng đã được nhiều người hưởng ứng và sử dụng. Hôm nay tình cờ mình ngồi vọc code template thì mình tình cờ thấy 1 thẻ b:includable mới mà blogger vừa mới cập nhật vào code template.


Theo mình đoán thì blogger chuẩn bị cập nhật tính năng này cho blogspot. Tại thời điểm post bài này mình có vô chỉnh sửa code 1 vài lần, và đã gặp lỗi bx 1 vài lần. chứng tỏ blogger đang tiến hành 1 vài cập nhật nào đó.

Nếu đúng như vậy thì blogspot chuẩn bị lại được làm mới, lại được thêm một tính năng mạnh mẽ nữa, hứa hẹn sẽ là 1 nhà cung cấp dịch vụ blog số 1 sau này.

Tiếp tục ủng hộ blogspot
Read more…

Ngẫu hứng Blogger (2)

16:26 |
Do tên gọi kia hơi dài, mình xin được phép đổi tên chủ đề "Bạn biết gì về BlogSpot, hãy chia sẻ cung tôi". Trong số 2 này mình sẽ nói về các đối tượng bên trong của widget, bao gồm : Include (Luồng), Data (Dữ liệu), Loop (Vòng lặp), If/Else (Biểu thức điều kiện).


Nhắc đến bài trước, bạn đã thử thực hành với 2 đối tượng section và widget chưa. Nếu chưa, hãy làm thử đi nhé. Đơn giản hãy chỉ tạo thử một section header, trong đó chứa một widget HTML, bạn cho nó hiển thị hình ảnh trong 3 trang khác nhau : index, item, static page.

C.Luồng (Include)

Luồng là một đối tượng con, nằm trong widget. Hiểu nôm na, nó như một ống dẫn truyền dữ liệu từ CSDL vào widget. Do vậy nếu tạo widget mà không có luồng, sẽ có lỗi xảy ra.

Cấu tạo một luồng như sau :

<b:includable id='{tên id}' var='{Biến}'>
    {Nội dung hiển thị}
</b:includable>

Giải thích : 

id: Định danh duy nhất trong widget để luồng tham chiếu.
var : Biến đặt cho luồng truyền giá trị vào, và ở đây nó là một giá trị tham chiếu.

Điều kiện bắt buộc là như mình đã nói ở trên, thêm vào đó, mỗi widget phải có một id = 'main'. Và để cho chắc ăn, id của luồng ta để mặc định là main . Vấn để tạo id mới và sau đó luồng có tham chiếu đến được không. Mình xin trả lời là có, nhưng mình không dám chắc...Vì chưa thử bao giờ ^^!

Luồng không những truyền dữ liệu, nó còn dùng để lấy dữ liệu trong các vòng lặp. Một VD đơn gian đó là lấy tiêu đề của các bài post. Nghĩ hình dung và kết nối, các bạn đơn giản có thể hiểu, ta đang dùng javascript để lọc feed.

<b:includable id='main'>
   <b:loop var='i' values='posts'>
      <b:include name='post' data='i'/>
   </b:loop>
</b:includable>

<b:includable id='post' var='p'>
   Tiêu đề: <data:p.title/>
</b:includable>

Ở đây bạn chú ý vào dòng màu đỏ, vòng lặp loop bên ngoài duyệt tất cả các bài viết (posts), chọn ra một bài viết trong đó (post), với dữ liệu là i.

Chú ý đến cấu trúc trên và có thể sử dụng với các điều kiện sau:

name: Tương ứng gấn như một id, nhưng hiện thị mình thấy nó giống một class hơn.
data : dữ liệu truyền vào, ngầm hiểu chính là nội dung bài viết, tác giả, số comment ...

D. Dữ liệu (Data)

Nhăc đến data, chác nhiều người sẽ hiểu. Có thể nói nó là đối tượng quan trong nhất, nó mang lại cái hồn cho Blog. Vì vậy nói ở đây chắc không thể nào có thể nói hết. Mình sẽ dành một bài viết riêng cho nó.

Các bạn còn nhớ type của widget của bài viết trước chứ. Mỗi loại widget sẽ có một loại data riêng. Vì vậy bạn không thể làm cái điều "râu ông nọ cắm cằm bà kia" được.

Nói qua về nó, nó có dạng sau data:name1.name2. Trong đó, name1 sẽ là đối tượng chính, name2 thường là các thuộc tính đi kém theo sau đó. Mình thấy nói về phần này rất hay, chắc có lẽ xin khất ở bài sau.

E. Vòng lặp (Loop)

Dùng để lọc ra một phần tử trong một nhóm phần tử : nhóm bài viết(posts), nhóm nhãn(labels), nhóm bình luận (coments)...
Cấu trúc :

<b:loop var='{biến chạy, phần tử con}' values='{nhóm phần tử}'>
   {Lặp nội dung ở đây}
</b:loop>

Hình dung đơn giản thì đây là vòng lặp foreach, phần tử con được lấy ra trong nhóm phần tử.

VD :

<b:loop var='i' values='data:posts'>
   <h2><data:i.title/></h2>
</b:loop>

F. BT Điều kiện (If/Else)

Biểu thức so sánh đưa ra kết quả đúng và sai..
Cấu trúc :

<b:if cond='{điều kiện}'>
   {hiển thị nội dung nếu là đúng}
<b:else/>
   {hiển thị nội dung nếu là sai}
</b:if>

Điều kiện ở đây thường là so sánh các đối tượng data với giá trị đã biết để tạo ra các kết quả đúng và sai. Một VD đơn giản là so sánh số bài viết, nếu lớn hơn 1 hiển thị 'A', nhỏ hơn bằng 1 hiển thị 'a'.

<b:if cond='data:post.numComments > 1'>
   <font color="red">A</font>
<b:else/>
  <font color="red">a</font>
</b:if>


Nó có thể năm ngoài widget, tuy nhiêu không được đặt biểu thức if/else giữa widget và include.

Tổng kết.

Qua đây bạn chắc bạn đã thực sự hiểu sơ qua về cấu trúc của một BlogSpot. Biết được ai là cha, ai là con. Mình xin được tổng kết lại các phần đã giới thiệu đơn giản như sau:

Có gì sai hãy bổ sung, góp ý với mình nhé. Rất cảm ơn. Hẹn các bạn ở bài viết tới. Layouts Data Tags.
Read more…

Một số đoạn code tuyết rơi

15:36 |
Đã đến mùa noel rồi đó Minh cung cấp cho các bạn một số đoạn code để trang trí blog mình cho đẹp hơn
 Bạn copy và dán trên thẻ </body> là OK

.
Read more…

Tạo liên hệ giống blog Minh

06:08 |
thiet keĐây là cách tạo trang liên hệ cho blog sử dụng biểu mẫu của Google Docs trên blog Minh Demo. Đăng nhập vào docs.google.com click Tạo mới và chọn Mẫu.
.
Read more…

Bạn biết gì về Blogspot, hãy chia sẻ cùng tôi.

02:36 |
Mình cũng mới tham gia FanDung Blog. Nhưng xem qua chưa có chuyên mục nào giới thiệu hay tìm hiểu sơ lược về BlogSpot. Mà hầu như chỉ tập chung chủ yếu vào "hack". Với những người vọc nhiều, am hiểu sơ qua về các ngôn ngữ lập trình, chuyện hack nó chả có gì là khó. Nhưng đối với nhiều bạn mới tham gia viết Blog như mình, cũng cần có thêm kinh nghiệm về BlogSpot. Mình yêu BlogSpot vì tính năng tuỳ biến của nó. Nói đơn giản hơn :  Ngon - Bổ - Rẻ.

Chính vì lý do đó, mình viết bài viết "Bạn biết gì về Blogspot, hãy chia sẻ cùng tôi." để chia sẻ nhưng gì mình biết, để mọi người cùng tham khảo, cùng vọc. Và lớn hơn nữa nó sẽ thành chuyên mục TUT sử dụng BlogSpot quen thuộc của mọi người. Cũng mong nó sẽ hỗ trợ phần nào đó phần design của các bạn tốt hơn.

Trong bai viết này, mình chỉ nói sơ qua về một số đối tượng Blogspot. Nếu nói điều gì đó chưa đúng hay sai về lý thuyết mong được đóng góp của mọi người, dù sao mình cũng không phải dân làm web ^^!. Không dám múa rìu qua mắt thợ :D

A.Section

Đầu tiên, thứ mình biết được đầu tiên là trong BlogSpot được chia làm các khối lớn. Các khối này được nằm trong thẻ <section>, các khối section này chứa các widget, HTML hay các tiện ích thêm vào mà các bạn vẫn hay dùng. Trong một trang bạn có thể chia làm nhiều <section> .Không cứ bắt buộc theo temp chuẩn là chỉ có header, main, sibar đâu nhé. Các bạn có thể tuỳ biến thêm các section cho trang của mình.



Và lưu ý nhé, section mình nói trên phài đặt trong thẻ đóng và mở là
<b:section {thuộc tính}></b:section.>

Nó là thẻ bắt buộc phải có trong một template, nếu không có một thẻ này, BlogSpot sẽ báo lỗi khi up template.

Và kể từ nay trở về sau, các bạn sẽ tử hiểu các cấu trúc thành phần cấu tạo nên BlogSpot cũng sẽ phải nằm trong thẻ đóng, mở <b:></b:>

Mỗi <section> trong template được tạo như sau.

<b:section id='{tên id}' class='{tên class}' maxwidgets="{số lượng}" showaddelement="{yes, no}">
</b:section>

Giải thích thuộc tính như sau :

id: Là tên duy nhất đặt cho section.
class: dùng để code CSS cho section.
maxwidgets: Số lượng widget có thể nằm trong. Widget tý sẽ kể đến ^^!
showaddelement: Có cho phép thêm phần tử vào section không.

Ngoài ra, còn có thêm một thuộc tính growth: định dạng kiểu dáng của section "horizontal","vertical" (nằm, đứng). Nhưng mình nghĩ cũng chả khi nào dùng đến, vì bo CSS rồi. Thuộc tính id sẽ là bắt buộc, các thuộc tính còn lại là tuỳ biến, tức là có hoặc không.

B.Widget

Widget ta có thể tạm hiểu là một phần tử con của Section.

Tạo một widget :

 <b:widget id="{tên id}" type='{loại}' locked="{yes,no}" title="{Tên Widget}"/>

Giải thích :


id: Trường thuộc tính duy nhất và bắt buộc, BlogSpot thường dựa vào id để lưu lại cấu hình về css, cũng như data của nó. Mỗi khi bạn restore hay thay thế temp mới, các dữ liệu sẽ tự động đẩy vào các widget trống.
type: Bao gốm các dạng sau : BlogArchive, Blog, Feed, Header, HTML, SingleImage, LinkList,List, Logo, BlogProfile, Navbar, VideoBar, NewsBar, ListView .... Trong đó HTML được chúng ta sử dung nhiều nhất.
locked: Được phép di chuyển hay không ở trong phần tử trang.
title : Tên widget.

Ngoài ra còn một số thuộc tính :

pageType (cho phép hiển thị ở trang nào) : Giá trị : all, archive, main, item  - > phần này dành cho phân trang  rất hay, các bạn không cần dùng đến if để kiểm tra pageType nữa.

mobile: (cho phép hiển thị với điện thoại di động không) : Giá trị: yes, no.

Trong blog của bạn, tất cả các thẻ <section> và <widget> sẽ được thay thế bằng thẻ <div>, mà sẽ có ID quy định. Do vậy, các bạn có thể bo CSS bằng chính các id mà bạn đã đặt.

Giờ bài viết đã dài, mình cũng hơi mỏi tay rồi. Hẹn các bạn trong số tiếp theo. Trong bài sau mình sẽ giới thiệu về : Include (Luồng), Data(Dữ liệu), Loop (Vòng lặp), If/Else (Biểu thức điều kiện)

Xin hẹn các bạn trong bài viết sau. Cảm ơn về ý kiến của các bạn !
Read more…

Noel về

14:53 |


[id]Liên Khúc Noel ;http://www.nhaccuatui.com/nghe?L=mZmtsl5zCp7Z|Noel Đầu Tiên;http://www.nhaccuatui.com/nghe?L=PyQOTmwYo4RV|Mùa Noel Đó;http://www.nhaccuatui.com/nghe?L=q1FBKqIeiNRn[/id]







Read more…

Vật chứng mong manh

07:21 |



Read more…

Blogger chính thức add avatar vào comment feed

06:38 |
Mấy bữa nay ngồi mày mò vài thứ nên ko biết chút thông tin mới nào về blogger. Hôm nay đi dạo 1 vòng mình mới thấy. Nhân tiện đây mình giới thiệu luôn cho mọi người. Trước kia, khi blogger chưa add avatar vào comment feed thì mình có giới thiệu cho các bạn 1 thủ thuật recent comment có avatar, khi đó mình phải dùng tới php để lấy ảnh, nên load rất chậm, và rất ít người dùng. Nay blogger đã add avatar vào feed rồi thì chúng ta không còng phải lo về vấn đề load chậm nữa.


Nhân tiện hôm nay mình cũng sẽ update lại thủ thuật recent comment mà mình đã giới thiệu trước đó. Ngoài việc cập nhật cho avatar cho tiện ích, mình còn fix 1 lỗi mà trước kia post thủ thuật mình đã không để ý. đó là trong trường hợp bài viết bị xóa (không phải xóa vĩnh viễn) thì thủ thuật bị lỗi và không chạy được.

Các bạn có thể xem demo ở đây :


Để update thủ thuật, các bạn chỉ việc cập nhật lại file js trong bài hướng dẫn trước. Nếu ai chưa từng thực hiện thủ thuật thì vào lại bài cũ để xem hướng dẫn.
Link : http://www.fandung.com/2011/06/recent-comments-voi-anh-ai-dien.html

File js đã update :
http://fandung.googlecode.com/svn/trunk/js/recent-comment-avatar.js
Read more…

Thêm Reactions vào bài viết của blogspot

04:02 |
Chức năng reactions của blogger cung cấp giúp cho đọc giả thể hiện phản ứng của mình khi xem 1 bài viết nào đó. Chức năng này đã được tích hợp sẵn trong widget "bài đăng trên blog" (Blog1). Nhưng nó thường ở chế độ ẩn (disable), nếu bạn muốn sử dụng nó cho các bài viết của mình thì các bạn phải enable nó lên.


Bài hướng dẫn này cũng rất cơ bản, và có cũng có nhiều blog đã đăng rồi, nhân tiện bạn Namozu hỏi, nên mình cũng xin giải đáp thắc mắc.

Hình ảnh minh họa :

Để Enable tính năng reaction các bạn thực hiện các bước như bên dưới:
1. Vào phần thiết kế -> nhấp chọn vào phần chỉnh sửa widget của tiện ích "Bài đăng trên blog"
2. Và click chọn để enable như hình bên dưới :


- Các bạn có thêm nhiều phản ứng (reaction) để người khác vote bằng cách nhấp vào dòng chữ chỉnh sửa của tính năng Reactions. Sau đó thêm vào, lưu ý là các phản ứng cách nhau bằng dấu phẩy.

3. Save chỉnh sửa lại.

Sau khi save lại và mở bài viết ra để xem thành quả. Và 1 số có lẽ sẽ thất vọng khi nó không hiển thị, các bạn không phải lo lắng. Nó không hiển thị là do template của bạn đã được mod lại (chỉnh sửa). Đa số là code của phần reactions đã bị xóa đi. Để hiển thị nó ta chỉ việc thêm lại phần code của nó là xong.

Sau đây là các bước add lại code của nó:
1. Vào phần thiết kế -> chỉnh sửa HTML -> nhấp chọn mở rộng mẫu tiện ích.
2. Tìm đến dòng code này:
<div class='post-footer-line post-footer-line-3'>
- nếu blog bạn không có dòng này, cũng không sao, bạn có thể tìm đến dòng này :
<data:post.body/>

3. Sau khi tìm được dòng code ở bước 2, các bạn add code của tính năng reactions vào ngay sau dòng code vừa tìm được. Bên dưới là code của nó:
<span class='reaction-buttons'>
<b:if cond='data:top.showReactions'>
<table border='0' cellpadding='0' cellspacing='0' width='100%'>
<tr>
<td class='reactions-label-cell' nowrap='nowrap' valign='top' width='1%'>
<span class='reactions-label'>
<data:top.reactionsLabel/></span></td>
<td><iframe allowtransparency='true' class='reactions-iframe' expr:src='data:post.reactionsUrl' frameborder='0' name='reactions' scrolling='no'/></td>
</tr></table>
</b:if>
</span>

4. Save template lại. và mở lại xem bài viết để thấy kết quả.
Read more…