Codeigniter - SEO url structure of urls (slugs implementation)


I want to create a website within a codeigniter where I can access any webpage via a slug. For example, just like WordPress and Magento, we can access the category page at www.sitename.com/category_type/category_detailpage

and also we can access this Category_detail directly by simply adding our pool after the main URI www.sitename. com / category_detailpage.

So my question is if I need to develop a slug table schema in the database if you have any example project code for this Slug directory in Codeigniter than please let me know as soon as possible. Thanks in Advance!

+3


source to share


1 answer


How do I use slug?

Explain with an example:
URL - http://www.example.com/products/apple-iphone-5S-16GB-brand-new/

1) Assuming you have a product page and on a weekend product page, you need some data from the url to figure out which product to display.
2) Before we queried our database using the id we get from the url. But now we will do the same (referring to our database) by simply replacing the id with slug, and thats it!
3) So adding an extra column to your database called slug. Below is your updated product database structure (just an example).

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
...
...

      


I've also answered slug earlier. Check if it helps. How to remove parameters from urlignign


Edit:

For this, you need to do below changes -

1) Create below 2 tables

slug_table:

id (PK)   |    slug    |   category_id (FK)


category_table:

id (PK)   |  title  |  thumbnail  |  description

      




2) config / routes.php

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

      


3) models / category_model.php (create a new file)

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) controllers /category.php (create a new file)

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) views / category_detail.php (create a new file)

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

      

+10


source







All Articles