Codeigniter – Estructura de URL compatible con SEO (Implementación de Slug)

3 minutos de lectura

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!

Codeigniter Estructura de URL compatible con SEO Implementacion de
Parag Tyagi

¿Cómo usar la babosa?

Lo explicaré con un ejemplo:
URLhttp://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>

  • No quiero hacer esto, quiero administrar todas las páginas web de slug en 1 tabla, al igual que wordpress y magento framework, y luego acceder a cualquiera de las páginas web a través de slug, solo que no quiero que se muestre ningún controlador ni nombre de método en la URL. Entonces, ¿cómo lo manejaré?

    – Soná

    12 de septiembre de 2014 a las 6:55

  • ¿Puedo obtener en lugar de /products/ como título de categoría… (p. ej., www.examples.com/foods/sweet-apple.html)… por favor muéstreme…

    – Ye HtunZ

    17 de agosto de 2015 a las 10:05


¿Ha sido útil esta solución?

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Configurar y más información
Privacidad