Hiệu ứng fading tooltip với phần mô tả bằng hình ảnh

Người đăng: kiemdaigia on Thứ Sáu, 31 tháng 12, 2010

Fading Tooltip là một script tạo hiệu ứng mô tả liên kết rất dễ sử dụng và rất nhẹ, chỉ với dung lượng 2kb. Nó đã được test trên các công cụ trình duyệt như IE6+, Firefox, Opera và Safari. Jacob Gube tại trang Six Revisions đã có bài viết về script này. Sau khi nghiên cứu, tôi xin trình bày cách thực hiện hiệu ứng tooltip như vậy để quý bạn đọc chia sẻ kinh nghiệm thiết kế web. :3)

Để cài đặt, trước tiên bạn hãy xem phần Demo, sau đó lần lượt đọc qua các bước theo thứ tự Script >> CSS >> HTML.

Đây là phần giới thiệu demo. Bạn hãy rê con trỏ vào các liên kết để thấy hiệu ứng. Demo 1 là kiểu tooltip có background và Demo 2 là kiểu tooltip không có background.


Ut tincidunt nisi quis elit dignissim mattis. Phasellus sit amet nunc eu est scelerisque tincidunt sit amet vitae sem. Sed ut nisi lorem. Vivamus ut felis libero. Vivamus venenatis justo ante. Nunc elementum interdum dolor, sit amet condimentum diam fermentum ac. Sed dictum condimentum arcu, id ornare turpis accumsan eu. Praesent ultricies egestas nulla at consectetur. Nunc sed est nulla, sit amet aliquam purus. Nam semper lacinia egestas. Nunc dictum lobortis arcu at bibendum?

Donec commodo nulla et magna malesuada a euismod metus aliquam. In hac habitasse platea dictumst. Vivamus mattis, nisi ac commodo cursus, metus justo eleifend sem, non auctor nisi felis eu tellus. Duis convallis condimentum elit, quis ullamcorper odio commodo ac. Aliquam ornare commodo fermentum. Aenean ut diam sed.


Bước 1. Đặt đoạn code sau đây vào trước thẻ </head>.

<script type="text/javascript">
var tooltip=function(){
var id = 'tt';
var top = 3;
var left = 3;
var maxw = 300;
var speed = 10;
var timer = 20;
var endalpha = 95;
var alpha = 0;
var tt,t,c,b,h;
var ie = document.all ? true : false;
return{
show:function(v,w){
if(tt == null){
tt = document.createElement('div');
tt.setAttribute('id',id);
t = document.createElement('div');
t.setAttribute('id',id + 'top');
c = document.createElement('div');
c.setAttribute('id',id + 'cont');
b = document.createElement('div');
b.setAttribute('id',id + 'bot');
tt.appendChild(t);
tt.appendChild(c);
tt.appendChild(b);
document.body.appendChild(tt);
tt.style.opacity = 0;
tt.style.filter = 'alpha(opacity=0)';
document.onmousemove = this.pos;
}
tt.style.display = 'block';
c.innerHTML = v;
tt.style.width = w ? w + 'px' : 'auto';
if(!w && ie){
t.style.display = 'none';
b.style.display = 'none';
tt.style.width = tt.offsetWidth;
t.style.display = 'block';
b.style.display = 'block';
}
if(tt.offsetWidth > maxw){tt.style.width = maxw + 'px'}
h = parseInt(tt.offsetHeight) + top;
clearInterval(tt.timer);
tt.timer = setInterval(function(){tooltip.fade(1)},timer);
},
pos:function(e){
var u = ie ? event.clientY + document.documentElement.scrollTop : e.pageY;
var l = ie ? event.clientX + document.documentElement.scrollLeft : e.pageX;
tt.style.top = (u - h) + 'px';
tt.style.left = (l + left) + 'px';
},
fade:function(d){
var a = alpha;
if((a != endalpha && d == 1) || (a != 0 && d == -1)){
var i = speed;
if(endalpha - a < speed && d == 1){
i = endalpha - a;
}else if(alpha < speed && d == -1){
i = a;
}
alpha = a + (i * d);
tt.style.opacity = alpha * .01;
tt.style.filter = 'alpha(opacity=' + alpha + ')';
}else{
clearInterval(tt.timer);
if(d == -1){tt.style.display = 'none'}
}
},
hide:function(){
clearInterval(tt.timer);
tt.timer = setInterval(function(){tooltip.fade(-1)},timer);
}
};
}();
</script>

