Hiển thị các bài đăng có nhãn jQuery. Hiển thị tất cả bài đăng
Hiển thị các bài đăng có nhãn jQuery. Hiển thị tất cả bài đăng

SlideTab Recent posts (jQuery)

Người đăng: buonkhongem on Thứ Năm, 22 tháng 12, 2011

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/AVvXsEiPW88dN11GW0CRS2pskKhfIMBGlnrlOdf4z13ttEP1h0WaFDZjpkPYPN5h0WseRhAxxAjov5WLRQ2I55WPacOaelEH4v88EbqLURn7gO9W_KEr-58RYKKZ3O27VZY2fTpYqXYxATNhuPp3/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/AVvXsEjNzwNheAmkU5MJRqTdwuH_-PdyIEQawvkyMKePjHbla0HxGtdCA31UmdftmAGrk-7BUR_hcPPGLr1PrvqwQObAcjRN2qKvdSGhP49gqBVjBvpGsqnP_3_eyDANmANyGCGpmnYqA76geZxp/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/AVvXsEhSosfDS_XTx5rkH6cVCbZGFBnzm8qG_KNoh7dSgRm3u3C-ZRoQGQVagouyzcPWRvo71jzemy-bzpIdcS0DfIES9-sY_5dalrspN7vDSwmiBpyv4L0EiioZ7R485QkowDq5wdBu88QugaPG/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
More about

Cài đặt Accordion Slider tự động cho nhãn

Người đăng: buonkhongem on Thứ Năm, 29 tháng 9, 2011

Gần đây mình có thử nghiệm một plugin gọi là liteAccordion của tác giả Nicola Hibbert dành cho website để tạo hiệu ứng đàn xếp. Mình đã nghiên cứu và áp dụng tự động thành công cho blogspot, tạo hiệu ứng đàn xếp trượt theo chiều ngang với bài viết mới nhất theo nhãn tích hợp thành một slider thật mượt mà.



DEMO

Để cài đặt tiện ích bạn hãy thực hiện theo các bước sau đây:

Bước 1. Đăng nhập Blogger, vào Design >> Edit HTML (không chọn mở rộng mẫu tiện ích). Đặt đoạn code sau đây vào trước thẻ </body>. Đoạn code này chính là thư viện jQuery giúp tạo hiệu ứng đàn xếp.

  1. <script src='http://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js'/>
  2. <script type='text/javascript'>
  3. //<![CDATA[
  4. /*************************************************
  5. *
  6. * project: liteAccordion - horizontal accordion plugin for jQuery
  7. * author: Nicola Hibbert
  8. * url: http://nicolahibbert.com/horizontal-accordion-jquery-plugin
  9. * demo: http://www.nicolahibbert.com/demo/liteAccordion
  10. *
  11. * Version: 1.1.3
  12. * Copyright: (c) 2010-2011 Nicola Hibbert
  13. *
  14. /*************************************************/
  15. ;(function($) {
  16. $.fn.liteAccordion = function(options) {
  17. // defaults
  18. var defaults = {
  19. containerWidth : 940,
  20. containerHeight : 320,
  21. headerWidth : 48,
  22. firstSlide : 1,
  23. onActivate : function() {},
  24. slideSpeed : 800,
  25. slideCallback : function() {},
  26. autoPlay : false,
  27. pauseOnHover : false,
  28. cycleSpeed : 6000,
  29. theme : 'basic', // basic, light*, dark, stitch*
  30. rounded : false,
  31. enumerateSlides : false
  32. },
  33. // merge defaults with options in new settings object
  34. settings = $.extend({}, defaults, options),
  35. // define key variables
  36. $accordion = this,
  37. $slides = $accordion.find('li'),
  38. slideLen = $slides.length,
  39. slideWidth = settings.containerWidth - (slideLen * settings.headerWidth),
  40. $header = $slides.children('h2'),
  41. // core utility and animation methods
  42. utils = {
  43. getGroup : function(pos, index) {
  44. if (this.offsetLeft === pos.left) {
  45. return $header.slice(index + 1, slideLen).filter(function() { return this.offsetLeft === $header.index(this) * settings.headerWidth });
  46. } else if (this.offsetLeft === pos.right) {
  47. return $header.slice(0, index + 1).filter(function() { return this.offsetLeft === slideWidth + ($header.index(this) * settings.headerWidth) });
  48. }
  49. },
  50. nextSlide : function(slideIndex) {
  51. var slide = slideIndex + 1 || settings.firstSlide;
  52. // get index of next slide
  53. return function() {
  54. return slide++ % slideLen;
  55. }
  56. },
  57. play : function(slideIndex) {
  58. var getNext = utils.nextSlide((slideIndex) ? slideIndex : ''), // create closure
  59. start = function() {
  60. $header.eq(getNext()).click();
  61. };
  62. utils.playing = setInterval(start, settings.cycleSpeed);
  63. },
  64. pause : function() {
  65. clearInterval(utils.playing);
  66. },
  67. playing : 0,
  68. sentinel : false
  69. };
  70. // set container heights, widths, theme & corner style
  71. $accordion
  72. .height(settings.containerHeight)
  73. .width(settings.containerWidth)
  74. .addClass(settings.theme)
  75. .addClass(settings.rounded && 'rounded');
  76. // set tab width, height and selected class
  77. $header
  78. .width(settings.containerHeight)
  79. .height(settings.headerWidth)
  80. .eq(settings.firstSlide - 1).addClass('selected');
  81. // ie :(
  82. if ($.browser.msie) {
  83. if ($.browser.version.substr(0,1) > 8) {
  84. $header.css('filter', 'none');
  85. } else if ($.browser.version.substr(0,1) < 7) {
  86. return false;
  87. }
  88. }
  89. // set initial positions for each slide
  90. $header.each(function(index) {
  91. var $this = $(this),
  92. left = index * settings.headerWidth;
  93. if (index >= settings.firstSlide) left += slideWidth;
  94. $this
  95. .css('left', left)
  96. .next()
  97. .width(slideWidth)
  98. .css({ left : left, paddingLeft : settings.headerWidth });
  99. // add number to bottom of tab
  100. settings.enumerateSlides && $this.append('<b>' + (index + 1) + '</b>');
  101. });
  102. // bind event handler for activating slides
  103. $header.click(function(e) {
  104. var $this = $(this),
  105. index = $header.index($this),
  106. $next = $this.next(),
  107. pos = {
  108. left : index * settings.headerWidth,
  109. right : index * settings.headerWidth + slideWidth,
  110. newPos : 0
  111. },
  112. $group = utils.getGroup.call(this, pos, index);
  113. // set animation direction
  114. if (this.offsetLeft === pos.left) {
  115. pos.newPos = slideWidth;
  116. } else if (this.offsetLeft === pos.right) {
  117. pos.newPos = -slideWidth;
  118. }
  119. // check if animation in progress
  120. if (!$header.is(':animated')) {
  121. // activate onclick callback with slide div as context
  122. if (e.originalEvent) {
  123. if (utils.sentinel === this) return false;
  124. settings.onActivate.call($next);
  125. utils.sentinel = this;
  126. } else {
  127. settings.onActivate.call($next);
  128. utils.sentinel = false;
  129. }
  130. // remove, then add selected class
  131. $header.removeClass('selected').filter($this).addClass('selected');
  132. // get group of tabs & animate
  133. $group
  134. .animate({ left : '+=' + pos.newPos }, settings.slideSpeed, function() { settings.slideCallback.call($next) })
  135. .next()
  136. .animate({ left : '+=' + pos.newPos }, settings.slideSpeed);
  137. }
  138. });
  139. // pause on hover
  140. if (settings.pauseOnHover) {
  141. $accordion.hover(function() {
  142. utils.pause();
  143. }, function() {
  144. utils.play($header.index($header.filter('.selected')));
  145. });
  146. }
  147. // start autoplay, call utils with no args = start from firstSlide
  148. settings.autoPlay && utils.play();
  149. return $accordion;
  150. };
  151. })(jQuery);
  152. //]]>
  153. </script>
  154. <script>
  155. //<![CDATA[
  156. $('#one').liteAccordion({
  157. onActivate : function() {
  158. this.find('figcaption').fadeOut();
  159. },
  160. slideCallback : function() {
  161. this.find('figcaption').fadeIn();
  162. },
  163. autoPlay : true,
  164. pauseOnHover : true,
  165. theme : 'dark',
  166. rounded : true,
  167. enumerateSlides : true
  168. }).find('figcaption:first').show();
  169. //]]>
  170. </script>

