loading..

Phân trang trong TheSiS

by Huỳnh Trung on January 13, 2010

Mặc định, Ở trang chủ của TheSis theme sẽ hiển thị “← Previous Entries” và “Next Entries →” để điều hướng bài viết. Tất nhiên, như vậy sẽ không tiện cho người đọc. Bằng cách phân trang người đọc sẽ nhanh chóng di chuyển đến một trang bất kỳ. Trong bài này, Hư Trúc sẽ hướng dẫn cách bạn thực hiện điều này.

Thủ thuât này Hư Trúc dựa theo hướng dẫn của Ashwin và đã thêm vào code phân trang (không dùng plugin nữa).

Các bước thực hiện

1.Thêm code vào custom_functions.php

Thêm đoạn code sau vào bên dưới file custom_functions.php. Bạn vào TheSIS Options -> Custom File Editor. Chọn file custom_functions.php trong hộp và nhấn Edit selected file. (Nên lưu dự phòng trước khi chỉnh sửa)

/***** pagenavi http://hutruc.com *****/
function page_navi($before = '', $after = '') {
	global $wpdb, $wp_query;
	$request = $wp_query->request;
	$posts_per_page = intval(get_query_var('posts_per_page'));
	$paged = intval(get_query_var('paged'));
	$numposts = $wp_query->found_posts;
	$max_page = $wp_query->max_num_pages;

	if(empty($paged) || $paged == 0) {
		$paged = 1;
	}
	$pages_to_show = 5;
	$pages_to_show_minus_1 = $pages_to_show-1;
	$half_page_start = floor($pages_to_show_minus_1/2);
	$half_page_end = ceil($pages_to_show_minus_1/2);
	$start_page = $paged - $half_page_start;
	if($start_page <= 0) {
		$start_page = 1;
	}
	$end_page = $paged + $half_page_end;
	if(($end_page - $start_page) != $pages_to_show_minus_1) {
		$end_page = $start_page + $pages_to_show_minus_1;
	}
	if($end_page > $max_page) {
		$start_page = $max_page - $pages_to_show_minus_1;
		$end_page = $max_page;
	}
	if($start_page <= 0) {
		$start_page = 1;
	}

	echo $before.'<div class="page_navi">'."n";
	if ($start_page >= 2 && $pages_to_show < $max_page) {
		$first_page_text = "First";
		echo '<a href="'.get_pagenum_link().'" title="'.$first_page_text.'">'.$first_page_text.'</a>';
	}
	previous_posts_link('&laquo;');
	for($i = $start_page; $i  <= $end_page; $i++) {
		if($i == $paged) {
			echo '<span class="current">'.$i.'</span>';
		} else {
			echo '<a href="'.get_pagenum_link($i).'">'.$i.'</a>';
		}
	}
	next_posts_link('&raquo;');
	if ($end_page < $max_page) {
		$last_page_text = "Last";
		echo '<a href="'.get_pagenum_link($max_page).'" title="'.$last_page_text.'">'.$last_page_text.'</a>';
	}
	echo '</div>'.$after."n";
}
function my_thesis_pagination() {
  echo "<div class='prev_next'>";
  page_navi();
  echo "</div>";
}
remove_action('thesis_hook_after_content','thesis_post_navigation');
add_action('thesis_hook_after_content', 'my_thesis_pagination');
/***** end pagenavi http://hutruc.com *****/

2.Thêm CSS vào custom.css

Thêm đoạn code sau vào bên dưới file custom.css. Bạn vào TheSIS Options -> Custom File Editor. Chọn file custom.css trong hộp và nhấn Edit selected file. (Nên lưu dự phòng trước khi chỉnh sửa)

/***** pagenavi http://hutruc.com *****/
.custom .full_width #content_box .page_navi .page {
  margin: 2px;
  padding: 2px 4px;
}
.page_navi {
	text-align:center;
	clear:both;
	padding-top:10px;
}
.page_navi .current{
	padding:2px 5px;
	margin:3px;
	border:1px solid #ccc;
	background:#E0E0E0;
}
.page_navi a{
	padding:2px 5px;
	margin:3px;
	border:1px solid #ccc;
}
/***** end pagenavi http://hutruc.com *****/

