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

Script phân trang cho bảng

Người đăng: buonkhongem on Thứ Hai, 31 tháng 10, 2011

Trước đây hẳn bạn nghe nhiều đến script phân trang cho toàn bộ blog và phân trang cho nội dung trong bài viết, chứ ít khi nghe kiểu phân trang cho bảng. Đôi khi bạn cần phải dùng đến bảng (table) để bố trí nội dung theo nhiều cột và nhiều dòng giống như trong văn bản Microsoft Word. Trong trường hợp nội dung quá nhiều thì bảng sẽ trở nên rất dài, khi đó với script phân trang sẽ giúp bảng trở nên gọn gàng hơn.

DEMO

Để phân trang cho bảng 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 sau đây vào trước thẻ </head>.

  1. <script type="text/javascript">
  2. //<![CDATA[
  3. function Pager(tableName, itemsPerPage) {
  4.     this.tableName = tableName;
  5.     this.itemsPerPage = itemsPerPage;
  6.     this.currentPage = 1;
  7.     this.pages = 0;
  8.     this.inited = false;
  9.    
  10.     this.showRecords = function(from, to) {      
  11.         var rows = document.getElementById(tableName).rows;
  12.         // i starts from 1 to skip table header row
  13.         for (var i = 1; i < rows.length; i++) {
  14.             if (i < from || i > to)
  15.                 rows[i].style.display = 'none';
  16.             else
  17.                 rows[i].style.display = '';
  18.         }
  19.     }
  20.    
  21.     this.showPage = function(pageNumber) {
  22.           if (! this.inited) {
  23.                    alert("not inited");
  24.                    return;
  25.           }
  26.  
  27.         var oldPageAnchor = document.getElementById('pg'+this.currentPage);
  28.         oldPageAnchor.className = 'pg-normal';
  29.        
  30.         this.currentPage = pageNumber;
  31.         var newPageAnchor = document.getElementById('pg'+this.currentPage);
  32.         newPageAnchor.className = 'pg-selected';
  33.        
  34.         var from = (pageNumber - 1) * itemsPerPage + 1;
  35.         var to = from + itemsPerPage - 1;
  36.         this.showRecords(from, to);
  37.     }  
  38.    
  39.     this.prev = function() {
  40.         if (this.currentPage > 1)
  41.             this.showPage(this.currentPage - 1);
  42.     }
  43.    
  44.     this.next = function() {
  45.         if (this.currentPage < this.pages) {
  46.             this.showPage(this.currentPage + 1);
  47.         }
  48.     }                      
  49.    
  50.     this.init = function() {
  51.         var rows = document.getElementById(tableName).rows;
  52.         var records = (rows.length - 1);
  53.         this.pages = Math.ceil(records / itemsPerPage);
  54.         this.inited = true;
  55.     }
  56.  
  57.     this.showPageNav = function(pagerName, positionId) {
  58.           if (! this.inited) {
  59.                    alert("not inited");
  60.                    return;
  61.           }
  62.           var element = document.getElementById(positionId);
  63.          
  64.           var pagerHtml = '<span onclick="' + pagerName + '.prev();" class="pg-normal"> &#171 Prev </span> | ';
  65.         for (var page = 1; page <= this.pages; page++)
  66.             pagerHtml += '<span id="pg' + page + '" class="pg-normal" onclick="' + pagerName + '.showPage(' + page + ');">' + page + '</span> | ';
  67.         pagerHtml += '<span onclick="'+pagerName+'.next();" class="pg-normal"> Next &#187;</span>';          
  68.        
  69.         element.innerHTML = pagerHtml;
  70.     }
  71. }
  72. //]]>
  73. </script>

Bước 2. Đặt đoạn CSS sau đây vào trước dòng ]]></b:skin> để định dạng các thuộc tính cho phần phân trang:

  1. .pg-normal {
  2.        color: red;
  3.        font-weight: normal;
  4.        text-decoration: none;  
  5.        cursor: pointer;  
  6. }
  7. .pg-selected {
  8.        color: black;
  9.        font-weight: bold;      
  10.        text-decoration: underline;
  11.        cursor: pointer;
  12. }

Lưu Template.

Bước 3. Khi tạo nội dung trong một bài viết nào đó, hãy sử dụng cấu trúc HTML cho bảng dưới dạng như sau (ở đây demo bảng có 3 cột và 9 dòng để phân trang thành 3 trang, bạn có thể vận dụng linh hoạt):

  1. <table id="results">
  2.      <tr>
  3.           <th>Heading 1</th>
  4.           <th>Heading 2</th>
  5.           <th>Heading 3</th>
  6.      </tr>
  7.      <tr>
  8.           <td>Column 1 – Row 1</td>
  9.           <td>Column 2 – Row 1</td>
  10.           <td>Column 3 – Row 1</td>
  11.      </tr>
  12.      <tr>
  13.           <td>Column 1 – Row 2</td>
  14.           <td>Column 2 – Row 2</td>
  15.           <td>Column 3 – Row 2</td>
  16.      </tr>
  17.      <tr>
  18.           <td>Column 1 – Row 3</td>
  19.           <td>Column 2 – Row 3</td>
  20.           <td>Column 3 – Row 3</td>
  21.      </tr>
  22.      <tr>
  23.           <td>Column 1 – Row 4</td>
  24.           <td>Column 2 – Row 4</td>
  25.           <td>Column 3 – Row 4</td>
  26.      </tr>
  27.      <tr>
  28.           <td>Column 1 – Row 5</td>
  29.           <td>Column 2 – Row 5</td>
  30.           <td>Column 3 – Row 5</td>
  31.      </tr>
  32.      <tr>
  33.           <td>Column 1 – Row 6</td>
  34.           <td>Column 2 – Row 6</td>
  35.           <td>Column 3 – Row 6</td>
  36.      </tr>
  37.      <tr>
  38.           <td>Column 1 – Row 7</td>
  39.           <td>Column 2 – Row 7</td>
  40.           <td>Column 3 – Row 7</td>
  41.      </tr>
  42.      <tr>
  43.           <td>Column 1 – Row 8</td>
  44.           <td>Column 2 – Row 8</td>
  45.           <td>Column 3 – Row 8</td>
  46.      </tr>
  47.      <tr>
  48.           <td>Column 1 – Row 9</td>
  49.           <td>Column 2 – Row 9</td>
  50.           <td>Column 3 – Row 9</td>
  51.      </tr>
  52. <div id="pageNavPosition"></div>
  53. <script type="text/javascript"><!--
  54.        var pager = new Pager('results', 3);
  55.        pager.init();
  56.        pager.showPageNav('pager', 'pageNavPosition');
  57.        pager.showPage(1);
  58. //--></script>

Ở đoạn script trên thì số 3 biểu thị số dòng mỗi trang, bạn có thể điều chỉnh tùy theo trường hợp áp dụng của bạn.
More about

Tạo Next Post và Previous Post theo phong cách Wordpress

Người đăng: buonkhongem on Chủ Nhật, 28 tháng 8, 2011

Trước đây, mình đã từng hướng dẫn bạn cài đặt Next Post và Previous Post cho blogspot, theo đó giúp bạn thay đổi các liên kết Newer Posts, Older Posts ở các trang item thành các tiêu đề bài viết như phong cách ở các trang Wordpress. Thủ thuật này có sử dụng thư viện jQuery. Hôm nay mình sẽ giúp bạn thực hiện một thủ thuật có chức năng tương tự song chỉ sử dụng đến Javascript.