Bước 2. Tìm thẻ <div id='content-wrapper'> (thẻ này chứa phần Main và phần Sidebar) rồi đặt trước nó bằng đoạn code bên dưới (tạo phần này để bố trí hiển thị Slider):

<div id='crosscol-wrapper'>
<b:section class='crosscol' id='crosscol' preferred='yes'>
</b:section>
</div>

Lưu Template.

Bước 3. Vào Page Elements. Thêm một tiện ích HTML/Javascript ở phần crosscol vừa tạo ở Bước 2 rồi đặt vào phần nội dung tiện ích bằng đoạn code bên dưới:

<link rel="stylesheet" href="http://www.nicolahibbert.com/demo/liteAccordion/css/liteaccordion.css" type="text/css"/>
<style type="text/css">
.prs {width:745px;}
.prs_pagi_label {background-color:#F0F0F0;float:left;height:120px;margin:0 2px;outline:1px solid #404951;padding:5px;position:relative;width:135px;}
.prs_pagi_label img {background-color:#000;float:left;height:55px;margin:0 8px 0 0;width:55px;}
.prs_pagi_label img.notxt {display:block;floatnone;height:90px;margin:0 auto;width:90px;}
.prs_pagi_label p {color:#888;font-size:11px;line-height:1;}
.prs_pagi_label h6 {bottom:10px;font-family:Artifika,Arial,serif;font-size:11px;font-weight:normal;line-height:1;position:absolute;text-align:center;width:140px;}
.prs_pagi_label h6 a {color:#006699;}
.pr_navi_label {clear:both;color:#BBB;font-family:Tahoma;font-size:18px;margin:0 auto;padding-top:10px;text-align:center;width:243px;}
.pr_navi_label a {color:#BBB !important;display:block;font-family:Tahoma;font-size:18px;padding:5px 10px;}
.pr_navi_label a:hover {color:#FFF !important;}
.pr_navi_label span {padding:5px 10px;}
.pr_navi_label span.deshabilitado {color:#666 !important;}
.pr_navi_label .next {float:right;}
.pr_navi_label .previous {float:left;}
.pr_navi_label .first {text-align:center;}
</style>
<script type='text/javascript'>
//<![CDATA[
// Label Post Accordion Slider for Blogspot by www.thuthuatblogger.info
var post_per_page = 10;
var list_label=new Array();
list_label[0]="Tên nhãn 1";
list_label[1]="Tên nhãn 2";
list_label[2]="Tên nhãn 3";
list_label[3]="Tên nhãn 4";
var pr_flagfirst=new Array();
pr_flagfirst[0]=0;pr_flagfirst[1]=0;pr_flagfirst[2]=0;pr_flagfirst[3]=0;
var url_prev=new Array();
var url_next=new Array();

function knowwhat(json) {
for (var k = 0; k < json.feed.link.length; k++) {
if (json.feed.link[k].rel == 'self') {
if(json.feed.link[k].href.indexOf("Tên nhãn 1")!=-1) {num_label = 0;}
if(json.feed.link[k].href.indexOf("Tên nhãn 2")!=-1) {num_label = 1;}
if(json.feed.link[k].href.indexOf("Tên nhãn 3")!=-1) {num_label = 2;}
if(json.feed.link[k].href.indexOf("Tên nhãn 4")!=-1) {num_label = 3;}
}
}
return num_label;
}

function showpagelabel(json) {
var entry, posttitle, posturl, postimg, postcontent, postcat;
var strx_out = "";
num_label = knowwhat(json);
url_prev[num_label] = "";
url_next[num_label] = "";
for (var k = 0; k < json.feed.link.length; k++) {
if (json.feed.link[k].rel == 'previous') {
url_prev[num_label] = json.feed.link[k].href;
}
if (json.feed.link[k].rel == 'next') {
url_next[num_label] = json.feed.link[k].href;
}
}
for (var i = 0; i < post_per_page; i++) {
if (i == json.feed.entry.length) { break; }
entry = json.feed.entry[i];
posttitle = getJSONtitle(entry);
posturl = getJSONurl(entry);
postcat = entry.category[0].term;
postcontent = getJSONcontent(entry,100);
postimg = getJSONthumbnail(entry);
strx_out += "<div class='prs_pagi_label'>";
strx_out += "<a href='" + posturl + "' target='_blank'>";
if(postcat=="Tên nhãn 2" || postcat=="Tên nhãn 3") {
strx_out += "<img class='notxt' alt='' src='" + postimg + "' />";
} else {
strx_out += "<img alt='' src='" + postimg + "' />";
}
strx_out += "</a>";
if(postcat=="Tên nhãn 1" || postcat=="Tên nhãn 4") {
strx_out += "<p>" + postcontent + "</p>";
}
strx_out += "<h6><a href='" + posturl + "' target='_blank'>" + posttitle + "</a></h6>";
strx_out += "</div>";
}
document.getElementById("prs" + String(num_label)).innerHTML = strx_out;
strx_out = "";
if(url_prev[num_label]) {
strx_out += "<a href='javascript:navi_pagi_label(" + num_label + ",-1);' class='previous'>Prev</a>";
} else {
strx_out += "<span class='disabled previous'>Prev</span>";
}
if(url_next[num_label]) {
strx_out += "<a href='javascript:navi_pagi_label(" + num_label + ",1);' class='next'>Next</a>";
} else {
strx_out += "<span class='disabled next'>Next</span>";
}
strx_out += "<a href='javascript:navi_pagi_label(" + num_label + ",0);' class='first'>First</a>";
document.getElementById("pr_navi_label" + String(num_label)).innerHTML = strx_out;
}

function navi_pagi_label(num_label, direction) {
var p, parameters;
if(direction==-1) {
p = url_prev[num_label].indexOf("?");
parameters = url_prev[num_label].substring(p);
} else if (direction==1) {
p = url_next[num_label].indexOf("?");
parameters = url_next[num_label].substring(p);
} else {
parameters = "?start-index=1&max-results=" + post_per_page + "&orderby=published&alt=json-in-script"
}
parameters += "&callback=showpagelabel";
if(pr_flagfirst[num_label]==1) {
var that = document.getElementById("LABELTEMPORAL" + String(num_label));
var father = that.parentNode;
father.removeChild(that);
}
document.getElementById("prs" + String(num_label)).innerHTML = "";
document.getElementById("pr_navi_label" + String(num_label)).innerHTML = "";
var archivefeeds = "http://huynh-nhat-ha.blogspot.com/feeds/posts/default/-/" + list_label[num_label] + parameters; // thay huynh-nhat-ha bằng tên blogspot của bạn
var nouvo = document.createElement('script');
nouvo.setAttribute('type', 'text/javascript');
nouvo.setAttribute('src', archivefeeds);
nouvo.setAttribute('id', 'LABELTEMPORAL' + String(num_label));
document.getElementsByTagName('head')[0].appendChild(nouvo);
pr_flagfirst[num_label] = 1;
}

function getJSONtitle(entry,res) {
var t = entry.title.$t;
if(res) {
t = t.substring(0,res);
}
return t;
}
function getJSONurl(entry) {
var url;
for (var k = 0; k < entry.link.length; k++) {
if (entry.link[k].rel == 'alternate') {
url = entry.link[k].href;
break;
}
}
return url;
}
function getJSONcontent(entry,res) {
var c = "";
if ("content" in entry) {
c = entry.content.$t;
} else if ("summary" in entry) {
c = entry.summary.$t;
}
if(res) {
c = removeHtmlTag(c,res);
}
return c;
}
function getJSONthumbnail(entry) {
var s, a, b, c, d;
var theimg = "";
s = entry.content.$t;
a = s.indexOf("<img");
b = s.indexOf("src=\"",a);
c = s.indexOf("\"",b+5);
d = s.substr(b+5,c-b-5);
if((a!=-1)&&(b!=-1)&&(c!=-1)&&(d!="")) {
theimg = d;
} else {
var cat = entry.category[0].term;
if(cat=="Tên nhãn 1"){theimg = "URL_ảnh đại diện_nhãn1"}
if(cat=="Tên nhãn 2"){theimg = "URL_ảnh đại diện_nhãn2"}
if(cat=="Tên nhãn 3"){theimg = "URL_ảnh đại diện_nhãn3"}
if(cat=="Tên nhãn 4"){theimg = "URL_ảnh đại diện_nhãn4"}
}
return theimg;
}
function removeHtmlTag(strx,chop) {
var r = strx.split("<");
for(var i=0;i<r.length;i++){
if(r[i].indexOf(">")!=-1){
r[i] = r[i].substring(r[i].indexOf(">")+1,r[i].length);
}
}
r = r.join("");
var sss = "", p;
var r2 = r.split(" ");
for(var i=0;i<r2.length;i++){
p = sss + r2[i] + " "
if(p.length>=chop) {break;}
sss = p;
}
sss += "&hellip;"
return sss;
}

onload=function() {navi_pagi_label(0,0);navi_pagi_label(1,0);navi_pagi_label(2,0);navi_pagi_label(3,0);}

//]]>
</script>
<div id="one" class="accordion">
<ol>
<li>
<h2><span>Tên nhãn 1</span></h2>
<div class='slide-inner'>
<div class="prs" id="prs0"></div>
<div class="pr_navi_label" id="pr_navi_label0"></div></div>
</li>
<li>
<h2><span>Tên nhãn 2</span></h2>
<div class='slide-inner'>
<div class="prs" id="prs1"></div>
<div class="pr_navi_label" id="pr_navi_label1"></div></div>
</li>
<li>
<h2><span>Tên nhãn 3</span></h2>
<div class='slide-inner'>
<div class="prs" id="prs2"></div>
<div class="pr_navi_label" id="pr_navi_label2"></div></div>
</li>
<li>
<h2><span>Tên nhãn 4</span></h2>
<div class='slide-inner'>
<div class="prs" id="prs3"></div>
<div class="pr_navi_label" id="pr_navi_label3"></div></div>
</li>
</ol>
<noscript>
<p>Please enable JavaScript to get the full experience.</p>
</noscript>
</div>

Trong đoạn code trên thì đoạn script chính có sự tương đồng với script dùng trong thủ thuật Tiện ích Bài viết liên quan mới nhất cho nhãn trên sidebar (bạn có thể đọc lại bài viết để tìm hiểu thêm). Ở đây mình gán thêm ảnh dại diện riêng cho từng nhãn. Bạn cần tùy biến những phần được đánh dấu đỏ, lần lượt thay thế các tên nhãn áp dụng Slider.
More about

Tạo hộp thoại thông báo với hiệu ứng trượt

Người đăng: buonkhongem on Thứ Ba, 19 tháng 7, 2011

Một hộp thoại thông báo rất cần thiết cho bất kỳ website hay webblog, có tác dụng đặt một đoạn text với nội dung chào mừng bạn đọc hoặc gửi lời nhắn đến bạn đọc về một vấn đề gì đó. Có nhiều cách để tạo một thông báo như vậy, trong số đó nổi bật nhất có sử dụng thư viện jQuery để tạo hiệu ứng trượt, như bạn có thể thấy tại trang Demo (kéo xuống đáy trang).

Nếu bạn muốn tạo một hộp thoại thông báo như vậy, bạn hãy thực hiện như sau:

Bước 1. Đăng nhập Blogger, vào Design >> Edit HTML. Đặt đoạn code bên dưới vào trước thẻ </head>.
<style>
#slidebox{
width:400px;
height:100px;
padding:10px;
background-color:#fff;
border-top:3px solid #E28409;
position:fixed;
bottom:0px;
right:-430px;
-moz-box-shadow:-2px 0px 5px #aaa;
-webkit-box-shadow:-2px 0px 5px #aaa;
box-shadow:-2px 0px 5px #aaa;
}
</style>

Bước 2. Đặt đoạn code bên dưới vào trước thẻ </body>.
<script src='https://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js ' type='text/javascript'></script>
<script type="text/javascript">
//<![CDATA[
$(document).ready(function() {
$(window).scroll(function(){
var distanceTop = $('#last').offset().top - $(window).height();

if ($(window).scrollTop() > distanceTop)
$('#slidebox').animate({'right':'0px'},300);
else
$('#slidebox').stop(true).animate({'right':'-430px'},100);
});

$('#slidebox .close').bind('click',function(){
$(this).parent().remove();
});
});
//]]>
</script>

Bước 3. Đặt đoạn code bên dưới vào trước thẻ <div id='footer'>.
<p id='last'/>
<div id="slidebox">
<a class="close">[×]</a>
<p>Nội dung thông báo.</p>
</div>

Lưu Template.

Hy vọng bạn sẽ hài lòng với thủ thuật nhỏ này và mong nhận ý kiến góp ý của bạn đọc để có thêm ý tưởng mới.
More about

Tạo plugin Twitter cập nhật tweet mới nhất bằng jQuery

Người đăng: buonkhongem on Thứ Tư, 27 tháng 10, 2010

Bạn muốn theo dõi những bình luận mới nhất từ trang Twitter? Plugin Twitter sẽ giúp tải những bình luận mới nhất của người dùng Twitter trên toàn cầu với chức năng lọc ngôn ngữ thô tục để tránh những nội dung xấu trên trang web của bạn.Plugin này còn có chức năng hỗ trợ tìm kiếm nhiều người dùng, hiển thị hình Avatar và đặc biệt là không làm chậm trang web khi các tweet đang hạ tải.


Xem Demo.
Sau đây là các bước cài đặt:

1. Đặt các file jQuery và javasctipt bên dưới vào trước thẻ </head>.
<style type="text/css">
/*JUITTER PLUGIN CSS*/
#juitter{width:550px;float:left;}
#juitterSearch{clear:both;padding:7px 0 5px 0;}
#juitterSearch P{font-size:1.2em;color:#2CAF1D}
#juitterSearch INPUT{padding:4px;border:solid 1px #666;width:250px;color:#666}

#juitterContainer{} /*Juitter container*/

#juitterContainer .twittList{margin:0;padding:0;} /* UL that will contain the list of tweets */

/* Bellow the list of tweets "<li>" */

#juitterContainer .twittLI{list-style:none;background:#EEFDEA;margin:0;padding:5px 0 0 0;border-bottom:dashed 1px #CAF8C9;padding:3px;clear:both;height:55px;}
#juitterContainer .twittList SPAN.time{color:#777;font-size:0.9em}
#juitterContainer .twittList A{color:#006600;} /*Links inside the tweets list */

/* Bellow the CSS for the avatar image */

#juitterContainer .juitterAvatar{float:left;border:solid 1px #D3EECA;background:#FFF;margin-right:5px;padding:2px;width:48px;;height:48px;}

#juitterContainer .jRM{float:right;clear:both} /*read it on twitter link*/

#juitterContainer .extLink{} /*CSS for the external links*/

#juitterContainer .hashLink{} /*CSS for the hash links*/

/*end of Juitter CSS*/
</style>

<script language="javascript" src="http://juitter.com/app/js/jquery-1.3.1.min.js" type="text/javascript"></script>

<script language="javascript" src="http://juitter.com/app/js/jquery.juitter.js" type="text/javascript"></script>

<script language="javascript" src="http://juitter.com/app/js/system.js" type="text/javascript"></script>
Các các file trên thì file jquery-1.3.1.min.js là phần lõi jQuery để làm cho plugin hoạt động, file jquery.juitter.js là file lõi và cấu hình plugin, file system.js là file mẫu về cách làm cho plugin hoạt động trên trang web của bạn.

Tiếp đến cần tạo phần chứa nội dung plugin, đặt thành phần div với định dạng id như sau:
<div id="juitter">
<form method="post" id="juitterSearch" action="">
<p>Search Twitter: <input type="text" class="juitterSearch" value="Type a word and press enter" />
</p>
</form>
<div id="juitterContainer"></div>
</div>
Đặt phần code ở trên vào phần thân của trang web (giữa 2 thẻ <body>, </body>).
More about

Kiểu trình chiếu phiên bản s3Slider sử dụng jQuery

Người đăng: buonkhongem on Chủ Nhật, 17 tháng 10, 2010

s3Slider jQuery plugin được thực hiện theo ý tưởng script slideshow mượt và được phát triển bởi lập trình viên Boban Karišik tại Serbia.


Bạn có thể xem trình chiếu demo tại trang web này: kruskica.net.

Sử dụng plugin này rất dễ dàng. Trước tiên là kèm vào thư viện jQuery rồi thêm vào javascript s3Slider ở phần <head> của trang web.

<script src="js/jquery.js" type="text/javascript"></script>
<script src="js/s3Slider.js" type="text/javascript"></script>

Bạn có thể hạ tải file js/jquery.js js/s3Slider.js.

Kế đến cần thiết lập HTML cho trang trình chiếu.

<div id="s3slider">
<ul id="s3sliderContent">
<li class="s3sliderImage">
<img src="#" />
<span>Your text comes here</span>
</li>
<li class="s3sliderImage">
<img src="#" />
<span>Your text comes here</span>
</li>
<div class="clear s3sliderImage"></div>
</ul>
</div>

Sau nữa là phải tạo các khai báo CSS:

#s3slider {
width: 400px; /* important to be same as image width */
height: 300px; /* important to be same as image height */
position: relative; /* important */
overflow: hidden; /* important */
}

#s3sliderContent {
width: 400px; /* important to be same as image width or wider */
position: absolute; /* important */
top: 0; /* important */
margin-left: 0; /* important */
}

.s3sliderImage {
float: left; /* important */
position: relative; /* important */
display: none; /* important */
}

.s3sliderImage span {
position: absolute; /* important */
left: 0;
font: 10px/15px Arial, Helvetica, sans-serif;
padding: 10px 13px;
width: 374px;
background-color: #000;
filter: alpha(opacity=70); /* here you can set the opacity of box with text */
-moz-opacity: 0.7; /* here you can set the opacity of box with text */
-khtml-opacity: 0.7; /* here you can set the opacity of box with text */
opacity: 0.7; /* here you can set the opacity of box with text */
color: #fff;
display: none; /* important */
top: 0;

/*
if you put
top: 0; -> the box with text will be shown at the top of the image
if you put
bottom: 0; -> the box with text will be shown at the bottom of the image
*/
}

.clear {
clear: both;
}

Nếu hiểu về CSS thì bạn có thể điều chỉnh các thuộc tính và giá trị cho phù hợp với trang web của mình.

Cuối cùng bạn cần phải thiết lập thời gian bao lâu để một bức hình được chiếu lên trang.

$(document).ready(function() {
$('#s3slider').s3Slider({
timeOut: 4000
});
});

Như vậy toàn bộ phần chức năng hiệu ứng slider được đặt như sau:

<head>
<script type="text/javascript" src="/js/jquery.js"></script>
<script type="text/javascript" src="/js/s3Slider.js"></script>
<script type="text/javascript">
$(document).ready(function() {
$('#s3slider').s3Slider({
timeOut: 4000
});
});
</script>
</head>

Hy vọng rằng bạn sẽ hài lòng với kiểu trình chiếu này.
More about

Cách hoạt động của jQuery

Người đăng: buonkhongem

jQuery là gì?

JQuery là một nền tảng hỗ trợ các lập trình viên trong việc phát triển các ứng dụng trên nền tảng web. Khẩu hiệu của JQuery là "Viết ít, làm được nhiều" quả thật rất ấn tượng với những ai đã và đang sử dụng nó cho công việc của mình. JQuery được bắt đầu được phát triển từ tháng 5 / 2005. JQuery được phân phối, phát triển và bảo đảm tuân thủ theo một trong hai giấy phép là GPL & MIT.

jQuery là một thư viện JavaScript nhanh và súc tích giúp đơn giản hóa các công đoạn xây dựng tài liệu HTML đồng thời làm cho quá trình phát triển web trở nên nhanh chóng hơn. jQuery được thiết kế nhằm thay đổi cách mà bạn viết JavaScript.


Lý thuyết cơ bản về jQuery

Đây là phần lý thuyết cơ bản nhằm giúp bạn bắt đầu sử dụng jQuery. Nếu bạn chưa tạo một trang thí nghiệm, hãy tạo một trang HTML mới với nội dung như sau:

<html>
<head>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript">
// Your code goes here
</script>
</head>
<body>
<a href="http://jquery.com/">jQuery</a>
</body>
</html>

Sửa thuộc tính src trong thẻ script để trỏ tới nguồn file jquery.js. Ví dụ, nếu file jquery.js ở cùng thư mục với file HTML, thì bạn có thể dùng:

<script type="text/javascript" src="jquery.js"></script>

Bạn có thể hạ tải bản sao jQuery từ trang Downloading jQuery.

Chạy mã khi tài liệu sẵn sàng


Thứ đầu tiên mà hầu hết các lập trình viên Javascript thực hiện là thêm một số mã vào chương trình của họ, tương tự như sau:

window.onload = function(){ alert("welcome"); }

Bên trong đó là mã mà bạn cần chạy đúng khi trang được tải. Tuy nhiên vấn đề là ở chỗ mã Javascript không chạy cho đến khi tất cả các hình ảnh trong trang được tải xong (kể cả banner quảng cáo). Lý do cho việc sử dụng chức năng window.onload trước tiên là tài liệu HTML vẫn chưa được tải xong khi bạn cố gắng chạy mã của mình.

Để tránh cả 2 vấn đề này, jQuery có một câu lệnh đơn giản kiểm tra tài liệu và đợi cho đến khi nó được thực hiện, gọi là sự kiện sẵn sàng:

$(document).ready(function(){
// Your code here
});

Bên trong sự kiện sẵn sàng nêu trên, thêm chức năng quản lý kích trỏ cho liên kết:

$(document).ready(function(){
$("a").click(function(event){
alert("Thanks for visiting!");
});
});

Lưu file HTML và tải lại trang thử nghiệm trên công cụ trình duyệt. Kích trỏ vào liên kết trên trang và trình duyệt sẽ hiện ra thông báo pop-up trước khi đến trang chính có jQuery.

Đối với các sự kiện kích trỏ và phần lớn các sự kiện khác, bạn có thể ngăn chặn cách chạy mặc định - ở đây, theo liên kết đến jquery.com – bằng cách gọi chức năng event.preventDefault() trong bộ quản lý sự kiện:

$(document).ready(function(){
$("a").click(function(event){
alert("As you can see, the link no longer took you to jquery.com");
event.preventDefault();
});
});

Ví dụ đầy đủ

Sau đây là ví dụ về những gì mà file HTML đầy đủ có thể có được nếu bạn sử dụng script này trong file của bạn. Chú ý rằng nó luên kết đến mạng phân phối nội dung (CDN) của Google để tải file cốt lõi của jQuery. Ngoài ra trong khi script tùy biến được kèm trong thẻ <head>, nhìn chung ưu tiên đặt nó trong một file riêng và đảm bảo rằng file có thuộc tính scr trong thành phần script.

<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3/jquery.min.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function(){
$("a").click(function(event){
alert("As you can see, the link no longer took you to jquery.com");
event.preventDefault();
});
});

</script>
</head>
<body>
<a href="http://jquery.com/">jQuery</a>
</body>
</html>

Thêm và bỏ một lớp CSS

Quan trọng: Các ví dụ jQuery còn lại sẽ cần được đặt trong sự kiện sẵn sàng để mà chúng hoạt động được khi tài liệu sẵn sàng hoạt động. Xem phần Chạy mã khi tài liệu sẵn sàng ở trên.

Một tác vụ phố biến là thêm (hoặc bỏ) một lớp CSS.

Trước tiên, thêm một số thông tin phong cách trong thẻ <head> trong tài liệu, trông như thế này:

<style type="text/css">
a.test { font-weight: bold; }
</style>

Kế đến thêm chức năng gọi thêm lớp (addClass) cho script của bạn:

$("a").addClass("test");

Tất cả các thành phần a trong tài liệu lúc này đều in đậm. Để loại bỏ lớp này, sử dụng chức năng loại bỏ lớp (removeClass):

$("a").removeClass("test");

Chú ý: CSS cho phép nhiều lớp được thêm vào một thành phần.

Các hiệu ứng đặc biệt

Trong jQuery, có 2 hiệu ứng sẵn có, thực sự giúp website của bạn trở nên nổi bật. Để đặt hiệu ứng này vào trang thử nghiệm, thay đổi chức năng kích trỏ mà bạn đã thêm vào lúc đầu:

$("a").click(function(event){
event.preventDefault();
$(this).hide("slow");
});

Lúc này, nếu bạn kích trỏ vào bất kỳ một liên kết thì nó sẽ biến mất từ từ.

Triệu gọi và chức năng
Triệu gọi là một chức năng được xem là đối số đến một chức năng khác và được thực thi sau khi chức năng cha đã hoàn thành. Điều đặc biệt vầ hàm triệu gọi là các chức năng xuất hiện sau khi chức năng cha có thể hoạt động trước khi chức năng triệu gọi hoạt động. Một điều quan trọng nữa cần biết là cách thức thông qua chức năng triệu gọi một cách hợp lý.

Triệu gọi không có đối số

Đối với chức năng triệu gọi không có đối số, bạn nên đặt nó như thế này:

$.get('myhtmlpage.html', myCallBack);

Chú ý rằng tham số thứ 2 ở đây đơn giản chỉ là tên chức năng (nhưng không phải là một chuỗi và không có dấu ngoặc đơn).

Tác giả: John Resig – Dịch giả: Huỳnh Nhật Hà
More about

Tạo tab nội dung đơn giản với jQuery

Người đăng: buonkhongem on Thứ Ba, 21 tháng 9, 2010

[FD BlOg] - Sau một thời gian dài bỏ hoang BlOg FD, hôm nay mình sẽ trở lại với các bạn với một thủ thuật tạo tab nội dung. Thủ thuật này sẽ hướng dẫn các bạn tạo các tab nội dung đơn giản nhưng cũng không kém phần bắt mắt. Ở thủ thuật này mình sẽ hướng dẫn khung sườn để tạo tab nội dung, còn phần nội dung bên trong các tab các bạn sẽ tự mình thêm vào.




Mình nhớ là có lần 1 bạn nào đó đã nhờ mình giới thiệu dạng tab như thế này. Dùng nó sẽ giúp tiết kiệm cho không gian blog của bạn. Tab mẫu mình giới thiệu chỉ có 2 màu trắng đen, rất giản dị và dễ phù hợp khi các bạn đưa vào blog của mình nếu không muốn chỉnh sửa gì nhiều.

Như các bạn đã biết, muốn tạo các tab nội dung như vậy thì nhất thiết phải dùng tới javascript, và ở đây cụ thể là jQuery ( Tuy nhiên cũng có thể dùng CSS để tạo tab dạng này nhưng nó trông không được pro cho lắm ). Do đó để cho tab được load nhanh, mình có lời khuyên là không nên dùng javascript vào trong các nội dung của tab. Các bạn nên thêm các thủ thuật đơn thuần chỉ là HTML. Như thế tab của mình sẽ load nhanh hơn.

Hình ảnh minh họa thủ thuật :


Và bên dưới là code của thủ thuật: (các bạn tạo mội widget HTML/Javascript rồi dán code của thủ thuật vào)

<link rel="stylesheet" href="http://data.fandung.com/blog/demo/jquery-tab/data/style.css" type="text/css" media="screen">

<script src="http://data.fandung.com/blog/demo/jquery-tab/data/jquery-1.js"></script>
<script>
$(document).ready(function(){
$("a.tab").click(function () {
$(".active").removeClass("active");
$(this).addClass("active");
$(".content").slideUp();
var content_show = $(this).attr("title");
$("#"+content_show).slideDown();
});
});
</script>

<div id="tabbed_box_1" class="tabbed_box">
<div class="tabbed_area">

<ul class="tabs">
<li><a href="#" title="content_1" class="tab active">Tips</a></li>
<li><a href="#" title="content_2" class="tab">Archives</a></li>
<li><a href="#" title="content_3" class="tab">Pages</a></li>
</ul>

<div style="display: block;" id="content_1" class="content">
<!-- nội dung của tab1 -->
<ul>
<li><a href="#">HTML Techniques <small>24 Posts</small></a></li>
<li><a href="#">CSS Styling <small>32 Posts</small></a></li>
<li><a href="#">Blogspot Tutorials <small>112 Posts</small></a></li>
<li><a href="#">Web Design <small>19 Posts</small></a></li>
</ul>
<!-- END nội dung của tab1 -->
</div>

<div style="display: none;" id="content_2" class="content">
<!-- nội dung của tab2 -->
<ul>
<li><a href="#">November 2009 <small>4 Posts</small></a></li>
<li><a href="#">October 2009 <small>22 Posts</small></a></li>
<li><a href="#">September 2009 <small>12 Posts</small></a></li>
<li><a href="#">August 2009 <small>43 Posts</small></a></li>
<li><a href="#">July 2009 <small>15 Posts</small></a></li>
</ul>
<!-- END nội dung của tab2 -->
</div>

<div style="display: none;" id="content_3" class="content">
<!-- nội dung của tab3 -->
<ul>
<li><a href="#">Home</a></li>
<li><a href="#">Toturials</a></li>
<li><a href="#">Contact</a></li>
<li><a href="#">About</a></li>
</ul>
<!-- END nội dung của tab3 -->
</div>

</div>
</div>

- Khác với khác thủ thuật trước, mình không đưa code CSS vào trong thủ thuật mà đưa link (để code cho đỡ rườm rà). Nếu bạn nào muốn thay đổi lại cho phù hợp thì download file CSS về (http://data.fandung.com/blog/demo/jquery-tab/data/style.css) và thay đổi lại code chút ít cho phù hợp. Các bạn có thể tùy chỉnh lại code CSS ở 1 vài điểm chủ yếu như bên dưới :

#tabbed_box_1 {
margin: 40px auto 40px auto;
width:300px; /*độ rộng của tab*/
}
...
...
...

.tabbed_area {
border:1px solid #494e52;
background-color:#636d76; /*màu nền của tab (nền đen bên ngoài)*/
padding:7px;
}

- Trong demo mẫu, mình chỉ giới thiệu 3 tab, nếu muốn thêm các tab khác, các bạn chỉ cần thêm 1 vài code nhỏ như bên dưới :

...
...
...
<li><a href="#" title="content_3" class="tab">Pages</a></li>
<li><a href="#" title="content_4" class="tab">FAQs</a></li>
</ul>
...
...
...

<!-- END nội dung của tab3 -->
</div>

<div style="display: none;" id="content_4" class="content">
<!-- nội dung của tab4 -->

{Nội dung TAB}

<!-- END nội dung của tab4 -->
</div>

</div>
</div>

- Lưu ý : khi thêm tab vào, các bạn nên thay đổi lại độ rộng của tab, nếu không sẽ bị lỗi nhỏ như bên dưới

- và code để thay đổi là đây (trong file CSS)

#tabbed_box_1 {
margin: 40px auto 40px auto;
width:300px; /*độ rộng của tab*/
}


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

Plugin Lightbox cho blogspot (Phần II)

Người đăng: buonkhongem on Chủ Nhật, 25 tháng 4, 2010

Ở phần 1 mình đã giới thiệu cho các bạn cách sử dụng chung của plugin lightbox khi bạn muốn tạo 1 slide ảnh nào đó thì có thể tham khảo ở phần 1. Ở phần 2 này mình sẽ hướng dẫn các bạn chèn thẳng nó vào bài viết, tức là mỗi khi bài viết có ảnh nào đó thì khi bạn nhấp vô ảnh thì nó sẽ tự động hiển thị lightbox ra. Các này sẽ dễ dàng hơn rất nhiều nếu bạn dùng cách ở Phần 1 mình hướng dẫn.

Xem demo mình test trên blogspot : DEMO

Hình ảnh minh họa :


* Sau đây là cách thực hiện :
1. Vào bố cục
2. Vào chỉnh sửa code HTML
3. Nhấp chọn mở rộng mẫu tiện ích (Expand Widget Templates)
4. Chèn đọan code bên dưới vào trước dòng code </head> hoặc sau dòng ]]></b:skin>


<script src='http://data.fandung.com/blog/demo/jquery-lightbox/js/jquery.js' type='text/javascript'></script>
<script src='http://data.fandung.com/blog/demo/jquery-lightbox/js/b-jquery.lightbox-0.5.js' type='text/javascript'></script>
<link href='http://data.fandung.com/blog/demo/jquery-lightbox/css/jquery.lightbox-0.5.css' media='screen' rel='stylesheet' type='text/css'/>
<script type='text/javascript'>

$(function() {
$('#lightbox a[href$=.jpg]').lightBox();
$('#lightbox a[href$=.JPG]').lightBox();
$('#lightbox a[href$=.jpeg]').lightBox();
$('#lightbox a[href$=.JPEG]').lightBox();
$('#lightbox a[href$=.gif]').lightBox();
$('#lightbox a[href$=.GIF]').lightBox();
$('#lightbox a[href$=.bmp]').lightBox();
$('#lightbox a[href$=.BMP]').lightBox();
$('#lightbox a[href$=.png]').lightBox();
$('#lightbox a[href$=.PNG]').lightBox();
$('#lightbox a[href$=.tif]').lightBox();
$('#lightbox a[href$=.TIF]').lightBox();
});
</script>


- Ở phần 2 này có nhiều hàm gọi hơn ở phần 1 . Ở đây mình sử dụng hàm để gọi tất cả thẻ a trong link có các kí tự như “.png“, “.gif“, “.jpg“, … trong id lightbox. Tức là các link hình ảnh. Ở đây nó không phân biệt được chữ hoa chữ thường nên mình mới phải làm nhiều hàm gọi như vậy, và ở trên mình chỉ liệt kê 1 số đuôi ảnh thường dùng, nếu ai muốn đầy đủ thì cứ add thêm.

5. Sau khi chèn xong code ở bước 4, các bạn khoan save template lại, tiếp tục xuống dưới tìm đọan code như bên dưới :
<data:post.body/>

và thêm đọan code đánh dấu highlight như bên dưới :
<div id='lightbox'>

<data:post.body/>

</div>


Ở bước này mình ép cho tòan bộ phần nội dung của blog mang id là “lightbox” để đọan mã javascript trên có thể dễ dàng tìm đến các thẻ a trong bài viết.

6. Cuối cùng là save template lại.

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

Plugin LightBox cho blogspot (Phần 1)

Người đăng: buonkhongem on Thứ Bảy, 24 tháng 4, 2010


Để mở hàng cho các thủ thuật về blogspot ở nhà mới, hôm nay mình xin giới thiệu với các bạn cách chèn plugin Light Box vào blogspot. Đây là 1 plugin sử dụng jQuery, vì thế mà khi chạy trông nó sẽ rất mượt. Light box là 1 plugin cho phép ta trình diễn ảnh (xem ảnh) ngay trên blog mà không cần hiển thị ở của sổ mới. Plugin này họat động cũng gần giống với các forum VBB version từ 3.8 trở lên. Khi bạn nhấp vào 1 ảnh thumbnail nào đó thì sẽ có 1 box nhỏ hiển thị ảnh với kích thước thật.

Xem Demo ở đây : DEMO

Còn đây là demo mình text trên blogspot : Demo on Blogspot

Hình ảnh minh họa :

Light box - mothuthuat.com

Sau đây là các bước thực hiện:

I. Chèn code chính của thủ thuật vào template của blog:
1. Vào bố cục
2. Vào chỉnh sửa code HTML
3. Chèn đọan code bên dưới vào trước dòng code </head> hoặc sau dòng code ]]></b:skin> :