Bước 2. Đặt đoạn code sau đây vào trước thẻ </head>.

<style>
.hotspot {
color: #94D5FD;
cursor: pointer;
font-weight: bold;
font-family: Arial, Tahoma;
font-size: 13px;
}

#tt {
background: CornflowerBlue;
color: #FFF;
display: block;
font-family: Arial;
font-size: 16px;
padding: 5px 10px;
position: absolute;
-moz-border-radius: 10px;
}
</style>

Ở kiểu Demo 1, sử dụng background: CornflowerBlue;. Ở kiểu Demo 2, sử dụng background: transparent;.

Bước 3. Thiết lập cấu trúc HTML như sau.

<span class="hotspot" onmouseover="tooltip.show('Nội dung mô tả ngắn');" onmouseout="tooltip.hide();"> text liên kết </span>

Nếu trong phần mô tả, bạn muốn sử dụng các thẻ HTML thì phải mã hóa dấu < thành &lt; và dấu > thành &gt;.

Nếu sử dụng hình ảnh làm phần mô tả liên kết thì sử dụng cấu trúc như sau.

<span class="hotspot" onmouseover="tooltip.show('&lt;img src=\'URL_hình ảnh\'/&gt;');" onmouseout="tooltip.hide();"> text liên kết </span>

Cập nhật: Theo yêu cầu của bạn hoang-deejay, bạn ấy muốn sử dụng hiệu ứng này cho hình ảnh. Vậy đối với hình ảnh thì sử dụng cấu trúc HTML như sau.

<span class="hotspot" onmouseover="tooltip.show('Nội dung mô tả ngắn cho hình ảnh');" onmouseout="tooltip.hide();"> <img src="URL_hình ảnh" /> </span>

Ví dụ:

Bạn có thể tạo hiệu ứng này cho blogspot tương tự như các bước sử dụng cho website.

Chúc bạn thành công! :7)
More about

Tạo menu dạng tab với SimpleTabs

Người đăng: kiemdaigia on Thứ Năm, 30 tháng 12, 2010

SimpleTabs là một script do Fotis Evangelou phát triển với những tính năng đáng chú ý sau đây: không phụ thuộc vào thư viện bên thứ ba như jQuery, Mootools… Điều đó có nghĩa là nó sẽ không xung đột với các script khác có sử dụng những thư viện nói trên; nó cũng không cần ID khác hay phần chứa tab để tạo ra nhiều bộ tab khác nhau, vì thế bạn có thể sử dụng nhiều tab dùng SimpleTabs trên cùng một trang web; và một đặc tính khác là sử dụng đơn giản với tốc độ tải trang nhanh, hoạt động tốt trên mọi công cụ trình duyệt.

Bạn có thể xem Demo dưới đây.



Bài viết
Nhận xét

Để tạo tab như vậy cho website/blogspot của mình, bạn hãy thực hiện theo các bước cài đặt lần lượt Script >> CSS >> HTML.

Bước 1. Đặt đoạn code sau đây vào trước thẻ </head>.

<script src="http://hacodeproject.googlecode.com/files/simpletabs_1.3.js" type="text/javascript"/></script>
Bước 2. Đặt đoạn code sau đây vào trước thẻ </head>.

