Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: ЧПУ и с чем его едят

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: наставьте на путь истинный
Garda1
Отправлено: 09 Апреля, 2011 - 11:18:58
Post Id


Новичок


Покинул форум
Сообщений всего: 54
Дата рег-ции: Нояб. 2010  


Помог: 0 раз(а)




Структура сайта:

+ Главная
|
+ uslugi
| |
| + predpriyatiyam
| | |
| | + sharash
| | + montaj
| |
| + pokupatelyam
| | |
| | + sharash1 //Чтобы были имена уникальными
| | + montaj1 //добавляются цифры
| | + novosti_pokupatelyam
| | |
| | + 55
| | + 57
| + novosti_uslug
| |
| + 56
| + 59

C помощью .htaccess получаем ЧПУ-шный адрес, к примеру:

PHP:
скопировать код в буфер обмена
  1. $_GET['route'] = 'uslugi/predpriyatiyam/montaj';


и вопрос: "Как дальше с ним работать?"

мои действия в последствии оказались не совершенными, а точнее с самого начала бредовыми.
PHP:
скопировать код в буфер обмена
  1.  
  2. $switcher = explode('/',rtrim($_GET['route'],'/'));
  3. $content = parent::get_content(array_pop($switcher));
  4. if($content==false) $HTML = '404 ошибка';


C выводом обычных текстовых разделов(uslugi,predpriyatiyam,sharash,montaj) проблем не было.
Но теперь добавились 'одноуровневые' новости, как дать понять скрипту, что это ID новости?
А дальше ещё интереснее будет, поскольку будет интернет-магазин с неограниченным количеством уровней, типа
mysyte.ru/eshop/546/45/64/89/

Пожалуйста, научите пользоваться ЧПУ.

(Отредактировано автором: 09 Апреля, 2011 - 11:19:30)

 
 Top
Garda1
Отправлено: 10 Апреля, 2011 - 12:33:12
Post Id


Новичок


Покинул форум
Сообщений всего: 54
Дата рег-ции: Нояб. 2010  


Помог: 0 раз(а)




Я может совсем что-то глупое спрашиваю или в корне неверное?
Народ, помогите осмыслить как пользоваться ЧПУ, Пожалуйста.
Или хотя бы расскажите, как оно у вас работает...
 
 Top
zypikov
Отправлено: 10 Апреля, 2011 - 15:11:38
Post Id



Частый гость


Покинул форум
Сообщений всего: 219
Дата рег-ции: Нояб. 2010  


Помог: 3 раз(а)




Цитата:
как пользоваться ЧПУ

Это что такое?


-----
У всего есть обратная сторона.
 
 Top
Garda1
Отправлено: 10 Апреля, 2011 - 15:22:18
Post Id


Новичок


Покинул форум
Сообщений всего: 54
Дата рег-ции: Нояб. 2010  


Помог: 0 раз(а)




zypikov пишет:
Цитата:
как пользоваться ЧПУ

Это что такое?


ЧПУ (англ. Friendly URL) — веб-адреса, удобные для восприятия человеком (а также систем и методов построения таких адресов). Является аббревиатурой от словосочетания «человекопонятный урл» (где «урл» — жаргонное обозначение URL).
 
 Top
vanicon
Отправлено: 10 Апреля, 2011 - 22:23:14
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 808
Дата рег-ции: Янв. 2010  
Откуда: Самара


Помог: 17 раз(а)




ЧПУ делается с помощью модуля apace mod_rewrite, поищите в гугле насчет этого там много информации или на форуме, к примеру здесь описанны некоторые примеры для преобразование ссылок http://forum.php.su/topic.php?fo...1&topic=5869


-----
Так было, так есть и так будет
 
 Top
Саныч Модератор
Отправлено: 10 Апреля, 2011 - 22:36:34
Post Id



Участник


Покинул форум
Сообщений всего: 1365
Дата рег-ции: Июль 2010  
Откуда: Украина, Запорожье


Помог: 62 раз(а)




ищите по запросам ЧПУ, mod_rewrite и regexp изучайте и все станет ясно, тема вобщем-то не сложная...


-----
Все возражают против того, что я гений, хотя никто еще так меня не назвал. - Орсон Уэллс
 
 Top
Haron
Отправлено: 10 Апреля, 2011 - 22:45:54
Post Id



Частый гость


Покинул форум
Сообщений всего: 197
Дата рег-ции: Июнь 2010  
Откуда: Оттуда


Помог: 5 раз(а)




Цитата:
C выводом обычных текстовых разделов(uslugi,predpriyatiyam,sharash,montaj) проблем не было.
Но теперь добавились 'одноуровневые' новости, как дать понять скрипту, что это ID новости?
А дальше ещё интереснее будет, поскольку будет интернет-магазин с неограниченным количеством уровней, типа
mysyte.ru/eshop/546/45/64/89/


Я эту проблему решил так:

Роутер подключает контроллеры по первому сегменту ссылки (У вас в данном случае это eshop). А затем контроллер разбирает оставшуюся часть (/546/45/64/89/). Идея здесь в том, что неограниченное количество уровней - должно быть только там, где это необходимо.


-----
И чё?
 
 Top
Garda1
Отправлено: 11 Апреля, 2011 - 01:00:15
Post Id


Новичок


Покинул форум
Сообщений всего: 54
Дата рег-ции: Нояб. 2010  


Помог: 0 раз(а)




vanicon,Саныч mod_rewrite используется здесь
Garda1 пишет:
C помощью .htaccess получаем ЧПУ-шный адрес, к примеру:
PHP:
скопировать код в буфер обмена
  1. $_GET['route'] = 'uslugi/predpriyatiyam/montaj';

и вопрос: "Как дальше с ним работать?"


Haron пишет:
Я эту проблему решил так:

Роутер подключает контроллеры по первому сегменту ссылки (У вас в данном случае это eshop). А затем контроллер разбирает оставшуюся часть (/546/45/64/89/). Идея здесь в том, что неограниченное количество уровней - должно быть только там, где это необходимо.

Да, я тоже так предполагал сделать, но закасчег сегодня там(на определённом уровне) модуль подключил, а завтра уже в другом, а то и имена ссылок поменяет не eshop например, а magazin. То есть, если делать по такой логике, то скрипт получится не очень гибким.
 
 Top
Haron
Отправлено: 11 Апреля, 2011 - 02:03:48
Post Id



Частый гость


Покинул форум
Сообщений всего: 197
Дата рег-ции: Июнь 2010  
Откуда: Оттуда


Помог: 5 раз(а)




Прозрачную замену или даже, альтернативный вызов eshop либо magazine, либо даже магазин - сделать не проблема.

Например вот так:

PHP:
скопировать код в буфер обмена
  1. // Массив для роутера
  2. $routes['shop'][1] = 'magazine';
  3. $routes['shop'][2] = 'eshop';
  4. $routes['shop'][2] = 'магазин';
  5.  
  6. // Поиск индекса в массиве
  7. function search_route($value, $route_array)
  8. {
  9.         foreach ($route_array as $key => $item)
  10.         {
  11.                 if (array_search($value, $item))
  12.                 {
  13.                         return $key;
  14.                 }
  15.         }
  16. }
  17.  
  18. // Возвращаем имя подключаемого контроллера
  19. $switcher = explode('/',rtrim($_GET['route'],'/'));
  20. $first_level = $switcher[0]
  21. $controller = search_route($first_level, $routes)
  22. // Название контроллера ('shop') получили, ну и дальше знаете что с ним делать.

(Отредактировано автором: 11 Апреля, 2011 - 02:04:38)



-----
И чё?
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB