开发者

friendly url in codeigniter with variables in url

I'm making a site using Codeigniter and my URL for a particular product page is like http://www.domain.com/products/display/$category_id/$product_id/$offset

$offset is used for limiting the number of pages shown per page when using the Codeigniter's Pagination library.

How I want to make it such that my URL is something more human friendly, like http://www.domain.com/$category_name/$product_name/$offset ie. http://www.domain.com/weapons/proton-canon/3

C开发者_C百科an anyone point me the general approach? I just started learning codeigniter and is working on my first project


You can use what's generally known as a URL slug to achieve this.

Add a new field to your table, called "url_slug" or similar. Now you will need to create a slug for each product, and store it in this field.

CI has a function in the URL helper - url_title($string) which will take a string, and convert it for use in URL's.

For example My product name would become my_product_name.

Now, in your method, you can either - keep the product_id intact, use this as a parameter for your method to show specific products, and use the slug for human friendly links, or you can just use the url_slug to refer to products.

Your URL may look like:

www.domain.com/$category_name/$product_id/my_cool_product/$offset

or it could look like

www.domain.com/$category_name/my_cool_product/$offset

with no ID. the choice is yours, but the url_slug may change - the ID won't. Which may have SEO impacts.

Regardless, your method needs to look something like:

function display_product($product_id, $url_slug, $offset) {
   // do what you gotta do...
}

You can then use URL's like the above.

You will need to use URI routing as well, as the example above will attempt to look for a controller called $category_name and a method called my_cool_product, which will of course not exist.

See URI Routing for further info.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