WEB TIN TỨC PHP CĂN BẢN
Bài 1: PHP trang tin tức - Tạo database và cấu trúc folder admin Bài 2: PHP trang tin tức - Viết thư viện xử lý database admin Bài 3: PHP trang tin tức - Viết thư viện session và functions admin Bài 4: PHP trang tin tức - Kết nối database và cấu trúc index admin Bài 5: PHP trang tin tức - Xây dựng header và footer admin Bài 6: PHP trang tin tức - Tạo chức năng đăng nhập, đăng xuất admin Bài 7: PHP trang tin tức - Xây dựng sidebar, content và phân trang admin Bài 8: PHP trang tin tức - Các chức năng chuyên mục admin Bài 9: PHP trang tin tức - Các chức năng chuyên mục admin (tiếp theo) Bài 10: PHP trang tin tức - Các chức năng của hình ảnh admin Bài 11: PHP trang tin tức - Các chức năng của hình ảnh admin (tiếp theo) Bài 12: PHP trang tin tức - Các chức năng của bài viết admin Bài 13: PHP trang tin tức - Các chức năng của bài viết admin (tiếp theo) Bài 14: PHP trang tin tức - Các chức năng cài đặt admin Bài 15: PHP trang tin tức - Các chức năng của tài khoản admin Bài 16: PHP trang tin tức - Các chức năng của tài khoản admin (tiếp theo) Bài 17: PHP trang tin tức - Các chức năng của profile admin Bài 18: PHP trang tin tức - Các chức năng của profile admin (tiếp theo) Bài 19: PHP trang tin tức - Xây dựng dashboard admin và fix bug Bài 20: PHP trang tin tức - Cấu trúc folder client Bài 21: PHP trang tin tức - Kết nối database và rewrite url Bài 22: PHP trang tin tức - Xây dựng header và footer client Bài 23: PHP trang tin tức - Xây dựng layout client Bài 24: PHP trang tin tức - Hiển thị danh sách bài viết mới nhất Bài 25: PHP trang tin tức - Hiển thị danh sách bài viết chuyên mục Bài 26: PHP trang tin tức - Hiển thị nội dung bài viết Bài 27: PHP trang tin tức - Xây dựng chức năng tìm kiếm Bài 28: PHP trang tin tức - Xây dựng các trang con và clear source (End)
CÁC CHỦ ĐỀ
BÀI MỚI NHẤT
Dự án mới của mình là gamehow.net, mời anh em ghé thăm và góp ý ạ.

Bài 7: PHP trang tin tức - Xây dựng sidebar, content và phân trang admin

Xin chào tất cả các bạn, chào mừng các bạn đã quay trở lại với series hướng dẫn xây dựng trang tin tức bằng PHP. Ở bài trước, chúng ta đã viết chức năng đăng nhập, đăng xuất admin, hôm nay mình sẽ hướng dẫn các bạn xây dựng sidebar, content và phân trang admin. Bây giờ chúng ta bắt tay vào làm thôi.

1. Rewrite url 

Các bạn tạo file .htaccess cùng cấp với admin/index.php rồi copy đoạn code bên dưới :

banquyen png
Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức.

# Bảo vệ file .htaccess
<Files .htaccess>
Order Allow,Deny
Deny from all
</Files>

# Rewrite url
RewriteEngine on
# 1 tham số
RewriteRule ^([a-zA-Z0-9_-]+)$ index.php?tab=$1
RewriteRule ^([a-zA-Z0-9_-]+)/$ index.php?tab=$1
# 2 tham số
RewriteRule ^([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)$ index.php?tab=$1&ac=$2
RewriteRule ^([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)/$ index.php?tab=$1&ac=$2
# 3 tham số
RewriteRule ^([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)$ index.php?tab=$1&ac=$2&id=$3
RewriteRule ^([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)/$ index.php?tab=$1&ac=$2&id=$3

2. Khởi tạo và require

Các bạn tạo hai file admin/templates/sidebar.php (Sidebar) và admin/templates/content.php (Content). Để require hai cái này với index, các bạn mở file admin/index.php lên và chèn đoạn code này vào bên trong chỗ tồn tại $user (đăng nhập) :

// Hiển thị sidebar
require_once 'templates/sidebar.php';

// Hiển thị sidebar
require_once 'templates/content.php';

Sau đó các bạn chạy lại thử xem nó bị lỗi không nhé ! Nếu OK rồi chúng ta qua bước tiếp theo.

2. Xây dựng sidebar

Các bạn mở file admin/templates/sidebar.php và copy đoạn code này vào :

<div class="col-md-3 sidebar">
	<ul class="list-group">
		<li class="list-group-item">
			<div class="media">
				<a class="pull-left">
				    <img class="media-object" src="
					<?php
						// URL ảnh đại diện tài khoản
						if ($data_user['url_avatar'] == '')
						{
							echo $_DOMAIN.'images/profile.png';
						}
						else
						{
							echo $data_user['url_avatar'];
						}
					?>
				    " alt="Ảnh đại diện của <?php echo $data_user['display_name']; ?>" width="64" height="64">
				</a>
				<div class="media-body">
				    <h4 class="media-heading"><?php echo $data_user['display_name']; ?></h4>
				    <?php

				    // Hiển thị cấp bậc tài khoản
				    // Nếu tài khoản là admin
				    if ($data_user['position'] == '1')
				    {
				    	echo '<span class="label label-primary">Quản trị viên</span>';
				    }
				    // Ngược lại tài khoản là tác giả
				    else
				    {
				    	echo '<span class="label label-success">Tác giả</span>';
				    }

				    ?>
				</div>
			</div>
		</li>
		<a class="list-group-item active" href="<?php echo $_DOMAIN; ?>">
			<span class="glyphicon glyphicon-dashboard"></span> Bảng điều khiển
		</a>
		<a class="list-group-item" href="<?php echo $_DOMAIN; ?>profile">
			<span class="glyphicon glyphicon-user"></span> Hồ sơ cá nhân
		</a>
		<a class="list-group-item" href="<?php echo $_DOMAIN; ?>posts">
			<span class="glyphicon glyphicon-edit"></span> Bài viết
		</a>	
		<a class="list-group-item" href="<?php echo $_DOMAIN; ?>photos">
			<span class="glyphicon glyphicon-picture"></span> Hình ảnh
		</a>
		<?php

		// Phân quyền sidebar
		// Nếu tài khoản là admin
		if ($data_user['position'] == '1')
		{
			echo 
			'
				<a class="list-group-item" href="' . $_DOMAIN . 'categories">
					<span class="glyphicon glyphicon-tag"></span> Chuyên mục
				</a>
				<a class="list-group-item" href="' . $_DOMAIN . 'setting">
					<span class="glyphicon glyphicon-cog"></span> Cài đặt chung
				</a>	
			';
		}

		?>
		<a class="list-group-item" href="<?php echo $_DOMAIN; ?>signout.php">
			<span class="glyphicon glyphicon-off"></span> Thoát
		</a>
	</ul><!-- ul.list-group -->
</div><!-- div.sidebar -->
Mình sẽ giải thích một số phần quan trọng :

  • URL ảnh đại diện của tài khoản :
    • Đầu tiên các bạn tạo folder images cùng cấp với admin/index.php để chứa file ảnh profile.png (Ảnh bạn có thể download tại source của bài viết này hoặc tự kiếm ảnh theo ý thích nhưng nhớ đổi tên).
    • Nếu field url_avatar này trống, ta sẽ lấy đường dẫn của ảnh có sẵn trên server. 
    • Còn ngược lại nếu có thì ta sẽ lấy đường dẫn trong field url_avatar (Để có thể insert field này, chúng ta sẽ tìm hiểu qua các bài sau).
  • Phân quyền sidebar :
    • Nếu tài khoản là admin (position = 1) thì chúng ta sẽ hiển thị chức năng về chuyên mục và cài đặt chung.
    • Còn ngược lại nếu tài khoản là tác giả (position = 0) thì chúng ta sẽ ẩn hai cái chức năng này đi.

Bây giờ mình sẽ thêm hiệu ứng active cho cái sidebar. Các bạn mở file admin/includes/footer.php lên và dán đoạn code này bên trên thẻ </body> :

<?php

// Active sidebar
// Lấy tham số tab
if (isset($_GET['tab']))
{
	$tab = trim(addslashes(htmlspecialchars($_GET['tab'])));
}
else
{
	$tab = '';
}

// Nếu có tham số tab
if ($tab != '')
{
	// Tháo active của Bảng điều khiển
	echo '<script>$(".sidebar ul a:eq(1)").removeClass("active");</script>';
	// Active theo giá trị của tham số tab
	if ($tab == 'profile')
	{
		echo '<script>$(".sidebar ul a:eq(2)").addClass("active");</script>';
	}
	else if ($tab == 'posts')
	{
		echo '<script>$(".sidebar ul a:eq(3)").addClass("active");</script>';
	}
	else if ($tab == 'photos')
	{
		echo '<script>$(".sidebar ul a:eq(4)").addClass("active");</script>';
	}
	else if ($tab == 'categories')
	{
		echo '<script>$(".sidebar ul a:eq(5)").addClass("active");</script>';
	}
	else if ($tab == 'setting')
	{
		echo '<script>$(".sidebar ul a:eq(6)").addClass("active");</script>';
	}
}

?>
Nếu bạn thay đổi vị trí của các item trong sidebar thì cũng nhớ thay đổi số thứ tự để active chính xác nhé !

3. Xây dựng content và phân trang

Các bạn mở file admin/templates/content.php lên và copy nội dung sau :

<div class="col-md-9 content">
	<?php

	// Phân trang content
	// Lấy tham số tab
	if (isset($_GET['tab']))
	{
		$tab = trim(addslashes(htmlspecialchars($_GET['tab'])));
	}
	else
	{
		$tab = '';
	}

	// Nếu có tham số tab
	if ($tab != '')
	{
		// Hiển thị template chức năng theo tham số tab
		if ($tab == 'profile')
		{
			// Hiển thị template hồ sơ cá nhân
			require_once 'templates/profile.php';
		}
		else if ($tab == 'posts')
		{
			// Hiển thị template bài viết
			require_once 'templates/posts.php';
		}
		else if ($tab == 'photos')
		{
			// Hiển thị template hình ảnh
			require_once 'templates/photos.php';
		}
		else if ($tab == 'categories')
		{
			// Hiển thị template chuyên mục
			require_once 'templates/categories.php';
		}
		else if ($tab == 'setting')
		{
			// Hiển thị template cài đặt chung
			require_once 'templates/setting.php';
		}
	}
	// Ngược lại không có tham số tab
	else
	{
		// Hiển thị template bảng điều khiển
		require_once 'templates/dashboard.php';
	}

	?>
</div><!-- div.content -->
Sau đó các bạn tạo thêm các file sau :

  • admin/templates/dashboard.php (Bảng điều khiển).
  • admin/templates/posts.php (Bài viết).
  • admin/templates/photos.php (Hình ảnh).
  • admin/templates/categories.php (Chuyên mục).
  • admin/templates/setting.php (Cài đặt chung).

Giờ các bạn thử click vào các item của sidebar, xem bên content có hiển thị lỗi không, nêu không hiển thị gì thì đã thành công rồi đấy !

php trang tin tuc ket qua xay dung sidebar content va phan trang admin jpg

4. Lời kết

Phù ! Cuối cùng cũng xong, qua bài này chúng ta đã xây dựng xong sidebar, content và phân trang cho admin. Bài này có vẻ hơi dài một xíu nên các bạn thực hiện từ từ và làm theo từng bước. Qua bài sau chúng ta sẽ viết các chức năng về chuyên mục. Cảm ơn các bạn đã theo dõi, chúc các bạn thành công !

Cùng chuyên mục:

Hàm key_exists() trong PHP

Hàm key_exists() trong PHP

Cách sử dụng key_exists() trong PHP

Hàm mysqli_fetch_row() trong PHP

Hàm mysqli_fetch_row() trong PHP

Cách sử dụng mysqli_fetch_row() trong PHP

Hàm end() trong PHP

Hàm end() trong PHP

Cách sử dụng end() trong PHP

Hàm mysqli_field_count() trong PHP

Hàm mysqli_field_count() trong PHP

Cách sử dụng mysqli_field_count() trong PHP

Hàm count() trong PHP

Hàm count() trong PHP

Cách sử dụng count() trong PHP

Hàm mysqli_field_seek() trong PHP

Hàm mysqli_field_seek() trong PHP

Cách sử dụng mysqli_field_seek() trong PHP

Hàm compact() trong PHP

Hàm compact() trong PHP

Cách sử dụng compact() trong PHP

Hàm mysqli_field_tell() trong PHP

Hàm mysqli_field_tell() trong PHP

Cách sử dụng mysqli_field_tell() trong PHP

Hàm array_values() trong PHP

Hàm array_values() trong PHP

Cách sử dụng array_values() trong PHP

Hàm mysqli_free_result() trong PHP

Hàm mysqli_free_result() trong PHP

Cách sử dụng mysqli_free_result() trong PHP

Hàm array_unshift() trong PHP

Hàm array_unshift() trong PHP

Cách sử dụng array_unshift() trong PHP

Hàm mysqli_get_charset() trong PHP

Hàm mysqli_get_charset() trong PHP

Cách sử dụng mysqli_get_charset() trong PHP

Hàm array_shift() trong PHP

Hàm array_shift() trong PHP

Cách sử dụng array_shift() trong PHP

Hàm mysqli_get_client_stats() trong PHP

Hàm mysqli_get_client_stats() trong PHP

Cách sử dụng mysqli_get_client_stats() trong PHP

Hàm array_unique() trong PHP

Hàm array_unique() trong PHP

Cách sử dụng array_unique() trong PHP

Hàm mysqli_get_client_version() trong PHP

Hàm mysqli_get_client_version() trong PHP

Cách sử dụng mysqli_get_client_version() trong PHP

Hàm array_uintesect() trong PHP

Hàm array_uintesect() trong PHP

Cách sử dụng array_uintesect() trong PHP

Hàm mysqli_get_connection_stats() trong PHP

Hàm mysqli_get_connection_stats() trong PHP

Cách sử dụng mysqli_get_connection_stats() trong PHP

Hàm array_sum() trong PHP

Hàm array_sum() trong PHP

Cách sử dụng array_sum() trong PHP

Hàm mysqli_get_host_info() trong PHP

Hàm mysqli_get_host_info() trong PHP

Cách sử dụng mysqli_get_host_info() trong PHP

Top