Quiero desarrollar un sitio web en el marco de codeigniter en el que pueda acceder a cualquier página web a través de slug.
Por ejemplo, al igual que WordPress y Magento, podemos acceder a la página de categoría mediante www.sitename.com/category_type/category_detailpage
y también podemos acceder a ese Category_detail directamente simplemente agregando su slug después del URI principal www.sitename.com/category_detailpage.
Entonces, mi pregunta es cómo tengo que diseñar el esquema de la tabla de slug en la base de datos si tiene algún código de proyecto de estudio de caso para este directorio de slug en Codeigniter, hágamelo saber lo antes posible.
¡Gracias de antemano!
¿Cómo usar la babosa?
Lo explicaré con un ejemplo:
URL – http://www.example.com/products/apple-iphone-5S-16GB-brand-new/
1) Suponiendo que tiene una página de producto y, por supuesto, la página de producto necesita algunos datos de la URL para comprender qué producto mostrar.
2) Antes de consultar nuestra base de datos utilizando la identificación que obtenemos de la URL. Pero ahora haremos lo mismo (consultar nuestra base de datos) simplemente reemplazando id con slug y ¡eso es todo!
3) Por lo tanto, agregue una columna adicional en su base de datos llamada slug. A continuación se mostrará la estructura de la base de datos de productos actualizada (solo un ejemplo).
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
...
...
También he respondido en slug antes. Comprueba si te ayuda.
Cómo eliminar parámetros de url codeigniter
Editar:
Para esto, debe hacer los siguientes cambios:
1) Crear debajo de 2 tablas
slug_table:
id (PK) | slug | category_id (FK)
category_table:
id (PK) | title | thumbnail | description
2) config/rutas.php
$route['/(:any)'] = "category/index/$1";
3) modelos/category_model.php (crear nuevo archivo)
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) controladores/categoría.php (crear nuevo archivo)
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) vistas/category_detail.php (crear nuevo archivo)
<label>Category title: <?php echo $category->title; ?></label><br>
</label>Category description: <?php echo $category->description; ?></label>