<style type='text/css'>

/* jQuery lightBox plugin – Gallery style */

#gallery {
background-color: #777;
padding: 5px;
width: 592px;
height:125px;
}

#gallery ul { list-style: none; }

#gallery ul li { display: inline;}
#gallery ul img {
border: 5px solid #3e3e3e;
border-width: 5px 5px 20px;

}

#gallery ul a:hover img {
border: 5px solid #fff;
border-width: 5px 5px 20px;
color: #fff;

}

#gallery ul a:hover { color: #fff; }

/* END – jQuery lightBox plugin – Gallery style */

</style>

<script src='http://data.fandung.com/blog/demo/jquery-lightbox/js/jquery.js' type='text/javascript'/>

<script src='http://data.fandung.com/blog/demo/jquery-lightbox/js/b-jquery.lightbox-0.5.js' type='text/javascript'/>

<link href='http://data.fandung.com/blog/demo/jquery-lightbox/css/jquery.lightbox-0.5.css' media='screen' rel='stylesheet' type='text/css'/>

<script type='text/javascript'>
$(function() {
$('#gallery a').lightBox();
});

</script>



4. Save template.

Lưu ý : đọan code CSS trong bước 3 chỉ là code mẫu, các bạn có thể tùy chỉnh lại theo ý mình.

