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

 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 trang

if( $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ết

if( $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.
(Nguồn: Mynukeviet.net)

Post a Comment

0 Comments