Xem DEMO.


Để cài đặt tính năng này 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, chọn Expand Widget Templates. Dùng từ khóa blog-pager tìm đến đoạn code liên quan đến thuật phân trang như bên dưới:

<b:includable id='nextprev'>
<div class='blog-pager' id='blog-pager'>
<b:if cond='data:newerPageUrl'>
<span id='blog-pager-newer-link'>
<a class='blog-pager-newer-link' expr:href='data:newerPageUrl' expr:id='data:widget.instanceId + &quot;_blog-pager-newer-link&quot;' expr:title='data:newerPageTitle'><data:newerPageTitle/></a>
</span>
</b:if>

<b:if cond='data:olderPageUrl'>
<span id='blog-pager-older-link'>
<a class='blog-pager-older-link' expr:href='data:olderPageUrl' expr:id='data:widget.instanceId + &quot;_blog-pager-older-link&quot;' expr:title='data:olderPageTitle'><data:olderPageTitle/></a>
</span>
</b:if>

<b:if cond='data:blog.homepageUrl != data:blog.url'>
<a class='home-link' expr:href='data:blog.homepageUrl'><data:homeMsg/></a>
<b:else/>
<b:if cond='data:newerPageUrl'>
<a class='home-link' expr:href='data:blog.homepageUrl'><data:homeMsg/></a>
</b:if>
</b:if>

</div>
<div class='clear'/>
</b:includable>

Thay đoạn code ở trên bằng đoạn code bên dưới:

<b:includable id='nextprev'>
<div class='blog-pager' id='blog-pager'>
<b:if cond='data:blog.pageType == &quot;item&quot;'>
<script type='text/javascript'>
//<![CDATA[
// Next Post and Previous Post Script by www.thuthuatblogger.info
function search(json,urlsearch) {

max_post=500;

txt_next='Next Post';
txt_previous='Previous Post';
var prev_posturl='';
var prev_posttitle='';
var next_posturl='';
var next_posttitle='';
post_found=0;
var i=0;
var j=0;

for (i = 0; i < max_post; i++) {
var post = json.feed.entry[i];
var posttitle = post.title.$t;
var posturl;

if (i == json.feed.entry.length) break;
for (var k = 0; k < post.link.length; k++) {
if (post.link[k].rel == 'alternate') {
posturl = post.link[k].href;
break;
}
}

if (posturl == urlsearch) {
j=i;
i=max_post;
post_found=1;
}
else{
next_posturl=posturl;
next_posttitle=posttitle;
}
}

if (post_found == 1) {
j=j+1;
post = json.feed.entry[j];
prev_posttitle = post.title.$t;
for (var k = 0; k < post.link.length; k++) {
if (post.link[k].rel == 'alternate') {
prev_posturl = post.link[k].href;
break;
}
}
}

if (next_posturl != '') {
entry_next_post = '<br /><span id="blog-pager-newer-link">' + txt_next + ': <a href="' + next_posturl + '" title="' + next_posttitle + '" class="blog-pager-newer-link">' + next_posttitle + '</a></span>';

document.write(entry_next_post)
}

if (prev_posturl != '') {
entry_prev_post = '<br /><span id="blog-pager-older-link">' + txt_previous + ': <a href="' + prev_posturl + '" title="' + prev_posttitle + '" class="blog-pager-older-link">' + prev_posttitle + '</a></span><br />';

document.write(entry_prev_post)
}

}

function searchpost(json) {
url=document.URL;
search(json,url);
}
//]]>
</script>
<script src='/feeds/posts/default?alt=json-in-script&amp;callback=searchpost'>
</script>
<b:else/>

<b:if cond='data:newerPageUrl'>
<span id='blog-pager-newer-link'>
<a class='blog-pager-newer-link' expr:href='data:newerPageUrl' expr:id='data:widget.instanceId + &quot;_blog-pager-newer-link&quot;' expr:title='data:newerPageTitle'><data:newerPageTitle/></a>
</span>
</b:if>

<b:if cond='data:olderPageUrl'>
<span id='blog-pager-older-link'>
<a class='blog-pager-older-link' expr:href='data:olderPageUrl' expr:id='data:widget.instanceId + &quot;_blog-pager-older-link&quot;' expr:title='data:olderPageTitle'><data:olderPageTitle/></a>
</span>
</b:if>


<b:if cond='data:blog.homepageUrl != data:blog.url'>
<a class='home-link' expr:href='data:blog.homepageUrl'><data:homeMsg/></a>
<b:else/>
<b:if cond='data:newerPageUrl'>
<a class='home-link' expr:href='data:blog.homepageUrl'><data:homeMsg/></a>
</b:if>
</b:if>
</b:if>
</div>
<div class='clear'/>
</b:includable>

Bước 2. Dùng từ khóa blog-pager tìm đến code CSS liên quan đến phân trang, cắt hết chúng rồi đặt đoạn code như sau vào sau dòng ]]></b:skin>.

<b:if cond='data:blog.pageType == &quot;item&quot;'>
<style>
#blog-pager {margin:0px;padding:10px 0 20px;float: left}
#blog-pager-newer-link, #blog-pager-older-link {float:left;text-align:left}
</style>
<b:else/>
<b:if cond='data:blog.pageType == &quot;static_page&quot;'>
<style>
#blog-pager {display:none}
</style>
<b:else/>
<style>
Đặt code CSS vừa bị cắt vào đây nha
</style>
</b:if></b:if>

Lưu Template là xong.

Điểm hạn chế của Script này là do sử dụng JSON nên bài viết tối đa để search là 500, do đó nếu blogspot của bạn có hơn 500 bài viết thì có thể áp dụng thủ thuật này không thành công.
More about

Cài đặt Next Post và Previous Post cho blogspot

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

Khi lướt xem một số blog được xây dựng trên nền tảng Wordpress, kéo xuống đáy trang hẳn bạn sẽ thấy các liên kết Next Post, Previous Post lần lượt hiển thị tiêu đề bài viết kế tiếp và bài viết trước (ví dụ ở trang Mothuthuat.com). Đặc điểm này rất cần thiết song đối với blogspot thì dường như chưa phổ biến. Liệu blogspot có thể làm được điều này chăng?

Gần đây, mình được biết trang Bloggersentral.com đã có thủ thuật thay thế các liên kết Newer Posts, Older Posts bằng tiêu đề bài viết, sử dụng jQuery tùy biến từ một thủ thuật tương tự của trang Etblue. Tuy nhiên thủ thuật ở 2 trang nói trên đều áp dụng cho tất cả các kiểu trang (gồm trang chủ, trang nhãn, trang lưu trữ và trang item). Điều chúng ta quan tâm là chỉ áp dụng tính năng này cho riêng các trang item (là các trang bài viết), còn các trang index (trang chủ, trang nhãn và trang lưu trữ) thì giữ nguyên kiểu phân trang thông thường.

