За последние 24 часа нас посетили 34230 программистов и 1693 робота. Сейчас ищут 667 программистов ...

link в шаблоне не работает

Тема в разделе "PHP для новичков", создана пользователем Elect, 15 авг 2015.

  1. Elect

    Elect Новичок

    С нами с:
    4 авг 2015
    Сообщения:
    70
    Симпатии:
    0
    В общем делаю подобие шаблонизатора
    У меня есть роутинг и мне кажется,что он считает путь к стилям в link за page
    роутинг:
    Код (PHP):
    1. function router(){
    2.     if ($_SERVER['REQUEST_URI'] == "/") {
    3.         $module = 'do';
    4.         $page = 'index';
    5.     } else {
    6.         $URL_Path = parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH);
    7.         $URL_Parts = explode('/', trim($URL_Path, ' /'));
    8.         $module = array_shift($URL_Parts);
    9.         $page = array_shift($URL_Parts);
    10.  
    11.         if (!empty($module)) {
    12.             $param = array();
    13.             for ($i = 0; $i < count($URL_Parts); $i++) {
    14.             $param[$URL_Parts[$i]] = $URL_Parts[++$i];
    15.             }
    16.         }
    17.     }
    18.     
    19.     define('MODULE',$module);
    20.     define('PAGE',$page);
    21.     
    22.     if(MODULE == "do"){
    23.         $option = ROOT.'location/'.PAGE.'.class.php';
    24.         if(!empty($page)){
    25.             require_once $option;
    26.             $view = new $page;
    27.             $view = $view->getBody();
    28.             echo $view;
    29.         }else{
    30.             echo "home page";
    31.         }
    32.     }
    33.     elseif(MODULE == "admin"){
    34.         echo "admin";
    35.     }
    36.     elseif(MODULE == "404"){
    37.         echo "404";
    38.     }
    39.     else{
    40.         echo "page";
    41.     }
    42. }
     
  2. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.598
    Симпатии:
    1.764
    А вы от корня сайта пути к стилям указываете?
     
  3. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
  4. Elect

    Elect Новичок

    С нами с:
    4 авг 2015
    Сообщения:
    70
    Симпатии:
    0
    Конечно,я в код вью вс проверил,путь верный.

    Добавлено спустя 2 минуты 23 секунды:
    Не,не угадал,путь у меня указывается в файловой системе.
    D:\home\r.ru\www/templates/Default/style.css
     
  5. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.598
    Симпатии:
    1.764
    Чего-чего? Какой файловой системы, вы что? от корня сайта должен быть. Вы же свою файловую систему на хостинг не потащите. И если в файловой системе, то протокол должен быть file://.

    Добавлено спустя 45 секунд:
    Так что покурите ещё раз ссылку от denis01 хорошенько
     
  6. Elect

    Elect Новичок

    С нами с:
    4 авг 2015
    Сообщения:
    70
    Симпатии:
    0
    Ну у меня тут такая штука
    Код (Text):
    1.  
    2. define('ROOT', dirname(__FILE__) . '/');
    3. }
    4.     function getRoot(){
    5.     return 'templates/'.TMP_NAME.'/';
    6. }
    7. private function ReplaceStringRoot($tmp_content){
    8.     return str_replace("{root}",ROOT.$this->getRoot(), $tmp_content);
    9. }
    10. <link rel="stylesheet" href="{root}style.css" />
    Так что и на хостинге всё норм будет.
    А вот есть от корня сайта провожу,тогда он мне выводит page
    Как я и говорил,он похоже его за page считает,что же с этим делать?

    Добавлено спустя 28 минут 12 секунд:
    Ошибка исправлена.Проблема была в роутере.
    Добавил руль:
    Код (Text):
    1. RewriteEngine on
    2. RewriteBase /
    3. Options All -Indexes
    4. RewriteCond %{REQUEST_FILENAME} -s [OR]
    5. RewriteCond %{REQUEST_FILENAME} -l [OR]
    6. RewriteCond %{REQUEST_FILENAME} -d
    7. RewriteRule ^resource/(.*)$ resource/$1 [L]
    8. RewriteRule ^templates/(.*)/(.*)$ templates/$1/$2 [L]
    9. RewriteRule ^.*$ [NC,L]
    10. RewriteRule ^.*$ index.php [NC,L]
     
  7. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    А вторая часть про домен.
     
  8. Elect

    Elect Новичок

    С нами с:
    4 авг 2015
    Сообщения:
    70
    Симпатии:
    0
    В общем есть от части рабочий роутинг:
    Код (PHP):
    1. function router(){
    2.     if ($_SERVER['REQUEST_URI'] == "/") {
    3.         $module = 'do';
    4.         $page = 'index';
    5.     } else {
    6.         $URL_Path = parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH);
    7.         $URL_Parts = explode('/', trim($URL_Path, ' /'));
    8.         $module = array_shift($URL_Parts);
    9.         $page = array_shift($URL_Parts);
    10.  
    11.         if (!empty($module)) {
    12.             $param = array();
    13.             for ($i = 0; $i < count($URL_Parts); $i++) {
    14.             $param[$URL_Parts[$i]] = $URL_Parts[++$i];
    15.             }
    16.         }
    17.     }
    18.     
    19.     define('MODULE',$module);
    20.     define('PAGE',$page);
    21.     
    22.     if(MODULE == "do"){
    23.         $option = ROOT.'location/'.PAGE.'.class.php';
    24.         if(!empty($page)){
    25.             require_once $option;
    26.             $view = new $page;
    27.             $view = $view->getBody();
    28.             echo $view;
    29.         }else{
    30.             echo "home page";
    31.         }
    32.     }
    33.     elseif(MODULE == "admin"){
    34.         echo "admin";
    35.     }
    36.     elseif(MODULE == "404"){
    37.         echo "404";
    38.     }
    39.     elseif(MODULE == ""){
    40.         echo "page";
    41.     }else{
    42.     }
    43. }
    44.  
    Но так же есть шаблонизатор,в котором не работает link css файла из-за перевода на index.php
    Код (Text):
    1. RewriteEngine on
    2. RewriteBase /
    3. Options All -Indexes
    4. RewriteCond %{REQUEST_FILENAME} -s [OR]
    5. RewriteCond %{REQUEST_FILENAME} -l [OR]
    6. RewriteCond %{REQUEST_FILENAME} -d
    7. RewriteRule ^resource/(.*)$ resource/$1 [L]
    8. RewriteRule ^templates/(.*)/style.css$ templates/$1/style.css [L]
    9. RewriteRule ^.*$ [NC,L]
    10. RewriteRule ^.*$ index.php [NC,L]
    Пробовал дописать руль
    Код (Text):
    1. RewriteRule ^templates/(.*)/(.*)$ templates/$1/$2 [L]
    Но тогда все подобно нужные пути превращаются в путь к стилям.
    Подскажите что делать...
     
  9. Elect

    Elect Новичок

    С нами с:
    4 авг 2015
    Сообщения:
    70
    Симпатии:
    0
    В общем есть подобный роутинг
    Код (PHP):
    1. function router(){
    2.     if ($_SERVER['REQUEST_URI'] == "/") {
    3.         $module = 'do';
    4.         $page = 'index';
    5.     } else {
    6.         $URL_Path = parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH);
    7.         $URL_Parts = explode('/', trim($URL_Path, ' /'));
    8.         $module = array_shift($URL_Parts);
    9.         $page = array_shift($URL_Parts);
    10.  
    11.         if (!empty($module)) {
    12.             $param = array();
    13.             for ($i = 0; $i < count($URL_Parts); $i++) {
    14.             $param[$URL_Parts[$i]] = $URL_Parts[++$i];
    15.             }
    16.         }
    17.     }
    18.     
    19.     define('MODULE',$module);
    20.     define('PAGE',$page);
    21.     
    22.     if(MODULE == "do"){
    23.         $option = ROOT.'location/'.PAGE.'.class.php';
    24.         if(!empty($page)){
    25.             require_once $option;
    26.             $view = new $page;
    27.             $view = $view->getBody();
    28.             echo $view;
    29.         }else{
    30.             echo "home page";
    31.         }
    32.     }
    33.     elseif(MODULE == "admin"){
    34.         echo "admin";
    35.     }
    36.     elseif(MODULE == "404"){
    37.         echo "404";
    38.     }
    39.     elseif(MODULE == ""){
    40.         echo "page";
    41.     }else{
    42.     }
    43. } 
    И с ним не работают ссылки в шаблонизаторе,по скольку всё переводит в index.php
    Пробовал дрбавить руль
    Код (Text):
    1. RewriteRule ^templates/(.*)/(.*)$ templates/$1/$2 [L]
    Но тогда все ссылки в шаблоне заменяются на путь к стилям.
    В общем я не знаю что делать.
    Помогите пожалуйста