Cộng đồng nguồn mở

Loại bỏ tên function trong URL module NukeViet

Thứ tư - 22/07/2015 03:19
Trong phạm vi bài viết này mình xin giới thiệu phương án loại bỏ tên function URL trong lập trình module NukeViet

Trường hợp bao gồm func main (Trang chính), viewcat (Xem chủ đề) và viewdetail (Xem chi tiết bài viết).

Trước khi loại bỏ:
http://mynukeviet.net/news/viewcat/kien-thuc-lap-trinh-nukeviet/
http://mynukeviet.net/news/viewdetail/loai-bo-ten-function-trong-url/

Sau khi loại bỏ:
http://mynukeviet.net/news/kien-thuc-lap-trinh-nukeviet/
http://mynukeviet.net/news/kien-thuc-lap-trinh-nukeviet/loai-bo-ten-function-trong-url/

Demo: Có thể download module bus-directory xem code,

Sử dụng đoạn mã bên dưới, trong file modules/ten-module/function.php
$post_id = 0; // ID bài viết$cat_id = 0; // ID chủ đề$alias = isset( $array_op[0] ) ? $array_op[0] : '';foreach( $array_cat as $cat ){	// Xây dựng URL chủ đề	$array_cat[$cat['id']]['link'] = NV_BASE_SITEURL . 'index.php?' . NV_LANG_VARIABLE . '=' . NV_LANG_DATA . '&' . NV_NAME_VARIABLE . '=' . $module_name . '&' . NV_OP_VARIABLE . '=' . $cat['alias'];	if( $alias == $cat['alias'] )	{		$cat_id = $cat['id'];	}}$alias_url = ''; // alias bài viết$page = 1; // Trang mặc định$per_page = 20; // Số lượng bản ghi trên một trangif( $op == 'main' ){	if( empty( $cat_id ) )	{		if( preg_match( '/^page\-([0-9]+)$/', (isset( $array_op[0] ) ? $array_op[0] : ''), $m ) )		{			$page = ( int )$m[1];		}	}	else	{		if( sizeof( $array_op ) == 2 and preg_match( '/^([a-z0-9\-]+)\-([0-9]+)$/i', $array_op[1], $m1 ) and !preg_match( '/^page\-([0-9]+)$/', $array_op[1], $m2 ) )		{			// Nếu thỏa mãn điều kiện này thì là chi tiết bài viết			$op = 'viewdetail';			$alias_url = $m1[1];			$post_id = $m1[2];		}		else		{			if( preg_match( '/^page\-([0-9]+)$/', (isset( $array_op[1] ) ? $array_op[1] : ''), $m ) )			{				$page = ( int )$m[1];			}			$op = 'viewcat';		}	}}
 Lưu ý:
- Sử dụng hàm phân trang có rewrite để phân trang danh sách.
- Trong file modules/ten-module/funcs/viewdetail.php, modules/ten-module/funcs/detail.php bạn tiền hành bắt các biến đã được khởi tạo ở đoạn mã bên trên để xử lý tiếp.

Trường hợp bao gồm func main (Trang chính) và viewdetail (Xem chi tiết bài viết).

Trước khi loại bỏ:
http://mynukeviet.net/news/viewdetail/loai-bo-ten-function-trong-url/

Sau khi loại bỏ:
http://mynukeviet.net/news/loai-bo-ten-function-trong-url/

Sử dụng đoạn mã bên dưới, trong file modules/ten-module/function.php
$page = 1; // Trang mặc định$per_page = 20; // Số lượng bản ghi trên 1 trang$id = 0; // ID bài viếtif( $op == 'main' ){	if( sizeof( $array_op ) == 1 )	{		if( preg_match( '/^page\-([0-9]+)$/', (isset( $array_op[0] ) ? $array_op[0] : ''), $m ) )		{			$page = ( int )$m[1];		}		elseif( preg_match( '/^([a-z0-9\-]+)\-([0-9]+)$/i', $array_op[0], $m1 ) and !preg_match( '/^page\-([0-9]+)$/', $array_op[0], $m2 ) )		{			$op = 'detail';			$id = $m1[2];		}	}}
Lưu ý:
- Sử dụng hàm phân trang có rewrite để phân trang danh sách.
- Trong file modules/ten-module/funcs/detail.php bạn tiền hành bắt các biến đã được khởi tạo ở đoạn mã bên trên để xử lý tiếp.
 

Tổng số điểm của bài viết là: 27 trong 7 đánh giá

Xếp hạng: 3.9 - 7 phiếu bầu
Click để đánh giá bài viết

  Ý kiến bạn đọc

Những tin mới hơn

Những tin cũ hơn

Bạn đã không sử dụng Site, Bấm vào đây để duy trì trạng thái đăng nhập. Thời gian chờ: 60 giây