Hư Trúc cũng mới làm quen với TheSiS thôi nên cách làm này có thể chưa tối ưu. Bạn còn cách nào hay hơn, hãy chia sẻ với mọi người nhé. Chúc bạn thành công.


{ 23 comments… read them below or add one }

1 nghiadoi January 13, 2010 at 12:31 pm

chào mừng trở lại :D chà bác lại chơi thesis rồi….hết wpline để hỏi :D
nhưng sao data mất hết rồi bác hutruc
nghiadoi´s last blog ..Tony Buzan và Phương pháp tư duy Mindmap My ComLuv Profile

Reply

2 Hư Trúc January 13, 2010 at 12:45 pm

Không phải mất mà em không phục hồi lại. Sẽ tự edit lại sau. Muốn thủ công để chỉnh sửa một tý :)

Reply

3 Hư Trúc January 13, 2010 at 8:22 pm

Bác đừng lo, em vẫn cài blog demo trên localhost nên cần gì bác cứ tự nhiên đặt câu hỏi nhé :)

Reply

4 nguyentrung167 January 13, 2010 at 12:47 pm

Chào mừng sự trở lại củ Hutruc, mà sao lại “Đít sờ” nữa vậy bác… đi đâu cũng gặp hết, hihih, chúc bác quay trở lại với nhiều thành công nghen…
nguyentrung167´s last blog ..Nhật kí sinh hoạt 10/01 My ComLuv Profile

Reply

5 Hư Trúc January 13, 2010 at 12:51 pm

Thanks bác. Em cũng muốn thay đổi không khí ấy mà. Với lại chuyển qua thesis vọc một thời gian cho biết với đời :)

Reply

6 Tinh January 13, 2010 at 4:29 pm

Cos thêm một bác trở thành fan của Thesis. Thế thì mình nhàn rồi :-)

Ah mà bác đang dùng cái host của LCWsoft đấy ha, chạy nhanh ra phết, chẳng khác gì hostgator nhỉ :-)
Tinh´s last blog ..Top 5 WordPress Framework Themes Có Khả Năng SEO Tốt Nhất My ComLuv Profile

Reply

7 Hư Trúc January 13, 2010 at 4:38 pm

Vâng, hôm qua trang chủ load cực chậm, trang bài viết thì nhanh hơn. Hôm nay em fix rồi, bỏ luôn thumb nên load khá nhanh :)

Reply

8 ducchinh March 7, 2010 at 10:56 pm

dùng WP-PageNavi liệu được không bác? Đây là plugin dùng để phân trang 1-trang 2-trang 3… mà em vẫn hay dùng. Em chưa thử với TheSiS. Bác thử xem dc ko :D

Reply

9 Huỳnh Trung March 13, 2010 at 3:28 pm

Tất nhiên là được chứ, tuy nhiên chỉ một ít code là xong, cần gì ta phải dùng plugin :)

Reply

10 Dũng @ All 4 You Blog April 2, 2010 at 1:31 pm

Chào HT,

Cho mình góp ý xiu xíu vào đoạn mã để chèn vào custom_functions.php nha:

Các bạn hãy đổi:

echo $before.''."n";

echo ''.$after."n";

thành:

echo $before.''."";

echo ''.$after."";

Giải thích: Mình đã xóa kí tự n đi để tránh hiện tượng 2 chữ N in hoa hiện ra cạnh PageNavi -> Mất thẩm mĩ :D

Thân!
Dũng @ All 4 You Blog´s last blog ..Miễn phí Backup4all Lite 4.4 Edition My ComLuv Profile

Reply

11 Huỳnh Trung April 4, 2010 at 5:38 pm

Cảm ơn bác nhé, Đoạn code gốc mà HT viết thì chỗ đó là \n (có tác dụng tạo dòng mới) nhưng post lên đây nó bị mất dấu “\” nên bị thế :2:

Reply

12 Dũng @ All 4 You Blog April 5, 2010 at 3:30 pm