II. Chèn code hiển thị :

- ở bước này các bạn có thể chèn vào đâu tùy thích, ví dụ muốn plugin
này hiển thị trong bài viết thì chèn vào nội dung bài viết, hoặc muốn
hiển thị đâu đó ngòai trang chính thì tạo 1 widget HTML/Javascript rồi
dán code bên dưới vào :

<div id=”gallery“>

<ul>
<li>
<a href=”Link ảnh 1″ title=”Mô tả cho ảnh 1″>
<img src=”Link ảnh thumbnail 1″ width=”72″ height=”72″ alt=”" />
</a>
</li>

<li>
<a href=”Link ảnh 2″ title=”Mô tả cho ảnh 2″>
<img src=”Link ảnh thumbnail 2″ width=”72″ height=”72″ alt=”" />
</a>
</li>

<li>
<a href=”Link ảnh 3″ title=”Mô tả cho ảnh 3″>
<img src=”Link ảnh thumbnail 3″ width=”72″ height=”72″ alt=”" />
</a>
</li>

</ul>

</div>

- Nếu muốn thêm nhiều ảnh thì các bạn chỉ việc thêm dòng code tương tự như bên dưới :

<li>

<a href=”Link ảnh 4″ title=”Mô tả cho ảnh 4″>
<img src=”Link ảnh thumbnail 4″ width=”72″ height=”72″ alt=”" />
</a>
</li>

