2014-09-12 2 views
3


Я хочу создать веб-сайт в рамках codeigniter, в котором я могу получить доступ к любой веб-странице через slug.

Например так же, как WordPress и Magento мы можем получить доступ к странице категории по www.sitename.com/category_type/category_detailpage

, а также мы можем получить доступ, что Category_detail непосредственно, просто добавив его слизняка после основного URI www.sitename.com/category_detailpage ,

Итак, мой вопрос заключается в том, как мне нужно составлять схему таблицы slug в базе данных, если у вас есть какой-либо примерный код проекта для этого каталога Slug в Codeigniter, чем, пожалуйста, сообщите мне как можно скорее.

Спасибо заранее!Codeigniter - SEO Friendly URL-структура (реализация слизи)

ответ

9

Как использовать слизню?

Поясню на примере:
URL - http://www.example.com/products/apple-iphone-5S-16GB-brand-new/

1) Предполагая, что вы имеете страницу продукта и конечно странице продукта требуются некоторые данные из URL, чтобы понять, какой продукт для отображения.
2) Прежде чем мы обратились к нашей базе данных, используя идентификатор, который мы получаем из URL. Но теперь мы сделаем то же самое (обращаясь к нашей базе данных), просто заменив id на slug, и вот оно!
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 
... 
... 


Я также ответил на слизняка раньше. Проверьте, помогает ли это.
How to remove params from url codeigniter


Edit:

Для этого вам нужно сделать ниже изменения -

1) Создание ниже 2 таблицы

slug_table: 

id (PK) | slug | category_id (FK) 


category_table: 

id (PK) | title | thumbnail | description 


2) конфигурации/routes.php

$route['/(:any)'] = "category/index/$1"; 


3) модели/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) Контроллеры/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) просмотры/категории _detail.PHP (создать новый файл)

<label>Category title: <?php echo $category->title; ?></label><br> 
</label>Category description: <?php echo $category->description; ?></label> 
+0

я не хочу, чтобы сделать, как это я хочу, чтобы управлять всеми веб-страниц тихоход в 1 таблице так же, как WordPress и Magento рамочным управления и затем получить доступ к любой из веб-страницы с помощью слизняк только я не хочу любой имя контроллера и метода, отображаемое в URL-адресе. так как я это сделаю? – Sona

+0

Вы имеете в виду прямо http://www.domainname.com/your-slug-here? –

+0

Да .. точно .. – Sona