<style type='text/css'>
div.simpleTabs {padding:10px; }
ul.simpleTabsNavigation {margin:0 10px; padding:0; text-align:left; }
ul.simpleTabsNavigation li {list-style:none; display:inline; margin:0; padding:0;background:#ffffff; }
ul.simpleTabsNavigation li a {border:1px solid #E0E0E0; padding:3px 6px; background:#F0F0F0; font-size:14px; text-decoration:none; font-family:Arial, "Times New Roman", Times, serif;background:none !important; }
ul.simpleTabsNavigation li a:hover {text-decoration:none; background-color:#F6F6F6; font-family:Arial, "Times New Roman", Times, serif; }
ul.simpleTabsNavigation li a.current {background:#fff; color:#222; border-top:2px solid #990000; }
div.simpleTabsContent {background:#ffffff;border:2px solid #E0E0E0; padding:5px 15px 15px 15px; margin-top:3px; display:none; }
div.simpleTabsContent.currentTab {display:block; }
</style>
Bước 3. Thiết lập cấu trúc HTML như sau.

<div class="simpleTabs">
<ul class="simpleTabsNavigation">
<li><a href="javascript:void(0);">Tiêu đề tab 1</a></li>
<li><a href="javascript:void(0);">Tiêu đề tab 2</a></li>
<li><a href="javascript:void(0);">Tiêu đề tab 3</a></li>
</ul>
<div class="simpleTabsContent">Nội dung Tab 1</div>
<div class="simpleTabsContent">Nội dung Tab 2</div>
<div class="simpleTabsContent">Nội dung Tab 3</div>
</div>
Bạn có thể lần lượt thêm Tab và nội dung tương ứng cho Tab theo đúng định dạng như trên.
Code ở phần CSS đã có một số điều chỉnh so với bản Demo của Fotis Evangelou (Komrade)
More about

Đọc sách miễn phí với Blio eReader

Người đăng: kiemdaigia on Thứ Tư, 29 tháng 12, 2010

Ngồi trong một chiếc ghế bành với một cuốn sách trong tay, cảm giác đó thật tuyệt. Nhưng đối mặt với nó là một loạt các vấn đề: lưu trữ cuốn sách ở đâu, như thế nào và thường giá tiền mua sách cũng rất đắt.

blio1

Một kệ sách lớn có thể có giá trị lên tới hàng trăm hoặc ít ra là hàng ngàn đô la, và khi bạn muốn di chuyển nó lại cũng là một vấn đề. Những nhược điểm này là lý do thúc đẩy việc đọc sách điện tử ngày càng phổ biến và phát triển. Một trong những trình đọc sách điện tử được ưa chuộng nhất hiện nay phải kể đến Blio eReader. Giống như các trình đọc sách điện tử khác, Blio eReader cho phép bạn có thể bạn sắp xếp tất cả các cuốn sách mà bạn sở hữu trên kệ thông qua thanh menu My Library.

Tuy nhiên, nếu muốn bạn có thể sắp xếp những cuốn sách như là một danh sách đơn giản. Các cuốn sách có thể được sắp xếp theo bảng chữ cái dựa trên tiêu đề, tác giả hoặc theo ngày đã đọc. Trong đó bao gồm cả chức năng tìm kiếm, do đó việc tìm một cuốn sách trong một thư viện lớn trở nên rất đơn giản.

Đọc sách miễn phí

Điểm mạnh của Blio còn được thể hiện qua “nhà sách Blio” rất phong phú, nhờ mối quan hệ với nhà phân phối sách Baker & Taylor. Có thể kể đến 6 nhà xuất bản lớn là “đối tác” của Blio, bao gồm Hachette Book Group, HarperCollins, Penguin Group, Macmillan, Random House, Simon & Schuster, cùng với những nhà xuất bản giáo dục khác.

Trong Blio eReader có một cửa hàng sách mà khi đọc bạn sẽ phải trả tiền. Tuy nhiên phần độc đáo nhất đó là Free Books, được gắn kết với Google Books. Sử dụng Blio bạn có thể tìm kiếm sách thông qua số lượng lớn các công trình công bố công khai được liệt kê trên Google, bao gồm nhiều thể loại khác nhau của khoa học, văn học và triết học.

blio2

Ví dụ nếu bạn cần phải đọc về tác phẩm của Shakespeare?. Bạn có thể tải bất kỳ vở kịch nào của ông từ Google Books thông qua Blio. Mặt dù, bạn có thể thực hiện việc này một cách độc lập bằng cách tìm kiếm sách trên Google Books, nhưng việc đọc sách trên Blio eReader sẽ dễ dàng và hấp dẫn hơn.

Trải nghiệm đọc

Sau khi tìm kiếm và tải cuốn sách bạn cần về My Library của mình. Để đọc bạn chỉ cần nháy đúp vào một cuốn sách trong My Library để mở nó ra. Nếu bạn muốn chuyển các trang tiếp theo cách cũ bạn chỉ cần kéo chuột đến góc dưới cùng bên phải của eBook này và sau đó nhấp chuột. Ngoài ra, bạn cũng có tùy chọn nhấn vào nút mũi tên, sau đó nó sẽ tự động mở trang tiếp theo.

Vượt qua những trình đọc sách điện tử đã có như Kindle của Amazon hay iBook của Apple, Blio thể hiện được ưu điểm nổi bật bởi nó mang tới cho người dùng cảm nhận rất gần với thực tế, khiến họ đọc sách điện tử mà cũng như đọc sách in hàng ngày. Để làm được điều đó, Blio cung cấp giao diện “hai trang,” chế độ “lật giở” 3D, cùng hình ảnh, màu sắc rất chân thực. Ngoài ra còn có những lựa chọn khác cho phép hiển thị một trang duy nhất, thu nhỏ,… . Chính đặc điểm vượt trội đó đã biến Blio trở thành sự lựa chọn hàng đầu cho các loại sách có đồ họa phức tạp, chứa hình minh họa chi tiết như các loại sách giáo khoa, sách thiếu nhi, sách dạy nấu ăn hay các loại sách hướng dẫn du lịch.

blio3

Song, bên cạnh khả năng “sống động như sách thật,” thì trình đọc Blio cũng thể hiện được những ưu thế mạnh mẽ của loại sách điện tử đặc thù như là kết hợp với đường dẫn website, hỗ trợ video, đánh dấu, tìm kiếm, và cả tính năng tự đọc văn bản thành tiếng giúp người dùng “đọc” sách rảnh tay.

Nguồn: Thông tin công nghệ.

Download ở đây!

qc BKAV Pro
More about

Search Box dạng tab cho blogspot

Người đăng: kiemdaigia

Có vài cách đưa công cụ tìm kiếm (Search Box) vào blogspot nhưng cách cơ bản nhất mà trước đây các blogger hay sử dụng là sử dụng đoạn code sau đây:

<p align="left">
<form id="searchthis" action="http://huynh-nhat-ha.blogspot.com/search" style="display:inline;" method="get">
<input id="b-query" maxlength="250" name="q" size="20" type="text"/>
<input id="b-searchbtn" value="Search" type="submit"/>
</form></p>

Tuy nhiên điểm yếu của code này là kết quả tìm kiếm rất hạn chế, không liệt được đầy đủ và chính xác những bài viết liên quan đến từ khóa tìm kiếm.



Để khắc phục điều này, gần đây Blogger cho cho ra đời tiện ích (Tab) Search Box với kết quả tìm kiếm khá tốt. Từ tiện ích này, tôi đã có một số điều chỉnh về code để ẩn đi một số phần không cần thiết trên tiện ích, kết quả là một tiện ich Search Box với phần nhập từ khóa và nút Search như kiểu Search Box cũ trước đây.


Để cài đặt tiện ích này, bạn hãy thực hiện như sau.

Đăng nhập Blogger, vào Edit HTML chọn Expand Widget Templates. (Nếu bạn đã cài đặt tiện ích sẳn có của Blogger thì vào Page Elements rồi xóa nó đi)

Thông thường người ta đặt Search Box ở phần sidebar. Trong Template, tìm đến vị trí cần đặt tiện ích. Đặt đoạn code dưới đây vào sau dòng </b:widget> ở quanh khu vực code mà bạn muốn đặt Search Box.

<b:widget id='CustomSearch101' locked='false' title='Search This Blog' type='CustomSearch'>
<b:includable id='main'>
<!-- only display title if it's non-empty -->
<b:if cond='data:title == &quot;&quot;'>
<h2 class='title'><data:title/></h2>
</b:if>

<div class='widget-content' style='width:100%'>
<div expr:id='data:widget.instanceId + &quot;_form&quot;'>
<span class='cse-status'><data:loadingMsg/></span>
</div>
</div>

<!-- override gsearch.css -->
<style type='text/css'>
#uds-searchControl .gs-result .gs-title,
#uds-searchControl .gs-result .gs-title *,
#uds-searchControl .gsc-results .gsc-trailing-more-results,
#uds-searchControl .gsc-results .gsc-trailing-more-results * {
color:<data:linkColor/>;
}

#uds-searchControl .gs-result .gs-title a:visited,
#uds-searchControl .gs-result .gs-title a:visited * {
color:<data:visitedLinkColor/>;
}

#uds-searchControl .gs-relativePublishedDate,
#uds-searchControl .gs-publishedDate {
color: <data:dateColor/>;
}

#uds-searchControl .gs-result a.gs-visibleUrl,
#uds-searchControl .gs-result .gs-visibleUrl {
color: <data:urlColor/>;
}

#uds-searchControl .gsc-results {
border-color: <data:borderColor/>;
background-color: <data:backgroundColor/>;
}

#uds-searchControl .gsc-tabhActive {
border-color: <data:borderColor/>;
border-top-color: <data:activeBorderColor/>;
background-color: <data:backgroundColor/>;
color: <data:textColor/>;
}

#uds-searchControl .gsc-tabhInactive {
border-color: <data:borderColor/>;
background-color: transparent;
color: <data:linkColor/>;
}

#uds-searchClearResults {
border-color: <data:borderColor/>;
}

#uds-searchClearResults:hover {
border-color: <data:activeBorderColor/>;
}

#uds-searchControl .gsc-cursor-page {
color: <data:linkColor/>;
}

#uds-searchControl .gsc-cursor-current-page {
color: <data:textColor/>;
}
.gsc-branding-img-noclear, .gsc-branding-text {
display:none!important; visibility: hidden!important;
}
</style>
</b:includable>
</b:widget>

Lưu Template.

Cập nhật ngày 04-01-2011: Nếu bạn không hài lòng với cách trên thì sử dụng đoạn code như bên dưới để đặt tại vị trí muốn hiển thị công cụ tìm kiếm.

<form action="http://www.google.com/custom">
<input type="text" name="q" size="20" />
<input type="submit" value="Search" />
<div>
<input type="radio" name="sitesearch" value="" /> Web
<input type="radio" name="sitesearch"
value="huynh-nhat-ha.blogspot.com" checked="checked" /> Huynh Nhat Ha!
</div>
</form>


Web Huynh Nhat Ha!

Nếu muốn chỉ tìm kiếm trong blog thì sử dụng đoạn code sau đây.

<form action="http://www.google.com/custom">
<input type="text" name="q" size="20" />
<input type="submit" value="Search" />
<input type="hidden" name="sitesearch" value="huynh-nhat-ha.blogspot.com" />
</form>


Bạn cần thay tên blogspot ở những dòng được đánh dấu màu đỏ.

Cập nhật ngày 05/01/2011: Nếu bạn muốn công cụ tìm kiếm tùy chỉnh của Google vẫn nằm trong blog của bạn thì thực hiện theo các bước sau đây.

1. Tạo một trang tĩnh để hiển thị kết quả tìm kiếm.

Đăng nhập Blogger vào NEW POST (BÀI ĐĂNG MỚI) >> Edit Pages (Chỉnh sửa trang) >> NEW PAGE (Trang mới). Tạo một trang tĩnh có tên là Search Page và đặt đoạn code sau đây vào phần nội dung của trang.

<style type=text/css>
#sidebar, #comments, .post-footer {display:none !important}
</style>

Mục đích của đoạn code này là ẩn đi một số id và class không cần thiết trên trang hiển thị kết quả tìm kiếm.

2. Tiếp theo đặt đoạn code dưới đây tại vị trí hiển thị công cụ tìm kiếm trong Template.

<form action="http://huynh-nhat-ha.blogspot.com/p/search-page.html">
<input type="text" name="q" size="20" />
<input type="submit" value="Search" />
<input type="hidden" name="sitesearch" value="huynh-nhat-ha.blogspot.com" />
<input type="hidden" name="cof" value="FORID:10" />
</form>


Thay phần được đánh dấu màu đỏ bằng tên blogspot của bạn.
More about

Phân trang Paginator 3000 cho blogspot

Người đăng: kiemdaigia on Thứ Ba, 28 tháng 12, 2010

Abu Farhan có nhiều code phân trang cho blogspot khá đẹp. Một trong số đó là kiểu phân trang dạng cuộn sử dụng plugin cho Wordpress có tên Paginator 3000 dựa theo ý tưởng của Ecto.ru và code của Karaboz.ru.

Đây là trang Demo cho kiểu phân trang này của Abu Farhan.

Cũng như nhiều tiện ích khác do Abu Farhan phát triển, tiện ích này cũng bị cài mặc định liên kết Widget by Abu-farhan. Tôi thấy kiểu phân trang này đẹp và muốn cộng đồng Blogger Việt Nam sử dụng nó một cách hoàn hảo nhất nên đành phải can thiệp vào code của tiện ích này để ẩn đi liên kết quảng cáo nói trên.

Đây là Demo của tôi.

Để cài đặt kiểu phân trang này cho blogspot của 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.

Đặt đoạn code bên dưới vào trước dòng ]]></b:skin> trong Template.

.paginator {
margin-top:2px;
font-size:1em;
}
.paginator table {
border-collapse:collapse;
table-layout:fixed;
width:100%;
}
.paginator table td {
padding:0;
white-space:nowrap;
text-align:center;
}
.paginator span {
display:block;
padding:3px 0;
color:#fff;
}
.paginator span strong,
.paginator span a {
padding:2px 6px;
}
.paginator span strong {
background:#ff6c24;
font-style:normal;
font-weight:normal;
}
.paginator .scroll_bar {
width:100%; height:20px;
position:relative;
margin-top:10px;
}
.paginator .scroll_trough {
width:100%; height:3px;
background:#ccc;
overflow:hidden;
}
.paginator .scroll_thumb {
position:absolute;
z-index:2;
width:0; height:3px;
top:0; left:0;
font-size:1px;
background:#363636;
}
.paginator .scroll_knob {
position:absolute;
top:-10px; left:50%;
margin-left:-10px;
width:30px; height:24px;
overflow:hidden;
background:url(http://img692.imageshack.us/img692/6049/sliderknob.gif) no-repeat 50% 50%;
cursor:pointer; cursor: hand;
}
.paginator .current_page_mark {
position:absolute;
z-index:1;
top:0; left:0;
width:0; height:3px;
overflow:hidden;
background:#ff6c24;
}
.fullsize .scroll_thumb {
display:none;
}
.paginator_pages {
width:600px;
text-align:right;
font-size:0.8em;
color:#808080;
margin-top:-10px;
}

(Nếu bạn muốn thanh kéo kiểu khác thì thay URL được đánh dấu màu xanh bằng liên kết hình ảnh sau: http://img153.imageshack.us/img153/6571/slider.gif)

Tiếp tục đặt code bên dưới vào trước thẻ </body>.

<script src='http://scriptabufarhan.googlecode.com/svn/trunk/paginator3000.js' type='text/javascript'></script>
<script type='text/javascript'>
var home_page=&quot;/&quot;;
var urlactivepage=location.href;
var postperpage=7;
var numshowpage=6;
</script>
<script src='http://hacodeproject.googlecode.com/files/paginator3000-forblogger-v1.0.0.js' type='text/javascript'/>

Lưu Template. Trong đoạn code trên, bạn có thể thay đổi các tham số postperpage: số bài viết mỗi trang và numshowpage: số lượng chữ số hiển thị cho mỗi trang phân trang.

Bước 2. Ở chế độ chỉnh sửa Template, chọn Expand Widget Templates. Tìm các dòng (dùng tổ hợp phím Ctrl + F) 'data:label.url' rồi thay chúng bằng dòng

'data:label.url + &quot;?&amp;max-results=7&quot;'

Lưu Template. Lưu ý con số trong dòng max-results=7 phải trùng với con số trong dòng var postperpage=7;. Ngoài ra, bạn cần định cấu hình Bài đăng cho Blog (Blog Posts) là 7 bài đăng trên trang chính cho thống nhất với code ở trên.
More about

Ý tưởng mới về thủ thuật Blogger

Người đăng: kiemdaigia on Thứ Hai, 27 tháng 12, 2010

Tôn chỉ của tôi khi xây dựng blog này là nâng tầm Blogger Việt Nam sánh ngang với Blogger thế giới. Blogger Việt Nam phải xây dựng một cộng đồng các blogger đầy sáng tạo và dồi dào ý tưởng xây dựng các thủ thuật tối ưu nhất.

Để làm được như vậy, tôi kêu gọi quý bạn bè gần xa trong cộng đồng Blogger Việt Nam hãy chia sẻ các ý tưởng về thủ thuật Blogger để cùng thực hiện mục tiêu nâng tầm Blogger Việt Nam.

Ý tưởng thủ thuật Blogger của bạn sẽ được đăng tải tại trang này và sẽ được Amin dành thời gian phát triển và hiện thực hóa để cộng đồng Blogger Việt Nam cùng sử dụng. Lợi ích của người đưa ra ý tưởng là được xứng danh đồng tác giả cho thủ thuật và được đăng ký vào Danh sách trang VIP trong phần Đặt Banner quảng cáo tại blog này.

Ý tưởng thủ thuật Blogger của bạn gồm các mục sau đây:

- Tên ý tưởng
- Tác giả ý tưởng
- Mô tả sơ lược về ý tưởng

Những ý tưởng khả thi sẽ được Admin phát triển và giới thiệu tại trang này.

Gửi ý tưởng
More about

Bài viết mới nhất có ảnh đại diện cho nhiều nhãn nằm ngang

Người đăng: kiemdaigia

Bất kỳ blogger nào làm quen với blogspot một thời gian hẳn biết qua tiện ích Bài viết mới nhất có ảnh đại diện khá phổ biến và cần thiết cho bất kỳ một blogspot nào. Tôi cũng đã tạo một số code tùy biến cho tiện ích này với những đặc trưng khác biệt. Thông thường tiện ích Bài viết mới nhất có ảnh đại diện chỉ dành cho toàn bộ bài viết trên blog hoặc chỉ dành cho 1 nhãn nào đó mà thôi. Tôi từng có ý tưởng bố trí tiện ích này gồm nhiều cột theo chiều ngang ở bài viết này.

Tôi tiếp tục nảy ra ý tưởng bố trí tiện ích này cho nhiều nhãn khác nhau xếp theo chiều nằm ngang (Recent posts with Thumbnails for Horizontal Labels), ý tưởng mà bạn chưa từng thấy trong cộng đồng Blogger. :44)

Bạn có thể xem Demo dưới đây.




Tiện ích này thích hợp khi đặt ở cuối bài viết hoặc ở trên phần Footer của Template.
Để làm được điều này, bạn hãy thực hiện theo các bước sau.

Bước 1. Đăng nhập Blogger, vào Design >> Edit HTML.

Đặt đoạn code dưới đây vào trước thẻ </head>.

<script type="text/javascript">
// Recent Posts with Thumbnails for Horizontal Labels Widget by Huynh Nhat Ha
imgr = new Array();
imgr[0] = "http://bit.ly/hGWr7r";
showRandomImg = true;
summaryPost = 60;
summaryTitle = 34;
numposts = 5;
var getlabels = 0;
labelname = new Array("Nhãn 1","Nhãn 2");
labeltitle = new Array("Nhãn 1","Nhãn 2");
function removeHtmlTagLabels(strx,chop){
if(strx.indexOf("<")!=-1)
{
var s = strx.split("<");
for(var i=0;i<s.length;i++){
if(s[i].indexOf(">")!=-1){
s[i] = s[i].substring(s[i].indexOf(">")+1,s[i].length);
}
}
strx = s.join("");
}
chop = (chop < strx.length-1) ? chop : strx.length-2;
while(strx.charAt(chop-1)!=' ' && strx.indexOf(' ',chop)!=-1) chop++;
strx = strx.substring(0,chop-1);
return strx+'';
}

function showrecentpostslabels(json) {
var output = "";
var outputinner= "";
j = (showRandomImg) ? Math.floor((imgr.length+1)*Math.random()) : 0;
img = new Array();
for (var i = 0; i < numposts; i++) {
var entry = json.feed.entry[i];
var posttitle = entry.title.$t;
var posturl;
if (i == json.feed.entry.length) break;
for (var k = 0; k < entry.link.length; k++) {
if (entry.link[k].rel == 'alternate') {
posturl = entry.link[k].href;
break;
}
}
if ("content" in entry) {
var postcontent = entry.content.$t;
} else
if ("summary" in entry) { var postcontent = entry.summary.$t; }
else var postcontent = "";
if(j>imgr.length-1) j=0;
img[i] = imgr[j];
s = postcontent;
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!="")) img[i] = d;
var trtd = "";
trtd += '<a href="' + posturl + '"><img src="' + img[i] + '"></a>';
trtd += '<a class="tlabel" href="' + posturl + '">' + removeHtmlTagLabels(posttitle,summaryTitle) + '…</a><br/>';
trtd += removeHtmlTagLabels(postcontent,summaryPost);
trtd += ' ...<div class="bottomline"></div>';
outputinner += trtd;
j++;
}
output += '<div class="rcposts_horizontal">';
output += '<h3>' + labeltitle[getlabels] + '</h3>';
output += outputinner;
output += '</div>';
document.write(output);
getlabels ++;
}
</script>

