我最近几天一直在学习Codeigniter,并且想要在Codeigniter上创建博客,但是我脑海中有两个问题:
1. 如何创建像WordPress一样的SEO友好型URL。
2. 如何在导航到该URL后获取页面内容。
我已经创建了tbl_post
表来存储文章详情,其表结构如下:
1. ID
2. Title
3. Content
4. Tags
5. Status
6. Create Time
7. Update Time
8. Author ID
9. Status
现在我想从上面的表格中创建动态的文章URL。
例如:http://www.example.com/hello-world/ 在导航到上面的URL后,如何获取hello-world文章的内容?
您已经注意到我没有传递任何ID来获取内容的示例URL。如果我传递ID但不想在URL字符串中显示,有什么建议吗?
就是这样。
如果您能指导我正确的方法,我将非常感谢。
谢谢。
代码审查
主页(我的博客文章列表视图)
主页控制器:
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Home extends CI_Controller {
public function index()
{
$this->load->model("HomeModel"); // Load home model
$data['postData'] = $this->HomeModel->postData(); // Get posts data from postData function
$this->load->view("global_header"); // Include header area
$this->load->view("home", $data);
$this->load->view("global_footer"); // Include footer area
}
}
主页模型:
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class HomeModel extends CI_Model{
public function postData()
{
$this->db->select('tbl_post.*, tbl_user.first_name, tbl_user.last_name');
$this->db->from('tbl_post');
$this->db->join('tbl_user', 'tbl_post.author_id = tbl_user.id', 'Left Join');
$query = $this->db->get();
return $query->result();
}
}
主页视图
<?php for($i=0; $i<count($postData); $i++): ?>
<?php
$postID = $postData[$i]->id;
$postTitle = $postData[$i]->title;
?>
<a href="<?php echo base_url("$postID/$postTitle"); ?>">
<h2 class="post-title">
<?php echo $postTitle; ?>
</h2>
</a>
</div>
<hr>
<?php endfor; ?>
现在我的URL看起来像这样:http://example.com/1/man-must-explore-and-this-is-exploration-at-its-greatest。
Domain: http://example.com
ID: 1
Title: man-must-explore-and-this-is-exploration-at-its-greatest
我创建了另一个视图(post)
来显示帖子内容,帖子ID从URL中获取。
我这么做对吗?需要您的建议来改进我的逻辑。