удобный URL в codeigniter с переменными в url

#codeigniter #friendly-url

#codeigniter #удобный-url

Вопрос:

Я создаю сайт с использованием 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 ie. http://www.domain.com/weapons/proton-canon/3

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

Ответ №1:

Для достижения этой цели вы можете использовать то, что обычно известно как URL slug.

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

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

Например, My product name стало бы my_product_name .

Теперь, в вашем методе, вы можете либо — сохранить product_id нетронутым, использовать это в качестве параметра для вашего метода, чтобы показывать конкретные продукты, и использовать slug для ссылок, удобных для пользователя, либо вы можете просто использовать 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 , которые, конечно же, не будут существовать.

Смотрите Маршрутизацию URI для получения дополнительной информации.