Trong CodeIgniter 3 để tạo các URL có độ sâu tuỳ ý như yêu cầu, bạn có thể cấu hình routes.php một cách linh hoạt và sử dụng bộ định tuyến của CI3 để xử lý các URL phân cấp. Dưới đây là hướng dẫn chi tiết:
routes.phpMở tệp application/config/routes.php và cấu hình route để hỗ trợ URL có nhiều cấp độ. Bạn có thể sử dụng các tham số động trong route để bắt các phần khác nhau của URL.
Ví dụ:
$route['(:any)/(:any)/(:any)/(:any)/(:any)-a(:num).html'] = 'articles/view/$1/$2/$3/$4/$5/$6'; $route['(:any)/(:any)/(:any)/(:any)-a(:num).html'] = 'articles/view/$1/$2/$3/$4/$5'; $route['(:any)/(:any)/(:any)-a(:num).html'] = 'articles/view/$1/$2/$3/$4'; $route['(:any)/(:any)-a(:num).html'] = 'articles/view/$1/$2/$3'; $route['(:any)-a(:num).html'] = 'articles/view/$1/$2';
(:any): Bắt bất kỳ chuỗi nào (thường được sử dụng cho tên danh mục hoặc bài viết).(:num): Bắt bất kỳ số nào (sử dụng cho ID bài viết)./php/wordpress/woocommerce/huong-dan-cac-trang-thai-don-hang-cua-woocommerce-a210.html(:any)/(:any)/(:any)/(:any)-(:num).htmlview của controller articles với các tham số $1, $2, $3, $4, $5.Trong controller Articles.php (tạo trong application/controllers/Articles.php), bạn cần tạo hàm view để xử lý các tham số từ URL:
class Articles extends CI_Controller {
public function view($category1 = '', $category2 = '', $category3 = '', $category4 = '', $title = '', $id = '') {
// Đây là nơi bạn xử lý bài viết theo ID và có thể các category nếu cần.
// Tìm bài viết theo $id
$data['article'] = $this->article_model->get_article_by_id($id);
// Xử lý nếu không tìm thấy bài viết
if (empty($data['article'])) {
show_404();
}
// Nếu cần, bạn có thể kiểm tra tính hợp lệ của $category1, $category2,... và $title với dữ liệu trong cơ sở dữ liệu.
// Load view để hiển thị bài viết
$this->load->view('articles/view', $data);
}
}
Trong application/models/Article_model.php, bạn có thể có một model để lấy thông tin bài viết từ cơ sở dữ liệu:
class Article_model extends CI_Model {
public function get_article_by_id($id) {
$query = $this->db->get_where('articles', array('id' => $id));
return $query->row_array();
}
}
Cuối cùng, bạn tạo view application/views/articles/view.php để hiển thị bài viết:
<h1><?php echo $article['title']; ?></h1> <p><?php echo $article['content']; ?></p>
Với cấu hình trên, bạn có thể truy cập các URL có độ sâu khác nhau như:
engineer.net/php/wordpress/woocommerce/huong-dan-cac-trang-thai-don-hang-cua-woocommerce-a210.htmlengineer.net/php/wordpress/woocommerce/plugin/huong-dan-cac-trang-thai-don-hang-cua-woocommerce-a210.htmlTất cả các URL này sẽ được chuyển hướng tới cùng một hàm view trong controller Articles, và bạn có thể xử lý logic tuỳ theo yêu cầu của mình.