Шаблоны php главная страница

Шаблонизация в PHP

Шаблонизация — это работа по интеграции готовой, статичной вёрстки на сайт.

Ведя работу над сайтом, написанном на PHP, мы разрабатываем логику, которая управляет представлением. Логика — это PHP-сценарии, где происходит объявление переменных, функций, использование массивов и циклов, получение и обработка информации.

Представление — это внешний вид сайта. Сюда входят страницы, которые содержат общие элементы оформления (шапка, меню, подвал) и контент (страницы, статьи и тому подобное).

Имея на руках готовую вёрстку, надо правильно её внедрить в работающий сайт, чтобы в определённых местах страниц информация выводилась динамически, под контролем PHP-сценариев.

Что такое «шаблон» и при чём здесь рыба?

Шаблон — это готовая вёрстка страницы или блока, которая состоит только из оформления, и не содержит никакого контента (полезной информации).

Шаблон по своей сути — это обычный PHP-сценарий, который на 90% состоит из HTML-кода и только на 10% из PHP-конструкций. Основная задача программиста в процессе работы над сайтом — это превратить статичные HTML-страницы в динамичные PHP-шаблоны, которые будут использоваться для показа итоговых страниц.

Но если статичная вёрстка страниц не содержит динамического контента, то что будет на его месте до начала внедрения этих страниц? Когда дизайнер или верстальщик хотят показать, как будет выглядеть страница на сайте, то вместо реального контента используется так называемая рыба. Рыба — это заполнитель. Бессмысленный текст, который используется в вёрстке, чтобы показать, как будет выглядеть страница, наполненная контентом.

Читайте также:  Javascript все атрибуты ссылки

Проблемы типичного процесса вёрстки

Когда верстальщик работает над несколькими страницами, ему приходится копировать бол́ьшую часть HTML-кода между страницами, так как эти страницы содержат много повторяющихся элементов: подключение стилей, шапка сайта с логотипов, футер сайта, различные меню и тому подобное.

В результате когда дело доходит до правок, то при необходимости поменять что-нибудь в той же шапке, это изменение нужно будет сделать во всех HTML-файлах, чтобы они выглядели одинаково. Конечно, такой напрасный труд никому не понравится.

Общие фрагменты страниц сайта

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

Шаблонизация — это и есть деление всей вёрстки на независимые шаблоны и дальнейшее их подключение и вкладывание друг в друга.

Сбор страницы из частей

Если поделить всю вёрстку сайта на отдельные, небольшие шаблоны мы получим сразу несколько преимуществ. Станет легче следить за единообразием интерфейса. Выделив представление сайта в шаблоны, мы также существенно упростим PHP-сценарии, ведь в них останется только PHP-код. Можно даже доверить верстальщику редактировать шаблоны, так как в них почти нет программного кода, а тот, что есть, очень простой.

Потренируйтесь собирать страницы из фрагментов, выполнив это задание.

Термины шаблонизации

В разговоре о шаблонизации очень важно придерживаться определённых терминов, чтобы всегда было понимание, о чём идёт речь. Договоримся использовать следующую терминологию:

Лейаут — это шаблон, который содержит HTML-код, общий для всех страниц сайта. В нём могут содержаться подключение стилей, метатеги, шапка, подвал. Также лейаут содержит область для вставки уникального содержимого каждой страницы.

Шаблон страницы — это шаблон с уникальным для одной страницы HTML-кодом. Например, для главной страницы там может быть список новостей. Также шаблон страницы может включать в себя блоки.

Блок — это шаблон очень небольшого блока страницы. Например, это может быть один элемент списка новостей. Удобство блоков в том, один блок могут включать разные страницы.

Содержимое шаблона

Что же находится внутри шаблона? Вы уже знаете, что шаблон почти полностью состоит из HTML-кода. Но помимо HTML-тегов, там также лежат данные и простая логика.

Данные в шаблоне

Шаблон показывает динамическую информацию. Прилагательное «динамическая» означает, что эти данные могут меняться и показываться в зависимости от различных условий. Сама информация, как правило, хранится в базе данных, а PHP-сценарий извлекает её оттуда и передаёт в шаблон.