Mình nhận thấy thật cần thiết phải có tính năng này cho blogspot để áp dụng rộng rãi hơn và đã thử nghiệm thành công trên Thủ thuật Blogger như bạn có thể thấy ở phần đáy trang vậy. Ở đây mình chia ra 2 trường hợp: đối với blogspot tiếng Việt và đối với blogspot tiếng Anh (do đối với blogspot mình có thể sử dụng thêm cách dùng Javascript mà không dùng jQuery).



Để cài đặt tính năng này, bạn hãy Đăng nhập Blogger, vào Design >> Edit HTML, chọn Expand Widget Templates. Dùng từ khóa blog-pager tìm đến đoạn code liên quan đến thuật phân trang như bên dưới:
<b:includable id='nextprev'>
<div class='blog-pager' id='blog-pager'>
<b:if cond='data:newerPageUrl'>
<span id='blog-pager-newer-link'>
<a class='blog-pager-newer-link' expr:href='data:newerPageUrl' expr:id='data:widget.instanceId + &quot;_blog-pager-newer-link&quot;' expr:title='data:newerPageTitle'><data:newerPageTitle/></a>
</span>
</b:if>

<b:if cond='data:olderPageUrl'>
<span id='blog-pager-older-link'>
<a class='blog-pager-older-link' expr:href='data:olderPageUrl' expr:id='data:widget.instanceId + &quot;_blog-pager-older-link&quot;' expr:title='data:olderPageTitle'><data:olderPageTitle/></a>
</span>
</b:if>

<a class='home-link' expr:href='data:blog.homepageUrl'><data:homeMsg/></a>

</div>
<div class='clear'/>
</b:includable>
Trường hợp 1: Đối với blogspot tiếng Việt.

Bước 1: Thay đoạn code ở trên bằng đoạn code bên dưới:
<b:includable id='nextprev'>
<div class='blog-pager' id='blog-pager'>
<b:if cond='data:newerPageUrl'>
<b:if cond='data:blog.pageType == &quot;item&quot;'>
<div class='prev_next'>
<p class='next'>
<span>Next post:</span> <a class='blog-pager-newer-link' expr:href='data:newerPageUrl'>
<data:newerPageTitle/>
</a></p>
<script src='http://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js' type='text/javascript'/>
<script type='text/javascript'>
//<![CDATA[
$(document).ready(function(){
var newerLink = $("a.blog-pager-newer-link").attr("href");
$("a.blog-pager-newer-link").load(newerLink+" .post-title:first", function() {
var newerLinkTitle = $("a.blog-pager-newer-link").text();
$("a.blog-pager-newer-link").text(newerLinkTitle);
});
});
//]]>
</script>
</div>
<b:else/>
<a class='blog-pager-newer-link' expr:href='data:newerPageUrl' expr:id='data:widget.instanceId + &quot;_blog-pager-newer-link&quot;' title='Về trang trước'>&#171; Prev</a>
</b:if></b:if>

<b:if cond='data:blog.pageType == &quot;index&quot;'>
<a class='home-link' expr:href='data:blog.homepageUrl'><data:homeMsg/></a>
</b:if>

<b:if cond='data:olderPageUrl'>
<b:if cond='data:blog.pageType == &quot;item&quot;'>
<div class='prev_next'>
<p class='previous'>
<span>Previous post:</span> <a class='blog-pager-older-link' expr:href='data:olderPageUrl'>
<data:olderPageTitle/>
</a></p>
<script src='http://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js' type='text/javascript'/>
<script type='text/javascript'>
//<![CDATA[
$(document).ready(function(){
var olderLink = $("a.blog-pager-older-link").attr("href");
$("a.blog-pager-older-link").load(olderLink+" .post-title:first", function() {
var olderLinkTitle = $("a.blog-pager-older-link").text();
$("a.blog-pager-older-link").text(olderLinkTitle);
});
});
//]]>
</script>
</div>
<b:else/>
<a class='blog-pager-older-link' expr:href='data:olderPageUrl' expr:id='data:widget.instanceId + &quot;_blog-pager-older-link&quot;' title='Đến trang sau'>Next &#187;</a>
</b:if> </b:if>

</div>

