Как использовать имя категории, а не идентификатор категории в моем URL? - PullRequest
0 голосов
/ 29 мая 2011

Я использую платформу CodeIgniter и не могу понять, как заставить мои URL отображать имя категории, но все же мои запросы ссылаются на идентификатор категории.

У меня настроен контроллер, называемый заданиями. Структура URL-адреса: "example.com/jobs/listings/category_id" example: "example.com/jobs/listings/3", где 3 будет идентификатором категории для "software".

Я бы предпочел, чтобы URL сказал "example.com/jobs/listings/category_name" example: "example.com/jobs/listings/software".

Проблема, с которой я сталкиваюсь, заключается в том, что в таблице «jobs» хранится идентификатор category_id, к которому принадлежит задание, а не имя категории. У меня есть отдельная таблица, которая содержит только идентификаторы категорий и их имена. Я не уверен, как А.) Напишите мой запрос и Б.) Создайте дружественную для SEO структуру URL.

Мой текущий запрос выглядит примерно так: "SELECT * FROM jobs WHERE cat_id = 3;

Кроме того, я не уверен, должен ли я использовать mod_rewrite в файле .htaccess или я должен использовать файл rout.php в CodeIgniter.

Любая помощь будет принята с благодарностью!

-Спасибо

Ответы [ 2 ]

3 голосов
/ 29 мая 2011

Просто присоединитесь к другой таблице.

SELECT * FROM jobs JOIN categories ON jobs.cat_id = categories.id WHERE categories.name = ?;

Убедитесь, что на название категории добавлен уникальный ключ, если у вас его еще нет.

mod_rewrite isплохое решение для маршрутизации приложений и не очень поможет здесь в любом случае.Придерживайтесь того, что предоставляет ваша структура.

1 голос
/ 29 мая 2011

Посмотрите здесь http://codeigniter.com/user_guide/helpers/url_helper.html на URL_title ()

Преобразуйте название вашей категории с помощью функции url_title (), убедившись, что у вас нет дубликатов.

Когда URL-адресВызовите свою категорию из своей модели с помощью простого оператора where

Например,

$this->db->from('categories');
$this->db->where('name', $url);
Etc...

Используйте это для загрузки заголовков страниц и т. д., а затем используйте возвращенный categoryid для поиска ваших рабочих мест.таблица.

...