дружественный URL в codeigniter с переменными в URL - PullRequest
0 голосов
/ 08 мая 2011

Я создаю сайт с использованием Codeigniter, и мой URL для конкретной страницы продукта выглядит как http://www.domain.com/products/display/$category_id/$product_id/$offset

$ offset, используется для ограничения количества страниц, отображаемых на странице при использовании библиотеки разбивки на страницы Codeigniter.

Как я хочу сделать так, чтобы мой URL был более дружественным для человека, например http://www.domain.com/$category_name/$product_name/$offset т.е.http://www.domain.com/weapons/proton-canon/3

Кто-нибудь может указать мне общий подход?Я только начал изучать codeigniter и работаю над своим первым проектом

1 Ответ

2 голосов
/ 09 мая 2011

Вы можете использовать так называемый URL-слаг для достижения этого.

Добавьте в свою таблицу новое поле, называемое "url_slug" или подобное.Теперь вам нужно будет создать слаг для каждого продукта и сохранить его в этом поле.

CI имеет функцию в помощнике URL - url_title($string), которая будет принимать строку и преобразовывать ее для использования в URL.,

Например, My product name станет my_product_name.

Теперь, в вашем методе, вы можете либо - сохранить product_id в неизменном виде, использовать его в качестве параметра для вашего метода для отображения конкретных продуктов и использовать слаг для дружественных для человека ссылок, либо вы можете просто использоватьurl_slug для обозначения продуктов.

Ваш URL может выглядеть следующим образом:

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

или может выглядеть как

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

без идентификатора.выбор за вами, но url_slug может измениться - идентификатор не будет.Что может иметь последствия для SEO.

Независимо от этого ваш метод должен выглядеть примерно так:

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

Затем вы можете использовать URL-адреса, как указано выше.

используйте также URI-маршрутизацию, так как в приведенном выше примере будет предпринята попытка найти контроллер с именем $category_name и метод с именем my_cool_product, который, конечно, не будет существовать.информация .

...