我希望在codeigniter框架中开发一个网站,我可以通过slug访问任何网页。
例如,就像WordPress和Magento一样,我们可以通过www.sitename.com/category_type/category_detailpage
访问类别页面,我们也可以直接访问Category_detail,只需在主URI www.sitename之后添加它的slug。 COM / category_detailpage。
所以我的问题是如果你在Codeigniter中有这个Slug目录的任何案例研究项目代码,我如何设计数据库中的slug表模式,请尽快告诉我。
在此先感谢!
答案 0 :(得分:12)
如何使用slug?
将用一个例子解释:
网址 - http://www.example.com/products/apple-iphone-5S-16GB-brand-new/
1)假设您有产品页面和产品页面需要URL中的一些数据来了解要显示的产品。
2)在我们使用我们从URL获取的id查询数据库之前。但现在我们会做同样的事情(查询我们的数据库)只是用slug替换id就是这样!
3)因此在数据库中添加名为slug的附加列。下面是您更新的产品数据库结构(仅作为示例)。
Columns Values
id (int(11), PK) 1
title (varchar(1000)) Apple iPhone 5S 16GB
slug (varchar(1000)) apple-iphone-5S-16GB-brand-new
price (varchar(15)) 48000
thumbnail (varchar(255)) apple-iphone-5S-16GB-brand-new.jpg
description (text) blah blah
...
...
我之前也回答了slu ..检查是否有帮助。
How to remove params from url codeigniter
修改强>
为此,您必须在下面进行更改 -
1)创建以下2个表格
slug_table:
id (PK) | slug | category_id (FK)
category_table:
id (PK) | title | thumbnail | description
2)config / routes.php
$route['/(:any)'] = "category/index/$1";
3)models / category_model.php (创建新文件)
class Category_model extends CI_Model
{
public function __construct()
{
parent::__construct();
$this->db = $this->load->database('default',true);
}
public function get_slug($slug)
{
$query = $this->db->get_where('slug_table', array('slug' => $slug));
if($query->num_rows() > 0)
return $query->row();
return false;
}
public function get_category($id)
{
$query = $this->db->get_where('category_table', array('id' => $id));
if($query->num_rows() > 0)
return $query->row();
return false;
}
}
4)controllers / category.php (创建新文件)
class Category extends CI_Controller
{
public function __construct()
{
parent::__construct();
$this->load->model('category_model');
}
public function index($slug)
{
$sl = $this->category_model->get_slug($slug);
if($sl)
{
$data['category'] = $this->category_model->get_category($sl->category_id);
$this->load->view('category_detail', $data);
}
else
{
// 404 Page Not Found
}
}
}
5)views / category_detail.php (创建新文件)
<label>Category title: <?php echo $category->title; ?></label><br>
</label>Category description: <?php echo $category->description; ?></label>