Вне зависимости от источника информации есть строгое правило: любой шаблон (лейаут, шаблон страницы, блок) должен иметь доступ только к тем данным, которые ему явно передали.

Такую изоляцию данных обеспечивает специальная функция-шаблонизатор, о которой пойдёт речь далее.

Логика шаблона

В шаблоне должна находиться только несложная логика. Иными словами, шаблоны не содержат «тяжёлого» PHP-кода, а только простые конструкции.

Так, в шаблоне можно показывать переменные, использовать условия, циклы, обходить массивы, вызывать функции и подключать файлы. Всё другое запрещено. Оставшаяся бизнес-логика остаётся в PHP-сценариях, которые вызывают шаблоны и передают в них информацию.

Функция-шаблонизатор

Шаблонизатор — это функция, которая подключает файл шаблона, передаёт ему данные и возвращает сгенерированный HTML.

Именно шаблонизатор является тем клеем, что скрепляет воедино отдельные шаблоны в итоговую страницу. Работает он следующим образом: PHP-сценарий страницы выполняет все действия для подготовки необходимой информации, к примеру, запрашивает записи из базы данных. Эти записи в виде массива отправляются шаблонизатору вместе с именем шаблона страницы.

Шаблонизатор подключает указанный файл шаблона и передаёт туда всю информацию. Но, вместо вывода на экран содержимого этого шаблона, он захватывает получившийся HTML-код и возвращает его. Затем сценарий вызывает шаблонизатор ещё раз, но теперь с его помощью подключает общий лейаут, куда отправляется общая информация, а также содержимое страницы, полученное из предыдущего шага. Весь результат работы выводится на экран.

Пример использования

Посмотрим на примере, как это всё работает. Начнём с того, что определим три шаблона: лейаут, шаблон страницы и какой-нибудь блок.

Напоминаю, что в лейаут выносим общий HTML-код.

       

Дневник погоды

Дневник наблюдения за погодой. Все права защищены

Теперь очередь за шаблоном страницы: [main.php]

 

Последние записи

Добавить новую

Здесь обратите внимание, что шаблон страницы, помимо итерации по массиву, для каждого его элемента вызывает функцию-шаблонизатор. Шаблонизатор получает контент из шаблона блока и показывает его внутри списка.

А вот и шаблон блока для показа одной записи: [inc/item.php]

Так выглядели три шаблона. Все они примут участие в формировании итоговой страницы. Соберёт эти шаблоны и выведет страницу на экран наш сценарий — index.php:

 $items_list]); // окончательный HTML код $layout_content = renderTemplate('layout.php', ['content' => $page_content, 'title' => 'Дневник наблюдений за погодой']); // вывод на экран итоговой страницы print($layout_content); 

«Доктайп» — журнал о фронтенде. Читайте, слушайте и учитесь с нами.

Источник

Создание динамического сайта.

Создание простого динамического веб сайта на php. Данный пример имеет преимущество перед статическим сайтом только в том, что при использовании шаблона его можно изменить дизайн только используя один файл и не надо обращаться к каждой странице, которых может быть тысячи.

Скачайте эту библиотеку PHPTemplate.rar распакуйте и установите в корневую папку на сервере. Этот файл будет подставлять в шаблон нужный контент и делать html-страницу.

Динамический сайт будем делать на примере этого статического сайта.

В папке assets создадим файл page.tpl — это будет шаблон для всех страниц сайта. Перенесём содержимое (index.html) статического сайта в page.tpl с небольшими изменениями.

assets/page.tpl




© 2022


Подчёркнутый код означает что там выполняется скрипт PHP. Первая сторчка устанавливает кодировку страницы, остальные – вставляют содержимое массива $content .

Обратите внимание что в меню мы ссылаемся на файлы php, html здесь не нужны.

Теперь нужно создать файл page.php который будет собирать страницы.

page.php

// подключаем библиотеку
include_once ‘PHPTemplate.php’;
// достаём шаблон
$tpl = new PHPTemplate(‘assets/page.tpl’);
// передаём массив в шаблон
$tpl->set(‘content’, $content);
// показываем содержимое
echo $tpl->fetch();
?>