<div class='clear'/>
</b:includable>
Bước 2. Dùng từ khóa blog-pager tìm đến code CSS liên quan đến phân trang, cắt hết chúng rồi đặt đoạn code như sau vào sau dòng ]]></b:skin>.
<b:if cond='data:blog.pageType == &quot;item&quot;'>
<style>
#blog-pager {margin:0px;padding:10px 0 20px;float: left;}
.prev_next p {float:left;text-align:left}
.prev_next span {font-size:12px;text-transform: uppercase;}
.prev_next a{text-decoration: none;color: #069;}
</style>
<b:else/>
<b:if cond='data:blog.pageType == &quot;static_page&quot;'>
<style>
#blog-pager {display:none}
</style>
<b:else/>
<style>
Đặt code CSS vừa bị cắt vào đây nha
</style>
</b:if></b:if>
Lưu Template là xong.

Trường hợp 2: Đối với blogspot tiếng Anh.

Riêng đối với blogspot tiếng Anh, ngoài phương pháp ở trên, có thể sử dụng thêm một phương pháp khác. Mình có thể sử dụng javascript để chuyển hóa URL bài viết thành tiêu đề bài viết, áp dụng theo các bước sau đây:

Bước 1. Đặt đoạn code sau đây vào trước thẻ </head>.
<script type='text/javascript'>
function writeTitle(navURL) {
var parts = navURL.split(&#39;/&#39;);
auxiliar=parts[parts.length-1]
auxiliar = auxiliar.replace(/-/g,&quot; &quot;);
namePagi = auxiliar.replace(&quot;.html&quot;,&quot;&quot;);

var firstLetter = namePagi.substring(0, 1).toUpperCase();
var theRest = namePagi.substring(1, namePagi.length).toLowerCase();
namePagi = firstLetter + theRest;

document.write(namePagi);
}
</script>
Bước 2. Thay đoạn code phân trang bằng đoạn code bên dưới:
<b:includable id='nextprev'>
<div class='blog-pager' id='blog-pager'>
<b:if cond='data:newerPageUrl'>
<b:if cond='data:blog.pageType == "item"'>
<div class='prev_next'>
<p class='next'>
<span>Next post:</span> <a class='blog-pager-newer-link' expr:href='data:newerPageUrl'>
<data:newerPageTitle/>
<script language='javascript'>
var navURL = &quot;<data:newerPageUrl/>&quot;;
writeTitle(navURL)
</script>
</a></p>
</div>
<b:else/>
<a class='blog-pager-newer-link'
expr:href='data:newerPageUrl'
expr:title='data:newerPageTitle'>
<data:newerPageTitle/>
</a>
</b:if></b:if>

<b:if cond='data:blog.pageType == &quot;index&quot;'>
<a class='home-link' expr:href='data:blog.homepageUrl'><data:homeMsg/></a>
</b:if>

<b:if cond='data:olderPageUrl'>
<b:if cond='data:blog.pageType == &quot;item&quot;'>
<div class='prev_next'>
<p class='previous'>
<span>Previous post:</span> <a class='blog-pager-older-link' expr:href='data:olderPageUrl'>
<data:olderPageTitle/>
<script language='javascript'>
var navURL = &quot;<data:olderPageUrl/>&quot;;
writeTitle(navURL)
</script>
</a></p>
</div>
<b:else/>
<a class='blog-pager-newer-link' expr:href='data:newerPageUrl' expr:id='data:widget.instanceId + &quot;_blog-pager-newer-link&quot;' title='Back to Previous Page'>&#171; Prev</a>
</b:if></b:if>

</div>

<div class='clear'/>
</b:includable>
More about

Khắc phục lỗi liên kết phân trang của Blogger

Người đăng: buonkhongem on Thứ Sáu, 1 tháng 4, 2011

Các liên kết phân trang mặc định trên blogspot là Older Posts, Newer Posts, Home. Chúng ta có thể tùy biến để thay các liên kết này bằng text khác hoặc bằng icon. Tuy nhiên sau khi thực hiện, một số blogspot gặp một sự cố báo lỗi khi click vào liên kết Older Posts và Newer Posts đã được thay thế bằng icon. Bạn có thể xem thông báo lỗi ở hình bên dưới.


Để khắc phục lỗi này, trước tiên chúng ta hãy cùng nghiên cứu code phân trang của blogspot. Đăng nhập Blogger, vào Design >> Edit HTML, chọn Expand Widget Templates. Tìm đến đoạn code như bên dưới.

<b:includable id='nextprev'>
<div class='blog-pager' id='blog-pager'>
<b:if cond='data:newerPageUrl'>
<span id='blog-pager-newer-link'>
<a class='blog-pager-newer-link' expr:href='data:newerPageUrl' expr:id='data:widget.instanceId + &quot;_blog-pager-newer-link&quot;' expr:title='data:newerPageTitle'><data:newerPageTitle/></a>
</span>
</b:if>
<b:if cond='data:olderPageUrl'>
<span id='blog-pager-older-link'>
<a class='blog-pager-older-link' expr:href='data:olderPageUrl' expr:id='data:widget.instanceId + &quot;_blog-pager-older-link&quot;' expr:title='data:olderPageTitle'><data:olderPageTitle/></a>
</span>
</b:if>

<a class='home-link' expr:href='data:blog.homepageUrl'><data:homeMsg/></a>
<b:if cond='data:mobileLinkUrl'>
<div class='blog-mobile-link'>
<a expr:href='data:mobileLinkUrl'><data:mobileLinkMsg/></a>
</div>
</b:if>
</div>
<div class='clear'/>
</b:includable>

Trong đoạn code trên, chúng ta có thể tùy biến những dòng sau:

<data:newerPageTitle/> đây là text chỉ các bài đăng mới hơn
<data:olderPageTitle/> đây là text chỉ các bài đăng cũ hơn
<data:homeMsg/> đây là text chỉ trang chủ

Qua quá trình nghiên cứu, Bloggerism phát hiện lỗi trên phát sinh do dòng data:widget.instanceId, đây là dữ liệu tiện ích xác định ID cho các liên kết phân trang, cho nên khi chúng ta tùy biến như thế nào đi nữa thì vẫn không có tác dụng, thậm chí còn gây ra lỗi nói trên.

Để khắc phục điều này, chúng ta chỉ cần loại bỏ dòng data:widget.instanceId ra khỏi đoạn code ở trên.

Thay expr:id='data:widget.instanceId + &quot;_blog-pager-newer-link&quot;'

Bằng id='blog-pager-newer-link'

Thay expr:id='data:widget.instanceId + &quot;_blog-pager-older-link&quot;'

Bằng id='blog-pager-older-link'

Cuối cùng chúng ta có thể điều chỉnh như thế này:

<a class='blog-pager-newer-link' expr:href='data:newerPageUrl' title='Các bài viết mới hơn'>



<a class='blog-pager-older-link' expr:href='data:olderPageUrl' title='Các bài viết cũ hơn'>

Hy vọng bài viết này sẽ giúp bạn xử lý được sự cố khi gặp phải và hiểu rõ hơn về code phân trang của blogspot.


More about

Thêm một kiểu phân trang đẹp cho blogspot

Người đăng: buonkhongem on Thứ Bảy, 19 tháng 3, 2011

Như các bạn biết thì Abu Farhan là người viết khác nhiều script phân trang cho blogspot. Tôi đã có nhiều bài viết giới thiệu một vài kiểu phân trang như vậy. Bạn có thể tìm ở tag Pagination trên blog này để tham khảo. Hôm nay xin tiếp tục giới thiệu một kiểu phân trang khác của Abu Farhan, tuy nhiên ở đây tôi có chút điều chỉnh để tạo dáng vẻ khác một chút cho kiểu phân trang này để cộng đồng Blogger Việt tham khảo.

Trước tiên bạn hãy xem hình minh họa bên dưới.



Để có dáng vẻ như vậy thì chúng ta cần tạo code CSS như bên dưới.

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>.

#blog-pager{padding:4px 0;text-align:center;}
/* Số trang */
.showpageNum a {
padding: 3px 8px;
margin:0 4px;
text-decoration: none;
border:1px solid #999;
-webkit-border-radius:3px;-moz-border-radius:3px;
background: #ddd;
}
.showpageNum a:hover {
border:1px solid #888;
background: #ccc;
color:#fff;
}
/* Trang x trong y */
.showpageTotal {
margin:0 8px 0 0;
}
/* Trang hiện tại được đánh dấu */
.showpagePoint {
color:#fff;
text-shadow:0 1px 2px #333;
padding: 3px 8px;
margin: 2px;
font-weight: 700;
-webkit-border-radius:3px;-moz-border-radius:3px;
border:1px solid #999;
background: #666;
text-decoration: none;
}
/* Trang trước – Trang sau */
.showpagePN a {
padding: 3px 8px;
margin:0 4px;
text-decoration: none;
border:1px solid #999;
-webkit-border-radius:3px;-moz-border-radius:3px;
background: #ddd;
}
.showpagePN a:hover {
border:1px solid #888;
background: #ccc;
color:#fff;
}
/* Liên kết tạo Widget */
.showpageWidget{
font-size: 10px;
float: right;
margin: 10px 10px 0 300px;
}

Bạn có thể lấy mã mầu để tùy biến CSS theo ý muốn của mình để có một style khác.

Nếu bạn muốn ẩn liên kết Set up on your blogspot thì thêm display:none vào class showpageWidget.

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

<script type='text/javascript'>
//<![CDATA[
var postperpage=10;
var numshowpage=4;
var total_pag='Page:';
var upPageWord ='&#171; Prev';
var downPageWord ='Next &#187;';
var widget_pag='Set up on your blogspot';
//]]>
</script>
<script src='http://goo.gl/rgegj' type='text/javascript'/>

Bạn cần định dạng số bài đăng trên trang chính tương ứng với tham số postperpage=10 ở trên (Vào Settings >> Formatting >> ).

Lưu Template.

Bước 3. Chọn Expand Widget Templates. Tìm tất cả các dòng 'data:label.url' rồi thay nó bằng dòng

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

Lưu Template là OK.

Many thanks to Abu Farhan for his Script. :46)
More about

Một kiểu phân trang đẹp cho blogspot

Người đăng: buonkhongem on Thứ Bảy, 12 tháng 2, 2011

Hiện nay trên cộng đồng Blogger có khá nhiều kiểu phân trang khác nhau cho blogspot. Mỗi kiểu đều có nét đẹp và ưu điểm riêng cho nên bạn cần lựa chọn kiểu nào phù hợp nhất để cài đặt cho blog của mình. Bạn có thể dùng từ khóa “phan trang” để tìm trên blog này một số kiểu phân trang cho blogspot.

Script cho các kiểu phân trang dường như có những điểm na ná giống và cách cài đặt cũng vậy. Ở đây Bloggerism xin giới thiệu một kiểu phân trang cũng khá đẹp.

Xem Demo.

Để cài đặt kiểu phân trang này, bạn hãy thực hiện như sau.

Bước 1. Đăng nhập Blogger, vào Design >> Edit HTML, chọn Expand Widget Templates.

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

.showpageOf{background:#006666;margin-right:3px;padding:4px 7px;color:#FFF;text-shadow:1px 1px 1px #000;font-size:13px;-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}
.showpagePoint{background:#FFF;border:1px solid #006666;margin:0 3px;padding:3px 6px;color:#006666;text-shadow:1px 1px 1px #7F7F7F;font-size:13px;-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}
.showpageNum a,.showpageNum a:visited{background:#006666;margin:0 3px;padding:4px 7px;color:#FFF;text-shadow:1px 1px 1px #000;font-size:13px;-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}
.showpageNum a:hover,.showpageNum a:active{background:#FFF;border:1px solid #006666;padding:3px 6px;color:#006666;text-shadow:1px 1px 1px #7F7F7F;text-decoration:none}

Bước 2. Đặt đoạn code bên dưới vào trước thẻ </body>.

<script type='text/javascript'>var home_page=&quot;/&quot;;
urlactivepage=location.href;postperpage=7;
numshowpage=5;
upPageWord=&#39;Prev&#39;;
downPageWord=&#39;Next&#39;;
</script>
<script type='text/javascript'>
//<![CDATA[
var nopage;var jenis;var first;var lblname1;PageNavi();function loophalaman(a){var e="";nomerkiri=parseInt(numshowpage/2);if(nomerkiri==numshowpage-nomerkiri){numshowpage=nomerkiri*2+1}mulai=first-nomerkiri;if(mulai<1){mulai=1}last=parseInt(a/postperpage)+1;if(last-1==a/postperpage){last=last-1}akhir=mulai+numshowpage-1;if(akhir>last){akhir=last}e+="<span class='showpageOf'>Page "+first+"/"+last+"</span>";var g=parseInt(first)-1;if(first>1){if(first==2){if(jenis=="page"){e+='<span class="showpageNum"><a href="'+home_page+'">'+upPageWord+"</a></span>"}else{e+='<span class="showpageNum"><a href="/search/label/'+lblname1+"?&max-results="+postperpage+'">'+upPageWord+"</a></span>"}}else{if(jenis=="page"){e+='<span class="showpageNum"><a href="#PageNo='+g+'" onclick="redirectpage('+g+');return false">'+upPageWord+"</a></span>"}else{e+='<span class="showpageNum"><a href="#PageNo='+g+'" onclick="redirectlabel('+g+');return false">'+upPageWord+"</a></span>"}}}if(mulai>1){if(jenis=="page"){e+='<span class="showpageNum"><a href="'+home_page+'">1</a></span>'}else{e+='<span class="showpageNum"><a href="/search/label/'+lblname1+"?&max-results="+postperpage+'">1</a></span>'}}if(mulai>2){e+="..."}for(var f=mulai;f<=akhir;f++){if(first==f){e+='<span class="showpagePoint">'+f+"</span>"}else{if(f==1){if(jenis=="page"){e+='<span class="showpageNum"><a href="'+home_page+'">1</a></span>'}else{e+='<span class="showpageNum"><a href="/search/label/'+lblname1+"?&max-results="+postperpage+'">1</a></span>'}}else{if(jenis=="page"){e+='<span class="showpageNum"><a href="#PageNo='+f+'" onclick="redirectpage('+f+');return false">'+f+"</a></span>"}else{e+='<span class="showpageNum"><a href="#PageNo='+f+'" onclick="redirectlabel('+f+');return false">'+f+"</a></span>"}}}}if(akhir<last-1){e+="..."}if(akhir<last){if(jenis=="page"){e+='<span class="showpageNum"><a href="#PageNo='+last+'" onclick="redirectpage('+last+');return false">'+last+"</a></span>"}else{e+='<span class="showpageNum"><a href="#PageNo='+last+'" onclick="redirectlabel('+last+');return false">'+last+"</a></span>"}}var c=parseInt(first)+1;if(first<last){if(jenis=="page"){e+='<span class="showpageNum"><a href="#PageNo='+c+'" onclick="redirectpage('+c+');return false">'+downPageWord+"</a></span>"}else{e+='<span class="showpageNum"><a href="#PageNo='+c+'" onclick="redirectlabel('+c+');return false">'+downPageWord+"</a></span>"}}e+="<div></div>";var d=document.getElementsByName("pageArea");var b=document.getElementById("blog-pager");for(var h=0;h<d.length;h++){d[h].innerHTML=e}if(d&&d.length>0){e=""}if(b){b.innerHTML=e}}function firstpost(a){var c=a.feed;var b=parseInt(c.openSearch$totalResults.$t,10);loophalaman(b)}function PageNavi(){var a=urlactivepage;if(a.indexOf("/search/label/")!=-1){if(a.indexOf("?updated-max")!=-1){lblname1=a.substring(a.indexOf("/search/label/")+14,a.indexOf("?updated-max"))}else{lblname1=a.substring(a.indexOf("/search/label/")+14,a.indexOf("?&max"))}}if(a.indexOf("?q=")==-1&&a.indexOf(".html")==-1){if(a.indexOf("/search/label/")==-1){jenis="page";if(urlactivepage.indexOf("#PageNo=")!=-1){first=urlactivepage.substring(urlactivepage.indexOf("#PageNo=")+8,urlactivepage.length)}else{first=1}document.write('<script src="'+home_page+'feeds/posts/summary?max-results=1&alt=json-in-script&callback=firstpost"><\/script>')}else{jenis="label";if(a.indexOf("&max-results=")==-1){postperpage=20}if(urlactivepage.indexOf("#PageNo=")!=-1){first=urlactivepage.substring(urlactivepage.indexOf("#PageNo=")+8,urlactivepage.length)}else{first=1}document.write('<script src="'+home_page+"feeds/posts/summary/-/"+lblname1+'?alt=json-in-script&callback=firstpost&max-results=1" ><\/script>')}}}function redirectpage(a){jsonstart=(a-1)*postperpage;nopage=a;var c=document.getElementsByTagName("head")[0];var b=document.createElement("script");b.type="text/javascript";b.setAttribute("src",home_page+"feeds/posts/summary?start-index="+jsonstart+"&max-results=1&alt=json-in-script&callback=finddatepost");c.appendChild(b)}function redirectlabel(a){jsonstart=(a-1)*postperpage;nopage=a;var c=document.getElementsByTagName("head")[0];var b=document.createElement("script");b.type="text/javascript";b.setAttribute("src",home_page+"feeds/posts/summary/-/"+lblname1+"?start-index="+jsonstart+"&max-results=1&alt=json-in-script&callback=finddatepost");c.appendChild(b)}function finddatepost(b){post=b.feed.entry[0];var a=post.published.$t.substring(0,19)+post.published.$t.substring(23,29);var d=encodeURIComponent(a);if(jenis=="page"){var c="/search?updated-max="+d+"&max-results="+postperpage+"#PageNo="+nopage}else{var c="/search/label/"+lblname1+"?updated-max="+d+"&max-results="+postperpage+"#PageNo="+nopage}location.href=c};
//]]>
</script>

Bạn có thể điều chỉnh số bài viết hiển thị ở mỗi trang tại tham số postperpage=7.

Bước 3. Tìm bất kỳ dòng nào như thế này 'data:label.url'

Rồi thay thế nó bằng dòng 'data:label.url + &quot;?&amp;max-results=7&quot;'

Lưu Template là OK.
More about

Tùy biến liên kết Older Posts, Newer Posts, Home

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

Như các bạn biết thì cuối mỗi bài viết trên blogspot đều có các liên kết Older Posts (Bài đăng cũ hơn), Home (Trang chủ), Newer Posts (Bài đăng mới hơn). Chúng ta có thể tùy biến để thay đổi các liên kết này theo ý muốn của mình, ví dụ có thể thay bằng dòng text khác hoặc bằng hình ảnh.

Để thực hiện thủ thuật này, chúng ta tiến hành như sau. Đăng nhập Blogger, vào Design >> Edit HTML, chọn Expand Widget Templates. Tìm đoạn code tương tự như bên dưới.

<b:includable id='nextprev'>
<div class='blog-pager' id='blog-pager'>
<b:if cond='data:newerPageUrl'>
<span id='blog-pager-newer-link'>
<a class='blog-pager-newer-link' expr:href='data:newerPageUrl' expr:id='data:widget.instanceId + "_blog-pager-newer-link"' expr:title='data:newerPageTitle'><data:newerPageTitle/></a>
</span>
</b:if>
<b:if cond='data:olderPageUrl'>
<span id='blog-pager-older-link'>
<a class='blog-pager-older-link' expr:href='data:olderPageUrl' expr:id='data:widget.instanceId + "_blog-pager-older-link"' expr:title='data:olderPageTitle'><data:olderPageTitle/></a>
</span>
</b:if>
<b:if cond='data:blog.homepageUrl != data:blog.url'>
<a class='home-link' expr:href='data:blog.homepageUrl'><data:homeMsg/></a>
<b:else/>
<b:if cond='data:newerPageUrl'>
<a class='home-link' expr:href='data:blog.homepageUrl'><data:homeMsg/></a>
</b:if>
</b:if>
</div>
<div class='clear'/>
</b:includable>

Trong đoạn code trên, phân tích kỹ có thể thấy vài điểm như sau:

<data:newerPageTitle/>: đây là phần hiển thị liên kết Newer Posts
<data:olderPageTitle/>: đây là phần hiển thị liên kết Older Posts
<data:homeMsg/>: đây là phần hiển thị liên kết Home

Như vậy để tùy biến các liên kết này, bạn có thể thay 3 dòng code trên lần lượt bằng các dòng text hoặc hình ảnh tương ứng.

Ví dụ thay <data:newerPageTitle/> bằng dòng Next >> hoặc dòng Sau >>
Thay <data:olderPageTitle/> bằng dòng << Prev hoặc dòng << Trước
Thay <data:homeMsg/> bằng dòng < Home >

Hoặc nếu dùng hình ảnh thì thay <data:newerPageTitle/> bằng dòng

<img src='http://img58.imageshack.us/img58/8076/leftxv5.png'/>

Thay <data:olderPageTitle/> bằng dòng

<img src='http://img260.imageshack.us/img260/9691/rightli5.png'/>

Và thay <data:homeMsg/> bằng dòng

<img src='http://img260.imageshack.us/img260/6710/homepngrg7.jpg'/>



Ngoài ra nếu rành về CSS, bạn có thể tùy biến đoạn code CSS về các liên kết này trong Template:

.blog-pager {
background: $(paging.background);
}

.blog-pager-older-link, .home-link,
.blog-pager-newer-link {
background-color: $(content.background.color);
padding: 5px;
}
More about

Kiểu phân trang Pager 2.0 cho blogspot

Người đăng: buonkhongem on Thứ Hai, 3 tháng 1, 2011

Tính đến thời điểm này thì đã có khá nhiều kiểu phân trang đẹp cho blogspot mà tôi đã giới thiệu (bạn có thể dùng từ khóa “phan trang” để tìm trên blog này). Mỗi kiểu phân trang đều có ưu điểm và vẻ đẹp riêng của nó. Mỗi blogger đều có sở thích riêng và tất nhiên sẽ lựa chọn kiểu phân trang riêng để cài đặt cho blogspot của mình.

Còn nhớ vào năm 2008 vào cái thuở tôi mới chân ướt chân ráo đến với Blogger, lúc đó một chữ bẻ đôi về code tôi cũng chả biết là gì nữa, thì tôi đã nghe nói về một kiểu phân trang khá thịnh hành thuở ấy gọi là Pager 2.0 của bạn Anh Võ tại blog www.vietwebguide.com. Rất tiếc gần đây Anh Võ đã rửa tay gác kiếm và mai danh ẩn tích, hoặc vì một lý do nào đó cũng không biết nữa. Cũng may là cái script phân trang ấy vẫn được lưu giữ đâu đó trên cộng đồng Blogger.

Hôm nay tôi xin mạn phép Anh Võ giới thiệu lại kiểu phân trang Pager 2.0 và có một số bổ sung để mọi người cùng chia sẻ và lưu truyền cho mai sau.

Xem Demo.

Nếu bạn đã lỡ (nhỡ) xài kiểu phân trang khác mà lại kết kiểu phân trang này thì phải xem lại cách cài đặt kiểu phân trang đó rồi làm ngược lại các bước để tháo nó ra khỏi Template rồi bắt đầu cài đặt kiểu phân trang này, theo hướng dẫn sau đây.

Đăng nhập Blogger, vào Design >> Edit HTML, chọn Expand Widget Templates.

Tìm dòng <b:include name='nextprev'/> rồi thay nó bằng đoạn code dưới đây.

<b:if cond='data:blog.pageType == &quot;index&quot;'>
<style type='text/css'>
.blogpager {
font-size:16x;
color:#0033FF;
font-weight:bold;
background:#CCC;
border:1px solid #bbb;
padding:0px 4px;
}
</style>
<div align='center' style='margin:5px;'>
<form action='#' name='pager20'>
<span id='vwg-pager-first'/>&amp;nbsp;<span id='vwg-pager-prev'/>&amp;nbsp;<input name='showingpage' onfocus='this.select()' size='4' title='Nhập số trang bạn muốn đến' type='text' value='init...'/>/<input disabled='disabled' name='pagestotal' size='4' type='text' value='init...'/> <input onclick='checkpager()' type='button' value='Go'/> <span id='vwg-pager-next'/>&amp;nbsp;<span id='vwg-pager-last'/>
</form>
</div>
<script type='text/javascript'>
var blogID = &quot;5730565790137789925&quot;;
var home_page = &quot;http://huynh-nhat-ha.blogspot.com/&quot;;
var pager_max_main = 7;

var pager_first_text = &quot;First&quot;; // Bạn có thể đổi thành Đầu
var pager_last_text = &quot;Last&quot;; // Bạn có thể đổi thành Cuối
var pager_prev_text = &quot;Prev&quot;; // Bạn có thể đổi thành Trước
var pager_next_text = &quot;Next&quot;; // Bạn có thể đổi thành Sau
</script>
<script src='http://hacodeproject.googlecode.com/files/blogger_pager_script_v20.js' type='text/javascript'/>
</b:if>
<b:if cond='data:blog.pageType == &quot;item&quot;'>
<b:include name='nextprev'/>
</b:if>

Trong đoạn code trên, bạn cần thay blogID của bạn bằng chuỗi số trên thanh địa chỉ của công cụ trình duyệt ở chế độ Edit HTML của Template; thay địa chỉ home page cho blog của bạn; thay con số ở dòng var pager_max_main = 7; đồng nhất với số bài đăng trên trang chính khi định cấu hình bài đăng cho blog (Blog Posts).

Lưu Template là OK rồi đấy!
More about

Giới thiệu một kiểu phân trang đẹp cho Blogger

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

Có nhiều kiểu phân trang đẹp :7) cho Blogger. Hôm nay xin giới thiệu một kiểu phân trang về cơ bản cũng khá giống với nhiều kiểu khác song hơi khác một chút về cách cài đặt.

Trước khi cài đặt, bạn nên xem trang Demo.

Bước 1. Đăng nhập Blogger, vào chỉnh sửa Template. Đặt đoạn code css dưới đây vào trước dòng ]]></b:skin>.

.showpageArea a {
text-decoration:underline;
background: #ffffff;
padding: 10px 10px 10px 10px;
font-size:11px;
font-weight:bold;
}
.showpageNum a {
text-decoration:none;
border: 1px solid #9aafe5;
margin:0 1px;
padding:3px 4px;
}
.showpageNum a:hover {
border: 1px solid #9aafe5;
background-color:#33CCFF;
color:#fff;
}
.showpagePoint {
color:#fff;
text-decoration:none;
border: 1px solid #2e6ab1;
background: #2e6ab1;
margin:0 1px;
padding:3px 4px;
font-size:11px;
font-weight:bold;
}
.showpageOf {
text-decoration:none;
padding:3px 4px;
margin: 0 1px 0 0;
}
.showpage a {
text-decoration:none;
border: 1px solid #9aafe5;
padding:3px 4px;
}
.showpage a:hover {
text-decoration:none;
color: #33CCFF;
}

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

<script type='text/javascript'>
var pageCount=10;
var displayPageNum=4;
var upPageWord ='&#171; Prev';
var downPageWord ='Next &#187;';
</script>
<script type='text/javascript'>
//<![CDATA[
function showpageCount(json){var thisUrl=home_page_url;var htmlMap=new Array();var thisNum=1;var postNum=1;var itemCount=0;var fFlag=0;var eFlag=0;var html='';var upPageHtml='';var downPageHtml='';for(var i=0,post;post=json.feed.entry[i];i++){var timestamp1=post.published.$t.substring(0,19)+post.published.$t.substring(23,29);timestamp=encodeURIComponent(timestamp1);var title=post.title.$t;if(title!=''){if(itemCount==0||(itemCount%pageCount==(pageCount-1))){if(thisUrl.indexOf(timestamp)!=-1){thisNum=postNum}if(title!='')postNum++;htmlMap[htmlMap.length]='/search?updated-max='+timestamp+'&max-results='+pageCount}}itemCount++}for(var p=0;p<htmlMap.length;p++){if(p>=(thisNum-displayPageNum-1)&&p<(thisNum+displayPageNum)){if(fFlag==0&&p==thisNum-2){if(thisNum==2){upPageHtml='<span class="showpage"><a href="/">'+upPageWord+'</a></span>'}else{upPageHtml='<span class="showpage"><a href="'+htmlMap[p]+'">'+upPageWord+'</a></span>'}fFlag++}if(p==(thisNum-1)){html+='<span class="showpagePoint">'+thisNum+'</span>'}else{if(p==0){html+='<span class="showpageNum"><a href="/">1</a></span>'}else{html+='<span class="showpageNum"><a href="'+htmlMap[p]+'">'+(p+1)+'</a></span>'}}if(eFlag==0&&p==thisNum){downPageHtml='<span class="showpage"> <a href="'+htmlMap[p]+'">'+downPageWord+'</a></span>';eFlag++}}}if(thisNum>1){html=''+upPageHtml+' '+html+' '}html='<div class="showpageArea" style="padding:10px 10px 10px 10px;"><span style="COLOR: #2e6ab1;" class="showpageOf"> Total: ('+(postNum-1)+')</span>'+html;if(thisNum<(postNum-1)){html+=downPageHtml}if(postNum==1)postNum++;html+='</div>';var pageArea=document.getElementsByName("pageArea");var blogPager=document.getElementById("blog-pager");if(postNum<=2){html=''}for(var p=0;p<pageArea.length;p++){pageArea[p].innerHTML=html}if(pageArea&&pageArea.length>0){html=''}if(blogPager){blogPager.innerHTML=html}}function showpageCount2(json){var thisUrl=home_page_url;var htmlMap=new Array();var isLablePage=thisUrl.indexOf("/search/label/")!=-1;var thisLable=isLablePage?thisUrl.substr(thisUrl.indexOf("/search/label/")+14,thisUrl.length):"";thisLable=thisLable.indexOf("?")!=-1?thisLable.substr(0,thisLable.indexOf("?")):thisLable;var thisNum=1;var postNum=1;var itemCount=0;var fFlag=0;var eFlag=0;var html='';var upPageHtml='';var downPageHtml='';var labelHtml='<span class="showpageNum"><a href="/search/label/'+thisLable+'?&max-results='+pageCount+'">';var thisUrl=home_page_url;for(var i=0,post;post=json.feed.entry[i];i++){var timestamp1=post.published.$t.substring(0,19)+post.published.$t.substring(23,29);timestamp=encodeURIComponent(timestamp1);var title=post.title.$t;if(title!=''){if(itemCount==0||(itemCount%pageCount==(pageCount-1))){if(thisUrl.indexOf(timestamp)!=-1){thisNum=postNum}if(title!='')postNum++;htmlMap[htmlMap.length]='/search/label/'+thisLable+'?updated-max='+timestamp+'&max-results='+pageCount}}itemCount++}for(var p=0;p<htmlMap.length;p++){if(p>=(thisNum-displayPageNum-1)&&p<(thisNum+displayPageNum)){if(fFlag==0&&p==thisNum-2){if(thisNum==2){upPageHtml=labelHtml+upPageWord+'</a></span>'}else{upPageHtml='<span class="showpage"><a href="'+htmlMap[p]+'">'+upPageWord+'</a></span>'}fFlag++}if(p==(thisNum-1)){html+='<span class="showpagePoint">'+thisNum+'</span>'}else{if(p==0){html=labelHtml+'1</a></span>'}else{html+='<span class="showpageNum"><a href="'+htmlMap[p]+'">'+(p+1)+'</a></span>'}}if(eFlag==0&&p==thisNum){downPageHtml='<span class="showpage"> <a href="'+htmlMap[p]+'">'+downPageWord+'</a></span>';eFlag++}}}if(thisNum>1){if(!isLablePage){html=''+upPageHtml+' '+html+' '}else{html=''+upPageHtml+' '+html+' '}}html='<div class="showpageArea"><span style="COLOR: #000;" class="showpageOf"> Pages ('+(postNum-1)+')</span>'+html;if(thisNum<(postNum-1)){html+=downPageHtml}if(postNum==1)postNum++;html+='</div>';var pageArea=document.getElementsByName("pageArea");var blogPager=document.getElementById("blog-pager");if(postNum<=2){html=''}for(var p=0;p<pageArea.length;p++){pageArea[p].innerHTML=html}if(pageArea&&pageArea.length>0){html=''}if(blogPager){blogPager.innerHTML=html}}var home_page_url=location.href;var thisUrl=home_page_url;if(thisUrl.indexOf("/search/label/")!=-1){if(thisUrl.indexOf("?updated-max")!=-1){var lblname1=thisUrl.substring(thisUrl.indexOf("/search/label/")+14,thisUrl.indexOf("?updated-max"))}else{var lblname1=thisUrl.substring(thisUrl.indexOf("/search/label/")+14,thisUrl.indexOf("?&max"))}}var home_page="/";if(thisUrl.indexOf("?q=")==-1){if(thisUrl.indexOf("/search/label/")==-1){document.write('<script src="'+home_page+'feeds/posts/summary?alt=json-in-script&callback=showpageCount&max-results=99999" ><\/script>')}else{document.write('<script src="'+home_page+'feeds/posts/full/-/'+lblname1+'?alt=json-in-script&callback=showpageCount2&max-results=99999" ><\/script>')}}
//]]>
</script>

Tiếp theo bạn cần định cấu hình bài đăng trên trang chính là 10 bài đăng. Vào Phần tử trang (Page Elements) >> Chỉnh sửa Bài đăng trên Blog (Edit Blog Posts) chọn Số bài đăng trên trang chính là 10.

Tất nhiên bạn có thể thay đổi những con số theo ý thích của bạn. Ví dụ nếu bạn đặt số bài đăng trên trang chính là 7 thì dòng var pageCount=5; phải được đổi thành var pageCount=7;.
More about

Phân trang Blogger theo kiểu Wordpress

Người đăng: buonkhongem on Thứ Hai, 15 tháng 11, 2010

Về phân trang thì Blogger chỉ mặc định các nút Older Posts (Bài đăng Cũ hơn), Newer Posts (Bài đăng Mới hơn), Home (Trang chủ) để liên kết đến các bài viết lẫn nhau và kiểu phân trang sơ đẳng này không làm thỏa mãn các blogger.

Nếu ai từng lướt qua một blog được thiết kế bằng Wordpress thì có thể thấy kiểu phân trang khá chuẩn bằng 1 plugin có tên WP-PageNavi. Nếu tìm hiểu plugin này thì sẽ thấy phần mã CSS mặc định như sau:
/*
Default style for WP-PageNavi plugin
http://wordpress.org/extend/plugins/wp-pagenavi/
*/
.wp-pagenavi {
clear: both;
}
.wp-pagenavi a, .wp-pagenavi span {
text-decoration: none;
border: 1px solid #BFBFBF;
padding: 3px 5px;
margin: 2px;
}
.wp-pagenavi a:hover, .wp-pagenavi span.current {
border-color: #000;
}
.wp-pagenavi span.current {
font-weight: bold;
}
Chúng ta có thể điều chỉnh một chút từ phần CSS này để sử dụng cho Blogger.

Đăng nhập Blogger, vào Edit HTML. Chèn vào trước dòng ]]></b:skin> với đoạn mã bên dưới.
.pagenavi{clear:both;margin:10px auto;text-align:center;}
.pagenavi span {padding:3px;margin-right:5px;background:transparent;border:none;}
.pagenavi a {padding:3px;margin-right:5px;text-decoration: none;background:#747170;}
.pagenavi a:visited{color:#fff}
.pagenavi a:hover {background:#044697;color:#fff;text-decoration:none}
.pagenavi .current {font-weight:bold;color:#fff;background:#F87217;text-decoration: none;}
.pagenavi .pages {font-weight:bold;border:none;}
Bạn có thể điều chỉnh các thông số màu sắc để điều chỉnh cho phù hợp với Blog của mình.

Lưu Template rồi chọn Expand Widget Templates.

Tiếp theo là cài đặt javascript. Trong Template (dùng tổ hợp phím Ctrl + F) tìm đến các dòng mã:
<b:section class='main' id='main' showaddelement='no'>
<b:widget id='Blog1' locked='true' title='Blog Posts' type='Blog'>
..................
<b:includable id='main' var='top'>
..................
<div class='post-feeds'>
<b:loop values='data:posts' var='post'>
<b:if cond='data:post.allowComments'>
<b:if cond='data:post.feedLinks'>
<b:include data='post.feedLinks' name='feedLinksBody'/>
</b:if>
</b:if>
</b:loop>
</div>
</b:if>
</b:includable>
<b:includable id='feedLinksBody' var='links'>
<div class='feed-links'>
<data:feedLinksMsg/>
<b:loop values='data:links' var='f'>
<a class='feed-link' expr:href='data:f.url' expr:type='data:f.mimeType' target='_blank'><data:f.name/> (<data:f.feedType/>)</a>
</b:loop>
</div>
</b:includable>
<b:includable id='comments' var='post'>
…………………..
</b:widget>
</b:section>
Chèn trước dòng <b:includable id='feedLinksBody' var='links'>

bằng đoạn mã bên dưới.
<b:includable id='page-navi'>
<div class='pagenavi'>
<script type='text/javascript'>
var pageNaviConf = {
perPage: 7,
numPages: 9,
firstText: "First",
lastText: "Last",
nextText: "Next",
prevText: "Prev"
}
</script>
<script src='http://hacodeproject.googlecode.com/files/pagenavi_v2.min.js' type='text/javascript'/>
<div class='clear'/>
</div>
</b:includable>
Bạn có thể tải về file pagenavi_v2.min.js và upload lên hosting để sử dụng cho Blog của mình.

Tiếp đến, tìm đến dòng sau đây:

<!-- navigation -->
<b:include name='nextprev'/>

Thay thế nó bằng đoạn mã bên dưới:
<!-- navigation -->
<b:if cond='data:blog.pageType == "index"'>
<b:include name='page-navi'/>
<b:else/>
<b:if cond='data:blog.pageType == "archive"'>
<b:include name='page-navi'/>
</b:if>
</b:if>
<b:if cond='data:blog.pageType == "item"'>
<b:include name='nextprev'/>
</b:if>
Ý nghĩa của đoạn mã trên là hiển thị phân trang kiểu Wordpress ở các trang chủ, trang label và trang lưu trữ, còn các trang bài viết thì dùng kiểu phân trang mặc định của Blogger.

Bạn có thể điều chỉnh các tham số sau đây:

var pageNaviConf = {
perPage: 7,
numPages: 9,
firstText: "First",
lastText: "Last",
nextText: "Next",
prevText: "Prev"
}

trong đó:

- perPage: số bài viết hiển thị trong 1 trang
- numPages: số trang hiển thị
- firstText, lastText, nextText, prevText: tương ứng là các từ hiển thị cho các nút First, Last, Next, Prev

Nếu bạn gặp khó khăn trong việc cài đặt, xin vùi lòng để lại câu hỏi dưới đây.
More about