【发布时间】:2015-04-25 04:18:55
【问题描述】:
我从几天前开始学习 Codeigniter,我想在 Codeigniter 上创建博客,但我想到了两个问题。
1. How to create SEO Friendly URL just like WordPress is using.
2. How to get page content after navigate to that 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/
导航到上面的网址后,如何获取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; ?>
现在我的网址如下所示: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
我创建了另一个 view(post) 来显示带有帖子 ID(从 URL 获取 ID)的帖子内容。
我走对了吗?需要你的建议来改进我的逻辑。
【问题讨论】:
-
您可以像这样使用:{example.com/controller/method/1001/hello-world} 这里 1001 是您的记录 {ID},hello-world 是 {Title}。您可以使用此 ID 进行处理。
标签: php codeigniter