Осталось создать страницы сайта.

index.php

$content[«title»]=»Создание динамического веб сайта с помощью php»;
$content[«text»]=»Контент главной страницы»;

// собираем страницу
include_once ‘./page.php’;
?>

Таким же образом создаём страницы portfolio.php и contact.php.

Понравилась страница? Поделитесь ссылкой в социальных сетях. Поддержите проект!

Источник

PHP: Как делать шаблоны

Блог доброго программиста

Эра статических страниц уже давно прошла. Разрабатывая веб приложение сложно себе представить ситуацию, когда каждая страница ресурса будет являться самостоятельной единицей. Однако как показывает практика, многие начинающие, да и не только, разработчики до сих пор неправильно подходят к разработке сайтов с нуля.
Основной проблемой, с который мне приходится сталкиваться на самописных сайтах — абсолютно неверный подход к реализации страниц сайта. Очень часто даже самая незначительная правка в шапке сайта, может затянуться на продолжительное время, и все из-за полного отсутствия шаблонизации.

Язык php очень гибок, что позволяет совершать потрясающие манипуляции с информацией. Давайте рассмотрим самый простой подход к реализации шаблонов при разработке веб сайта с нуля.

Допустим мы разрабатываем сайт визитку, состоящий из шапки, подвала, сайдбара и области контента. А страницы будут у нас следующие: Главная, Контакты, Отзывы (повторюсь, что мы рассмотрим самый простой подход к реализации шаблона). Как правило шапка и подвал у сайтов статичны, сайдбар может быть различным, но мы будем рассматривать случай когда он не будет меняться в зависимости от открытой страницы. Далее делаем заключение: «Все что является статичным относится к шаблону». А значит смело в нашем проекте создаем папку tpl и в нее добавляем файлы header.php, footer.php, sidebar.php. Так же у нас есть область контента страницы, данный блок постоянно меняется, поэтому относить его к шаблонам будет ошибкой. По сути контент это и есть страница нашего сайта, поэтому создадим в проекте еще одну папку pages и добавим туда файлы index.php, feedbacks.php, contactus.php, 404.php. Не сложно догадаться за что будут отвечать данные файлы.

Теперь когда мы имеем структуру нашего сайта. Мы можем перейти к программированию. В корне проекта создадим файл index.php который будет содержать следующие строки:

  
else if (file_exists('pages/'.$_GET['page'].'.php')) < include 'pages/'.$_GET['page'].'.php'; >else < include 'pages/404.php'; >

Примечание: На данный момент принято использовать include_ones, однако я предпочитаю использовать include для избежания ситуаций двойного включения одного и того же файла дважды впринципе.

Немного о коде. В данном случай файл index.php у нас будет являться обработчиком запроса на сайт. При этом всегда будет выводится содержимое файла header.php, footer.php, sidebar.php. Область контента же будет выводится по следующему алгоритму: если мы открываем сайт просто по имени домена, то попадаем на главную страницу контента (pages/index.php), если же на страницу передается параметр ?page= и существует файл в папке ‘pages’ с таким именем, то в область контента подставляем содержимое этого файла, если же ни одно условие не выполняется показываем содержимое файла pages/404.php.

Пусть сайт расположен по имени localhost, тогда localhost/?page=feedbacks будет страницей отзывов, а localhost/?page=trololololo откроет нам страницу с контентом файла 404.php.

Что же касается html разметки указанных файлов, то выглядеть она в нашем случае должна примерно так:
header.php

Заголовок

Текст сайдбара, возможно теги и т.п.

Вот в целом то и все. Далее этот подход можно усовершенствовать как Вам угодно и удобней. Например можно разбить файлы шаблонов, на подшаблоны (например из файла header.php можно выделить menu.php). Можно усложнить процесс подгрузки страницы, тем самым избавясь от дублей страниц. Можно дописать файл .htacess чтобы не передавать параметр pages явно в строке браузера. И многое другое…

Источник

Оцените статью