HTML шаблон сайта на PHP
Сегодня система шаблонов является важным компонентом. Большинство из шаблонов разработаны таким образом, что Вам необходимо только включить функцию и все. Давайте посмотрим, можем ли мы создать собственный шаблон сайта, который не будет разрушать естественную структуру HTML разметки.
В этом уроке мы будем использовать PHP в качестве языка шаблонов и функцию буферизации вывода. Давайте, определим, каким должен быть доступ к нашему шаблону. Я предлагаю этот вариант:
$template = new Template( 'sub.php' ); $template->display();
Мы должны создать конструктор, который принимает имя файла шаблона и метод, каким будет отображается шаблон. Кроме того, постоянная, которая определяет путь к папке, в которой находятся наши шаблоны.
class Template {
const DIRECTORY = './templates';
protected $path;
public function __construct( $name ) {
$this->path = sprintf( '%s/%s', self::DIRECTORY, $name );
}
public function build();
public function display() {
echo $this->build();
}
}
В качестве следующего шага мы будем использовать метод продления. Загружаем другие шаблоны и сохраняем их.
protected $extendedTemplate = null;
public function extend( $name ) {
$this->extendedTemplate = newTemplate( $name );
}
Теперь мы должны реализовать методы, необходимые для расширения шаблонов. Метод Старт создаст переменную с именем раздела и начнет буферизацию вывода.
protected $sections = array();
protected $currentSection = null;
public function begin( $sectionName ) {
ob_start(); // начать буферизацию вывода
$this->currentSection = $sectionName;
}
Мы должны различать два случая: если $this->extendedTemplate имеет действительное значение, то выбранный нами метод должен сохранить содержимое в массиве, который отображается в начале раздела. В противном случае может произойти ошибка. Затем должен быть вывод содержимого разделов.
public function end() {
if ( !is_null( $this->extendedTemplate ) ) { // текущая подгруппа шаблона.
// Читать содержимое буфера и сбрасывает их
$this->sections[ $this->currentSection ] = ob_get_clean();
} else { // текущий мастер шаблонов
if ( isset( $this->sections[ $this->currentSection ] ) ) {
ob_end_clean(); // drop default content
echo $this->sections[ $this->currentSection ];
} else {
// Вывод данных из буфера
echo ob_get_clean();
}
}
}
// вызов следующего действия
public function setSections( $sections ) {
$this->sections = $sections;
}
Теперь самая важная часть урока. Метод Создание. Обратите внимание, что мы загрузим PHP шаблон только тогда, когда создадим метод build.
public function build() {
// начало буферизации
ob_start();
// подключаем файлы шаблона
include $this->path;
// получаем буфер данных
$output = ob_get_clean();
// проверяем, что мы имеем.
if ( !is_null( $this->extendedTemplate ) ) {
$this->extendedTemplate->setSections( $this->sections );
// отображаем шаблон.
return $this->extendedTemplate->display();
} else { // мы отобразили наш шаблон, больше ничего не нужно делать
return $output;
}
}
Вот так происходит все волшебство. Файлы шаблона выглядят так:
main.php:
<html> <head> <title><? $this->begin( 'title' ) ?>Заголовок<? $this->end() ?></title> </head> <body> <? $this->begin( 'content' ) ?> Какой-то контент <? $this->end() ?> </body> </html>
sub.php:
<? $this->extend( 'main.php' ) ?> <? $this->begin( 'title' ) ?>Мой шаблон<? $this->end() ?> <? $this->begin( 'content' ) ?> <p> Мой контент </p> <? $this->end() ?>
Вот и все.
Последние уроки категории:
Сокращение PHP кода
Вы задумывались когда — нибудь о том, что лишний и бесполезный код убивает ваше время разработки приложения/сайта. Хотя это и кажется мелочью, но когда такой мелочи становится много, то время, потраченное впустую, становится ценным. И так давайте посмотрим, что можно и нужно сокращать...
Видимость переменных в PHP
В данном уроке рассматривается область видимости переменных PHP. Объясняется различие локальной и глобальной области видимости, показывается как получить доступ к глобальным переменным внутри функции, как работать с суперглобалами и создавать статические переменные.
Как читать Rss ленты?
Читалки и агрегаторы RSS используются для доступа, чтения и управления периодически-обновляемыми лентами RSS (или Atom), которые генерируются веб-сайтами. Эти ленты предоставляют доступ к последним материалам с этих сайтов.
Установка и настройка PHP+Apache
В этом уроке хотелось бы поднять очень интересную тему – Установка и настройка веб сервера PHP5 + Apache. В интернете довольно много различных инструкций по данной теме, но только вот в основном это копипаст, а не инструкция для человека, я же постараюсь объяснить все намного проще – на пальцах. Причина для установки локального вебсервера довольно много, например скорость выполнения и отладки скриптов, простота загрузки и модернизации контента и еще много чего.
Как выбрать фреймворк
Так уж повелось, что лень – это двигатель прогресса и как бы странно это не звучало, все те блага цивилизации, которые мы имеем сейчас были сделаны в первую очередь для нашего комфорта. Так и программисты чтобы облегчить себе жизнь и тем самым получить возможность создавать более сложные проекты за менее долгое время придумали сделать себе фреймворки.




Комментарии:
Денис 10.08.2010 17:15:45
Александр 03.08.2011 07:52:39