За последние 24 часа нас посетили 115248 программистов и 3034 робота. Сейчас ищут 1635 программистов ...

Шаблоны

Тема в разделе "PHP для новичков", создана пользователем Alex_1984, 10 дек 2014.

  1. Alex_1984

    Alex_1984 Новичок

    С нами с:
    10 дек 2014
    Сообщения:
    133
    Симпатии:
    0
    подскажите в чем может быть проблема.

    есть файл index.php
    Код (Text):
    1.  
    2. <?php
    3. /**
    4.  * Created by PhpStorm.
    5.  * User: VasilyevAB
    6.  * Date: 10.12.2014
    7.  * Time: 11:11
    8.  */
    9.  
    10. include "/lib/config_class.php";
    11.  
    12. header('Content-type: text/html; charset: utf-8');
    13. $tmp = file_get_contents(Config::TPL_PATH."/index.tpl");
    14. $title = Config::TITLE;
    15. $stile = Config::STYLE_PATH;
    16.  
    17. #$header = file_get_contents(Config::TPL_PATH."/header.tpl");
    18.  
    19. $header = '<header>
    20.     <div class="header">
    21.          <div class="search">
    22.  
    23.          </div>
    24.     </div>
    25. </header>';
    26.  
    27. $tmp = mb_ereg_replace("%header%", $header, $tmp);
    28.  
    29.  
    30. $tmp = mb_ereg_replace("%title%", $title, $tmp);
    31. $tmp = mb_ereg_replace("%style_path%", $stile, $tmp);
    32.  
    33.  
    34. echo $tmp;
    в таком виде все отображается нормально, но если загружать этот фрагмент
    Код (Text):
    1.  
    2. $header = '<header>
    3.     <div class="header">
    4.          <div class="search">
    5.  
    6.          </div>
    7.     </div>
    8. </header>';
    из шаблона (
    Код (Text):
    1. $header = file_get_contents(Config::TPL_PATH."/header.tpl");
    )
    то в html перед тегом <header> появляются 2 двойные кавычки
     
  2. Ganzal

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

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    это пхп код присваивающий переменной текстовое значение.
    это чтение содержимого файла. побайтово. в этой переменной $header по идее лежит текст из листинга выше. если вы хотите объявление переменной то шаблон должен быть не .tpl а .php и подключаться через include а не file_get_contents. если вы хотите в шаблоне оставить только "чистый" html - уберите php-инструкции из своего .tpl. и повысьте уровень отладки и включите вывод ошибок на экран - двойные кавычки могут неожиданно на что-то намекать.
     
  3. Alex_1984

    Alex_1984 Новичок

    С нами с:
    10 дек 2014
    Сообщения:
    133
    Симпатии:
    0
    проблема решилась
    Код (Text):
    1.  
    2. ini_set('display_errors',1);
    3. error_reporting(E_ALL);
    4.  
    5. date_default_timezone_set("Europe/Moscow");
    6.  
    7. include "/lib/config_class.php";
    8.  
    9. header('Content-type: text/html; charset: utf-8');
    10. $tmp = file_get_contents(Config::TPL_PATH."/index.tpl");
    11. $title = Config::TITLE;
    12. $stile = Config::STYLE_PATH;
    13.  
    14.  
    15. $a = '1';
    16. $b = '2';
    17.  
    18. $tmp1 = $header = file_get_contents(Config::TPL_PATH."/header1.tpl");
    19. #$tmp1 = str_replace('<', $a, $tmp1);
    20. #$tmp1 = str_replace(">", $b, $tmp1);
    21.  
    22.  
    23. $header = file_get_contents(Config::TPL_PATH."/header1.tpl");
    $header = stristr($header, "<");
    Код (Text):
    1.  
    2. $tmp = str_replace("%header%", $header, $tmp);
    3.  
    4. $tmp = str_replace("%title%", $title, $tmp);
    5. $tmp = str_replace("%style_path%", $stile, $tmp);
    6.  
    7. echo $tmp;