понедельник, 1 мая 2017 г.

Простое шаблонирование

Создадим страницу template1.php с шаблоном html-кода.


<!DOCTYPE HTML>
<!-- ВИД -->
<html lang="en-US">
<head>
<meta charset="UTF-8">
<title><?php echo $page_title; ?></title>
</head>
<body>
<h1><?php echo $page_title; ?></h1>
<p><?php echo $content; ?></p>
</body>

</html>

Создадим файл template_variable.php. По сути это будет страница-контролер.
<?php
// контроллер
$page_title = "Template Test";
$content = "This is a test of templating using variables.";

include('template1.php');

?>

Второй способ делать шаблоны - с помощью поиска и замены. В этом способе мы теряем доступ ко многим методам PHP. Подойдет для простого шаблонирования.

Создадим файл  template_replace.php
<?php
// функция выполняет поиск и замену
// $filename - имя файла, которое нужно загрузить и
// $assigned_vars - массив, присваемых переменных, которые нужно искать и заменять

function display_template($filename, $assigned_vars) {
if(file_exists($filename)) {
$output = file_get_contents($filename); // file_get_contents — Читает содержимое файла в строку
foreach($assigned_vars as $key => $value) {
$output = preg_replace('/{'.$key.'}/', $value, $output);
}
echo $output;
} else {
echo "*** Missing template error ***";
}
}

$template = "template2.php";
$assigned_vars = array('page_title' => "Template test", 'content' => "This is a test of templating using variables.");

display_template($template, $assigned_vars);

?>

Создадим файл template2.php Здесь не будет кода PHP
<!DOCTYPE HTML>
<!-- ВИД -->
<html lang="en-US">
<head>
<meta charset="UTF-8">
<title>{page_title}</title>
</head>
<body>
<h1>{page_title}</h1>
<p>{content}</p>
</body>

</html>

Сделаем объектно-ориентированную версию.
<?php
class Template {

public $filename;
public $assigned_vars = array();

public function set($key, $value) {
$this->assigned_vars[$key] = $value;
}

public function display() {
if(file_exists($this->filename)) {
$output = file_get_contents($this->filename); // file_get_contents — Читает содержимое файла в строку
foreach($this->assigned_vars as $key => $value) {
$output = preg_replace('/{'.$key.'}/', $value, $output);
}
echo $output;
} else {
echo "*** Missing template error ***";
}
}
}

$template = new Template();
$template->filename = "template2.php";
$template->set('page_title', "Template test");
$template->set('content', "This is a test of templating using variables.");

$template->display();

?>

Комментариев нет:

Отправить комментарий

Materialize-css. Футер

Сделаем футер и прижмем к низу страницы. Документация: https://materializecss.com/footer.html