Hì.. mình cũng chỉ tình cờ ngang qua và thấy lỗi thui ^^!
à
may mà có thư gửi thông báo cho mình ko thì mình quên mất.
Cái bài Tut HT hướng dẫn chuyển dữ liệu từ AIO SEO sang Thesis mình áp dụng hem được. Bạn xem xem có lỗi ở đâu không nha ^^!
Dũng @ All 4 You Blog´s last blog ..Miễn phí maComfort Standard Version My ComLuv Profile

Reply

13 Huỳnh Trung April 5, 2010 at 4:17 pm

Bạn đã đổi prefix chưa :bi:

Reply

14 Dũng @ All 4 You Blog April 5, 2010 at 4:31 pm

mình đổi rùi :D hjx hjx… ko hỉu tại sao nứa.. à
nếu để chung 2 thằng này thì có sợ xung khắc gì không nhỉ :bi:
Dũng @ All 4 You Blog´s last blog ..Miễn phí maComfort Standard Version My ComLuv Profile

15 Dũng @ All 4 You Blog April 5, 2010 at 4:38 pm

Nó báo như thế này :cuoiduyen:

INSERT wp_postmeta(
post_id,
meta_key,
meta_value
)
SELECT post_id, concat( 'thesis_', meta_key ) , meta_value
FROM wp_postmeta
WHERE meta_key
IN (
'title', 'description', 'keywords'
);

Dũng @ All 4 You Blog´s last blog ..Miễn phí maComfort Standard Version My ComLuv Profile

Reply

16 Huỳnh Trung April 5, 2010 at 4:59 pm

Có thể do lâu rồi HT không dùng AIO nên code cũ không áp dụng được. HT vừa cập nhật code mới, bác thử xem sao.
Bác xem hướng dẫn viết code trên HT nhé: http://hutruc.com/about/comment

Reply

17 TQTuấn May 4, 2010 at 10:06 am

Hư Trúc có plugin, hay đoạn code nào phân trang trong bài viết không ? Có thể hướng dẫn cho mình với.

Reply

18 Huỳnh Trung May 8, 2010 at 9:46 am

WP đã hổ trợ rồi bạn à. Bạn tham khảo chi tiết ở đây nhé: http://codex.wordpress.org/Styling_Page-Links

Reply

19 TQTuấn May 18, 2010 at 7:22 pm

Mình có tham khảo qua Style_page_links người ta dùng thẻ để phân trang trong bài viết. Vấn đề của mình là dùng query sql để hiển thị bài viết, mình không thể nào sử dụng echo ““. Mong được sự chỉ giáo của bạn.

Reply

20 Huỳnh Trung May 19, 2010 at 10:56 am

Vấn đề của bạn đơn giản thôi, sao phải làm cho rắc rối thêm. Bạn chỉ việc thêm đoạn code sau

<?php wp_link_pages(); ?>

vào vị trí thích hợp ở file single.php; khi viết bài, bạn chỉ việc thêm

<!--nextpage-->

ở vị trí bạn muốn phân ra thành trang mới.

Reply

21 TQTuấn May 19, 2010 at 2:23 pm

Cảm ơn đã giúp mình, nhưng vấn đề chưa được giải quyết :-(:
Cấu trúc query từ csdl của mình có dạng:

echo "Nội dung trang 1";
echo "<!--nextpage-->";
echo "Nội dung trang 2";
echo "<!--nextpage-->";
echo "Nội dung trang 3";

Mình muốn xuất kết quả là:

Nội dung trang 1
Page 1 2 3

vấn đề gặp phải là dòng code

 echo "<!--nextpage-->"

không xuất được kết quả. (Mình đã thêm vào

[/php][php]

vào single.php rồi)

Mong sự trợ giúp từ bạn ! Cảm ơn

Reply

22 Huỳnh Trung May 19, 2010 at 8:18 pm

Vấn đề của bạn HT nghĩ đơn giản hơn thì nên theo cách trên là gọn rồi. Còn ý của bạn thật sự HT không rõ lắm, chắc ngoài khả năng của HT. Mong bạn thông cảm :2:

23 TQTuấn May 18, 2010 at 7:26 pm

hix, nó không hiển thị thẻ <–nextpage–>

Reply

Leave a Comment

CommentLuv Enabled
:cuoiduyen: :2: :$$$: :potoanthan: :heya: :bi: :bimat: :nangly: :D :-O :chem: more »

Previous post:

Next post: