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
Форумы портала PHP.SU :: Версия для печати :: Про ЧПУ и не только.. [4]
Форумы портала PHP.SU » Разное » Обсуждение статей » Про ЧПУ и не только..

Страниц (9): « 1 2 3 [4] 5 6 7 8 9 »
 

46. DeepVarvar - 15 Ноября, 2011 - 18:23:44 - перейти к сообщению
50
(Добавление)
Еще успеете.
47. Estenny - 15 Ноября, 2011 - 18:25:40 - перейти к сообщению
Фух, я нашел ошибку, почему у меня не получалось!

Тут получается, что первый параметр — это www, а второй — сам модуль! А я просто делал запрос на www!
48. sKaa - 15 Ноября, 2011 - 18:39:10 - перейти к сообщению
А я, что не доходчиво объяснял ?( Растерялся
49. Estenny - 15 Ноября, 2011 - 20:38:45 - перейти к сообщению
Не хочет переходить на ссылки вида site.ru/name/1 или просто site.ru/name/. В чем может быть проблема?
50. DeepVarvar - 15 Ноября, 2011 - 20:50:48 - перейти к сообщению
Ну что значит не хочет? вар дамп ему и смотреть что там не так.. и сразу: error_reporting(E_ALL);
Пусть будет.
51. Estenny - 15 Ноября, 2011 - 20:59:12 - перейти к сообщению
Ну просто он переходит на страницу, отображает информацию из БД, но не видит стилей, которые прописаны в name.php и скриптов! В дампе все нормально, как я и предполагал.
52. DeepVarvar - 15 Ноября, 2011 - 21:07:22 - перейти к сообщению
Estenny пишет:
не видит стилей
Хы, а вот теперь их все надо указывать всегда от корня сайта, так же как и ссылки: /styles/main.css
Картинки и js идут туда же.
53. Estenny - 15 Ноября, 2011 - 21:16:30 - перейти к сообщению
DeepVarvar, ага, все работает Улыбка .
Спасибо за помощь!
54. armancho7777777 - 04 Мая, 2012 - 11:01:46 - перейти к сообщению
Ну, во первых, убираем лишние слеши что по краям с помощью trim:
PHP:
скопировать код в буфер обмена
  1.  
  2. $query_params = explode("/",trim($query_string, '/'));
  3.  
  4. $rout = array(
  5.         'home' => 'home.php',
  6.          'reg' => 'reg.php',
  7.        'page2' => 'page2.php'
  8.        );
  9.  
  10. $content = '';
  11.  
  12. $page = (count($query_params) > 0) ? array_pop($query_params) : 'home';
  13.  
  14. if(isset($rout[$page]))
  15. {
  16.   ob_start();
  17.   include $rout[$page];
  18.   $content = ob_get_contents();
  19.   break;
  20. }
  21.  
  22.  


И выводим контент в нужном месте разметки.
На пример:
PHP:
скопировать код в буфер обмена
  1. <div id='content'><?=$content?></div>
55. Free_man - 01 Июня, 2012 - 17:19:39 - перейти к сообщению
Ни как не могу разобраться в концепции одной точки входа, и как ее реализовать.

Скажем у меня есть index.php.К нему я подключаю шаблон своего сайта.Шапка,футер,меню не меняются.Меняется контент в зависимости от выбранного пункта меню.В одном например будут статьи которые выводятся из базы списком и при выборе статьи открывается полная статья которая например должна иметь адрес http://sitename/articles/122 .В другом пункте меню картинки и т.д. и т.п.

Как это реализовать с помощью концепции описанной в этой теме?

Самое умное до чего доехал это switch(ЧПУ как я понял придется прописывать в ручную для каждой URL). В общем как то так:

Есть функция вывода меню из масива

PHP:
скопировать код в буфер обмена
  1.  
  2. /* Функция вызова меню */
  3.  
  4.     function mainMenu($menu)
  5.     {
  6.         echo '<ul id="menu">';
  7.  
  8.             foreach ($menu as $link=>$href)
  9.             {
  10.                 echo "<li><a href=\"$href\">", $link, '</a></li>';
  11.             }
  12.        
  13.         echo '</ul>';
  14.     }
  15.  


Далее в index.php есть шаблон в котором есть массив меню, его вывод и его роутер(switch)который расположен в части контента и подключает разный контент из файлов в зависимости от GET параметра:

PHP:
скопировать код в буфер обмена
  1.  
  2.  
  3. /* Массив и вызов меню */
  4.  
  5.     $menu = array(
  6.  
  7.                 "Главная"       => "index.php?id=home",
  8.                 "Страница1"     => "index.php?id=page1",
  9.                 "Страница2"     => "index.php?id=page2",
  10.                 "Страница3"     => "index.php?id=page3",
  11.                 "Страница4"     => "index.php?id=page4",
  12.                 "Страница5"     => "index.php?id=page5");
  13.                
  14.     mainMenu($menu);   
  15.  
  16. /* switch расположенный в части контента в шаблоне. N_ROOT - Физический путь до файла */
  17.  
  18. $id = isset($_GET['id']) ? strip_tags($_GET["id"]) : 'home';
  19.  
  20.         switch($id)
  21.         {
  22.             case "page1":
  23.                 include N_ROOT . '/mainlinks/page1.php'; break;
  24.                                        
  25.             case "page2":
  26.                 include N_ROOT . '/mainlinks/page2.php'; break;
  27.                                        
  28.             case "page3":
  29.                 include N_ROOT . '/mainlinks/page3.php'; break;
  30.                                        
  31.             case "page4":
  32.                 nclude N_ROOT . '/mainlinks/page4.php'; break;
  33.                                        
  34.             case "page5":
  35.                 include N_ROOT . '/mainlinks/page5.php'; break;
  36.                                                
  37.             case "home":
  38.             default:
  39.                 include N_ROOT . '/mainlinks/home.php';
  40.         }
  41.  
  42.  


Если у кого то есть нервы объяснить на пальцах.Буду очень признателен.
56. caballero - 01 Июня, 2012 - 18:10:21 - перейти к сообщению
а в чем проблемма собственно?
.htaccess перенаправляет все на index.php а тут берешь URI и разруливаешь обычным switch

хотя в данном куске кода можно просто

PHP:
скопировать код в буфер обмена
  1.     include N_ROOT . '/mainlinks/{$id}.php';
57. Free_man - 01 Июня, 2012 - 18:13:44 - перейти к сообщению
caballero пишет:
а в чем проблемма собственно?
.htaccess перенаправляет все на index.php а тут берешь URI и разруливаешь обычным switch


Проблема в том что хочу сделать как описал DeepVarvar а не через switch.Но не могу вникнуть в то что он написал.
То есть нужна одна точка входа.Шаблон отделенный от index и главное ЧПУ которые не придется прописывать каждую в htaccess.
58. DeepVarvar - 03 Июня, 2012 - 14:59:36 - перейти к сообщению
А у меня написано что перед инклюдой идет проверка на существование файла.
И если его нет - показать 404.
Никаких свитчей не надо - проверил, если файл есть - подключаем и он отработает.
Если нет - значит в урлу хрень вписали - покажем 404.
В чем проблема то?
(я написал о том же о чем caballero только другими словами)
59. boichukvd - 20 Сентября, 2012 - 23:22:06 - перейти к сообщению
Хотел бы связаться с автором данной заметки, возможность такая есть?
60. boichukvd - 21 Сентября, 2012 - 16:50:07 - перейти к сообщению
sKaa пишет:
site.ru/index.php?reg

Как сделать так чтобы выглядело site.ru/reg/
Можешь мне такое ответить плиз?

 

Powered by ExBB FM 1.0 RC1