</div>

- Link ảnh 1, 2, … : là link của những ảnh mà bạn muốn hiển thị (ảnh gốc)
- Link ảnh thumbnail 1, 2, … : là link của các ảnh nhỏ (thumbnail) sẽ được hiển thị sẵn ở plugin.
- Các link ảnh gốc và ảnh thumbnail có thể giống nhau, nhưng mình khuyên
nên tạo ảnh thumbnail riêng và có kích thước nhỏ thôi (như trong code
mẫu là 72×72px). Như thế plugin sẽ load nhanh hơn.
- Mô tả ảnh 1, 2, … : đây là dòng chú thích sẽ xuất hiện bên dước ảnh khi box hiển thị. Các bạn xem hình minh họa bên dưới :

lightbox2 - mothuthuat.com

- Nếu muốn tạo nhiều box để show ảnh thì các bạn chỉ cần tạo code tương tự như ở bước II. Như ng chú ý các bạn phải đổi lại tên id của thẻ div chứa nội dung của lightbox, vì nếu như trên cùng 1 trang mà có 2 thẻ div giống nhau thì chỉ có 1 lightbox chạy mà thôi. Như ở demo mình đã làm 2 cái trên cùng 1 trang.

- Việc sửa code lại tương tự như bên dưới :

<div id=”gallery2“>

<ul>
<li>
<a href=”Link ảnh 1″ title=”Mô tả cho ảnh 1″>
<img src=”Link ảnh thumbnail 1″ width=”72″ height=”72″ alt=”" />
</a>
</li>

<li>
<a href=”Link ảnh 2″ title=”Mô tả cho ảnh 2″>
<img src=”Link ảnh thumbnail 2″ width=”72″ height=”72″ alt=”" />
</a>
</li>

<li></div>

- Và tất nhiên là cũng phải tạo 1 đọan mã code CSS riêng cho id gallery2 này.
- Và 1 việc quan trọng cuối cùng để tạo 1 lightbox khác là bạn phải thêm 1 đọan code javascript nhỏ để nó có thể hoạt động.
- Các bạn tìm trong code ở bước I-3 sẽ thấy đọan code này :

<script type=’text/javascript’>

$(function() {
$(‘#gallery a’).lightBox();
});
</script>


và thêm đọan code như bên dưới (đã được đánh dấu highlight)

<script type=’text/javascript’>

$(function() {
$(‘#gallery a’).lightBox();

$(‘#gallery2 a’).lightBox();

});


- Lưu ý là tên id của thẻ div chứa nội dung phải trùng với tên id mà đã được thêm vào code javascript (ở đây là gallery2).
Như vậy thủ thuật đã hòan thành.

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

Tiện ích Recent posts khá ấn tượng với jQuery

Người đăng: buonkhongem on Thứ Hai, 17 tháng 8, 2009

[FD's BlOg] - Ở bài viết này mình sẽ lại giới thiệu 1 style mới cho tiện ích Recent Posts, đó là sẽ tạo thêm button "Xem thêm" bên dưới, khi click vào button này thì sẽ hiển thị thêm các bài viết khác. Với hiệu ứng hiển thị sử dụng từ jQuery. Ngoài việc hiển thị bài viết, ở thủ thuật này mình cũng giới thiệu khung trang trí mẫu cho tiện ích.
Xem demo : LIVE DEMO


Hình ảnh minh họa :


Ở thủ thuật này, khung trang trí mẫu có kích thước cố định, vì thế nếu muốn hiển thị tốt trên blog của bạn, bạn phải chỉnh sửa các hình ảnh của khung mẫu lại cho phù hợp. (Việc chỉnh sửa đơn thuần là dùng các chương trình đồ họa để tăng hoặc giảm kích thước của ảnh)

Bên dưới là 3 file ảnh của khung trang trí, các bạn có thể download về để chỉnh sửa lại :

http://i342.photobucket.com/albums/o433/bkprobk/head.gif
http://i342.photobucket.com/albums/o433/bkprobk/center.jpg
http://i342.photobucket.com/albums/o433/bkprobk/footer.jpg

☼ Các bước thực hiện:
1. Vào bố cục
2. Vào chỉnh sửa code HTML
3. Chèn code bên dưới vào trước thẻ đóng </head>

<script type="text/javascript" src="http://data.fandung.com/blog/demo/jQuery-RP/ScriptHandler.js">
<script type="text/javascript" src="http://data.fandung.com/blog/demo/jQuery-RP/jquery-ui-1.js">

<style type="text/css">
*
{
margin:0;
padding:0;
}


#divContainerRight
{
width:300px;
background:#ffffff url(http://i342.photobucket.com/albums/o433/bkprobk/center.jpg) repeat-y top left;
}

#divContainerRightHead
{
width:300px;
background: url(http://i342.photobucket.com/albums/o433/bkprobk/head.gif) no-repeat top left;
}

#divContainerRightFoot
{
width:300px;
height:6px;
background: url(http://i342.photobucket.com/albums/o433/bkprobk/footer.jpg) no-repeat bottom left;
}


#ulrelateArtist
{
list-style-type:disc;
width:270px;
margin:0 auto;
}

#ulrelateArtist li
{

border-bottom:1px dotted #cccccc;
padding-left:5px;
padding-top:10px;
list-style-position:inside;
color:#00A79B;
}

#ulrelateArtist li a
{
color: #009f92;
font-size: 11px;
font-family:Arial;
text-decoration:none;
}

#ulrelateArtist li a:hover
{
color: #009f92;
font-weight: normal;
text-decoration:underline;
}

</style>

4. Save template
5. Tạo 1 widget HTML/Javascript và dán code bên dưới vào:

<div style="margin: 0pt auto; width: 300px; padding-top: 5px;">

<div style="padding-bottom: 5px;">
<div id="divContainerRight">
<div id="divContainerRightHead" class="clearfix">
<div style="line-height: 28px; color: rgb(255, 255, 255); padding-left: 10px; font-weight: 900; font-size:12px;">&nbsp;
</div>

<script language="JavaScript">
imgr = new Array();

imgr[0] = "http://sites.google.com/site/fdblogsite/Home/nothumbnail.gif";

showRandomImg = true;

aBold = true;

numposts = 10; // số bài viết sẽ hiển thị khi click vào button "Xem thêm"
showposts = 5; // số bài viết sẽ được mặc định hiển thị

home_page = "http://fandung.blogspot.com/";
label = "Love";

</script>

<script src="http://data.fandung.com/blog/demo/jQuery-RP/RP_jQuery-post.js" type="text/javascript"></script>

<div id="ctl00_ContentPlaceHolder1_ucMp3Detail1_ucRelateArtistOnSearch1_divButtonArtistNext" style="margin:0pt auto; width: 270px; text-align: right; cursor: pointer; padding-top: 4px; ">Xem thêm <label style="color:rgb(250, 1, 134);">»</label>&nbsp;</div>
</div>
<div id="divContainerRightFoot"></div>
</div>
</div>

- Nếu muốn hiển thị bài viết theo nhãn nào đó thì các bạn đổi file RP_jQuery-post.js thành file RP_jQuery-label.js.
- Và đây là link của file RP_jQuery-label.js :

http://data.fandung.com/blog/demo/jQuery-RP/RP_jQuery-label.js

- Gợi ý nhỏ khi hiển thị các bài viết từ nhãn, các bạn có thể chú thích thêm ở phần header của khung như hình bên dưới :

- Để làm điều này, các bạn tìm đến đoạn code như bên dưới (trong code của thủ thuật), và thêm vào đoạn code màu đỏ như bên dưới:

<div style="line-height: 28px; color: rgb(255, 255, 255); padding-left: 10px; font-weight: 900; ">&nbsp;Love
</div>


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