据我所知,在像wordpress这样的CMS中,所有页面都是通过url发送变量动态构建的,然后将url简化为www.example.com/my-first-blog-post/。我假设它发送了帖子ID并且不仅仅依赖于博客帖子的网址名称。
使用codeigniter,我有我的博客控制器和我的博客模板设置,但是我不确定如何实现像wordpress这样的东西。我需要有一个像www.example.com/my-first-blog/12/这样的网址才能传递帖子的ID。有没有办法隐藏12或我是否通过它的网址名称搜索博客文章?
答案 0 :(得分:0)
您可以使用网址片段进行发帖查询。 (这些my-first-post
类似的字符串通常称为slugs)。您必须预先生成这些并将其与帖子一起保存。
您可以使用路由配置的$route['404_override']
将每个不可路由的路径指向控制器。一旦你有了这个设置,你将不得不查询blogposts参数,如果找到它提供发布内容,如果没有发出常规404.这样的事情:
// application/config/routes.php
$route['404_override'] = 'blog/show_post'; // controller/action
// application/controllers/blog.php
class Blog extrends CI_Controller {
public function show_post() {
// get the first segment, the "first-post" from http://example.com/first-post
$slug = $this->uri->segment(0);
$post = $this->posts->find_by_slug($slug); // imaginary posts model with db query
if (!$post) { // if the post not found by slug
show_404(); // return 404 as usual
} else {
$this->load->view('blog/show', array($post)); // post found, display it
}
}
}
答案 1 :(得分:0)
您可以使用网址片段进行发帖查询。 (这些我的第一篇文章通常称为slugs)。您必须预先生成这些并将其与帖子一起保存。
您可以使用路由配置的$ route [' 404_override']将每个不可路由的路径指向控制器。设置完成后,您必须使用blogposts的参数进行查询,如果发现了该帖子的内容,如果没有发送常规的404.这样的内容:阅读这篇文章 http://www.obatkesehatanalami.com