Проблема с текстом в шаблонной машине - PullRequest
1 голос
/ 29 мая 2011

У меня есть этот код:

class template
{
    public $template,$prefix,$replace;
    function __construct($template, $prefix)
    {
        $this->prefix = $prefix;
        $this->template = $template;
    }
    public function SetValue($name, $replace)
    {
        $this->replace["#".$name."#"] = $replace;
    }
    public function Tempclude($found) 
    { 
        $file = "styles/main/".$found[1].'.html';

        if(!file_exists($file))     
            exit("the template '" . $found[1] . "' wasn't found."); 
        return file_get_contents($file); 
    }
    public function finish($stream = "normal")
    {
        if($stream == "folder")
            $code = file_get_contents("../styles/main/".$this->template.".html");
        else 
            $code = file_get_contents("styles/main/".$this->template.".html");

        $code = preg_replace_callback("@<pb:include=\"(.*)\">@iuU", array($this, 'Tempclude'), $code);

        if(is_array($this->replace))
            $code = str_replace(array_keys($this->replace), $this->replace, $code);

        $code = str_replace("\r\n", "", $code);
        $code = str_replace("   ", "", $code);
        echo $code;
    }
}

Если я наберу в шаблоне какой-нибудь простой текст, страница станет белой без чего-либо внутри.

В чем проблема?

Ответы [ 2 ]

0 голосов
/ 10 июня 2011
  1. Я обнаружил, что константа без кавычек показывает предупреждение (зависит от конфигурации php, работает WAMP)

  2. В отредактированном коде, в котором возникли проблемы только с ошибкамипроцитируйте две константы в начале, это должно работать хорошо, протестируйте это следующим образом:

    $ template = new template ("index", "");
    $ template-> SetValue ("note","note:");
    $ template-> finish ();

  3. структура папок: должны быть предоставлены styles / main.Эти файлы должны быть найдены внутри main: index.html, footer.html, header.html должны быть защищены

Когда все в порядке, пожалуйста, попробуйте удалить любые ненужные комментарии или ответы.Спасибо!

0 голосов
/ 30 мая 2011

это не проблема.Попробуйте сделать это:

$template = new template("index", ""); 

$template->SetValue("notice", "notice:"); 

$template->finish(); 

и index.html:

<pb:include="header"> 
    hhh 
    #Slider# 
<pb:include="footer"> 

его работа.если вы измените index.html на:

<pb:include="header"> 
    <div id="hh"> 
        hhh 
    </div> 
    #Slider# 

, он вернет белый список с чем-то внутри.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...