<style>
#rcposts_label {}
.rcposts_horizontal {float: left;font-size: 11px;height: 390px;margin: 0 10px;overflow: hidden;padding: 10px;width: 250px;}
.rcposts_horizontal h3 {background-color: #555;border-bottom: 1px solid #888;color: #BBB;font-family: Arial;font-size: 13px;font-weight: bold;margin: 0 0 10px;padding: 5px 0;text-align: center;text-case: sentence;}
.rcposts_horizontal img {background-color: #555;float: left;height: 50px;margin: 0 8px 0 0;padding: 2px;width: 50px;}
.bottomline {border-bottom: 1px dotted #555;clear: both;margin-bottom: 5px;padding: 0 0 5px;}
.rcposts_horizontal a.tlabel { font-family: Arial !important; font-size: 11px !important; font-weight: normal !important;display: block;float: left;max-width: 205px;overflow: hidden;white-space: pre;}
</style>

Lưu Template.

Trong đoạn code trên bạn cần thay đổi tên nhãn (ví dụ: Thủ thuật Blog, Thủ thuật Blogger, …) tại các dòng

labelname = new Array("Nhãn 1","Nhãn 2");
labeltitle = new Array("Nhãn 1","Nhãn 2");

Bạn có thể thay đổi số bài viết hiển thị ở dòng numposts = 5.

Tiện ích này mặc định hiển thị cho 2 nhãn với bề rộng không gian hiển thị tiện ích tốt nhất là 600px, bạn cần điều chỉnh tham số width: 250px cho phù hợp với vùng không gian mà bạn muốn hiển thị tiện ích. Nếu muốn thêm nhãn thì điều chỉnh ở 2 dòng js ở trên.

Bước 2. Đặt đoạn code dưới đây vào một tiện ích HTML/JavaScript tại nơi muốn hiển thị tiện ích Bài viết mới nhất có ảnh đại diện.

<div id="rcposts_label">
</div>
<script src='http://huynh-nhat-ha.blogspot.com/feeds/posts/default/-/Nhãn 1?max-results=5&orderby=published&alt=json-in-script&callback=showrecentpostslabels'></script>
<script src='http://huynh-nhat-ha.blogspot.com/feeds/posts/default/-/Nhãn 2?max-results=5&orderby=published&alt=json-in-script&callback=showrecentpostslabels'></script>
<div style="clear:both;"></div>

Nếu bạn muốn đặt tiện ích ở cuối bài viết thì khi chỉnh sửa Template, chọn Mở rộng mẫu tiện ích (Expand Widget Templates) và đặt đoạn code dưới đây vào sau dòng <div class='post-footer'> hoặc vào trước dòng <div class='post-footer-line post-footer-line-1'> hoặc dòng <div class='post-footer-line post-footer-line-3'> hoặc dòng <div class='post-footer-line post-footer-line-3'>.

<div id="rcposts_label">
</div>
<script src='http://huynh-nhat-ha.blogspot.com/feeds/posts/default/-/Nhãn 1?max-results=5&amp;orderby=published&amp;alt=json-in-script&amp;callback=showrecentpostslabels'></script>
<script src='http://huynh-nhat-ha.blogspot.com/feeds/posts/default/-/Nhãn 2?max-results=5&amp;orderby=published&amp;alt=json-in-script&amp;callback=showrecentpostslabels'></script>
<div style="clear:both;"></div>

Bạn cần thay huynh-nhat-ha thành tên blogspot của bạn và thay tên nhãn tương ứng với phần javascript ở Bước 1.

Chú ý: Nếu bạn đặt tiện ích này vào một tiện ích HTML/JavaScript thì bạn có thể đặt chung code ở Bước 1 vào trước code ở Bước 2 để dễ quản lý. Nếu bạn đặt code ở Bước 1 vào trước thẻ </head> mà gặp lỗi trong Template thì bạn đặt toàn bộ phần code giữa 2 thẻ <script type="text/javascript">, </script> (ở Bước 1) vào Notepad rồi lưu file với tên rcplabel.js, sau đó upload lên host rồi đặt code theo kiểu như sau vào trước thẻ </head> trong Template.

<script src="http://diachiwebhost.com/rcplabel.js" type="text/javascript"></script>
More about