2013-04-15 26 views
0

據我的理解,在一個類似wordpress的CMS中,所有頁面都是通過通過url發送變量動態構建的,然後簡化網址爲www.example.com/。我先博客員額/。我假設它發送了帖子ID,並且不僅僅依賴於博客帖子的網址名稱。codeigniter乾淨的網址,但傳遞變量來動態構建頁面

隨着codeigniter,我有我的博客控制器和我的博客模板設置,但我不知道我將如何實現像WordPress的東西。爲了傳遞帖子的ID,我需要有一個像www.example.com/my-first-blog/12/這樣的網址。有沒有辦法隱藏12或做我而不是搜索博客文章的URL名稱?

+0

這是不可能的,由於控制器必須解決通過GET發送的數據,您必須在項目的ID或名稱(或每次2個) – csotelo

回答

0

您可以使用網址區段進行帖子查找。 (這些my-first-post就像通常稱爲slu strings的字符串)。您必須預先生成這些文件並將它們與帖子一起保存。

您可以使用路由配置的$route['404_override']將每個不可路由的路徑指向控制器。一旦你的設置,你將不得不與相關博客文章的參數進行查詢,如果它的發現服務的帖子內容,如果沒有送出一個普通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 
     } 
    } 
} 
0

您可以使用URL段用於後期查詢。 (這些我的第一篇文章通常被稱爲slu strings)。您必須預先生成這些文件並將它們與帖子一起保存。

您可以使用路由配置的$ route ['404_override']將每個不可路由的路徑指向控制器。一旦你有了這個設置,你將不得不使用博客參數進行查詢,如果它發現服務的帖子內容,如果不發送一個普通的404。類似這樣的:讀這篇文章 http://www.obatkesehatanalami.com