<MyRusakov.ru />

PHP и MySQL с Нуля до Гуру

PHP и MySQL с Нуля до Гуру

Данный курс - это более 20-ти часов видеоуроков по изучению PHP и MySQL. Ключевой момент курса - это создание движка для сайта с нуля. Каждая строчка комментируется. Практически для каждого урока имеются упражнения. Причём данные упражнения направлены не только на закрепление материала, но и на реализацию реальных задач, встающих перед Web-разработчиками при создании сайтов. После курса Вы сможете без проблем создавать движки для любых сайтов.

Также почти к каждому уроку идут упражнения для закрепления материала.

Просмотрев курс и выполнив упражнения, Вы сможете без проблем создавать функциональные движки для самых различных сайтов.

Подробнее
Подписка

Подписавшись по E-mail, Вы будете получать уведомления о новых статьях.

Подписка Подписаться

Добавляйтесь ко мне в друзья ВКонтакте! Отзывы о сайте и обо мне оставляйте в моей группе.

Мой аккаунт Мой аккаунт Моя группа
Опрос

Каким движком Вы предпочитаете пользоваться?

Как использовать файлы TPL

Как использовать файлы TPL

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

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

Однако, есть один очень важный нюанс. Рассмотрим поподробнее файл tpl с панелью пользователя. Я написал, что там идёт приветствие пользователя по имени. Но файл один, а пользователей очень много (следовательно, и имён много). Глупо создавать для каждого пользователя отдельный файл, где жёстко прописано его имя. Поэтому в файлах tpl используются специальные элементы - шаблонизаторы. Они записываются примерно в таком виде: {username}. Давайте приведу пример файла tpl, где используется шаблонизатор {username} (пусть файл называется user_panel.tpl):

<div>
  <p>Здравствуйте, <b>{username}</b>!</p>
  <p><a href = 'editprofile.php'>Редактировать профиль</a></p>
  <p><a href = 'editprofile.php'>Выход</a></p>
</div>

Как видите, никаких <html>, <head> и <body> здесь нет. Только тот HTML-код, который отвечает за панель пользователя.

Теперь напишем PHP-код, который этот tpl-файл обрабатывает:

<?php
  $username = "Пётр"; //Разумеется, это имя Вы должны сначала откуда-то взять, например, из базы данных
  $user_panel = file_get_contents("user_panel.tpl");
  $user_panel = str_replace("{username}", $username, $user_panel);
  echo $user_panel;
?>

Как видите, всё очень и очень легко. Мы здесь получили содержимое файла user_panel.tpl, а затем с помощью функции PHP str_replace() заменили {username} на конкретное имя пользователя.

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

Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (http://myrusakov.ru)!

Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/myrusakov.
Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/rusakovmy.

Если Вы не хотите пропустить новые материалы на сайте,
то Вы можете подписаться на обновления: Подписаться на обновления

Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий внизу страницы.

Порекомендуйте эту статью друзьям:

Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):

  1. Кнопка:

    Она выглядит вот так: Как создать свой сайт

  2. Текстовая ссылка:

    Она выглядит вот так: Как создать свой сайт

  3. BB-код ссылки для форумов (например, можете поставить её в подписи):

Комментарии (21):

pavelaleks pavelaleks 09.07.2011 09:33:31

Михаил, я конечно, ещё не настолько овладел знаниями в области программирования, изучая платный курс(за который тебе отдельное спасибо), но сдается мне, что в написанном коде есть пара, скорее всего, опечаток.. :)

Ответить

Trust Trust 08.11.2011 21:48:56

Михаил ! вопрос таков... просто не знал где его задать решил тут раз уж применяю tplы... вот к примеру у меня есть переменная имени "$login" и на экране выводится именно к примеру "Олег" А как вот его просклонять правильно ведь не ко всем именам подойжет префикс после его логина к примеру Сообщение от "Олег" - не очень смотрится=((( Как это реализовать?

Ответить

Admin Admin 08.11.2011 22:15:07

Это сделать можно только для конечного числа имён. Реализовать это для всех имён не получится. Соответственно, Вы для каждого имени склоняете под всеми необходимыми падежами, а потом вытаскиваете нужный падеж (например, взятый из параметра функции).

Ответить

asistex asistex 27.06.2015 00:18:10

Нет там опечаток, кроме той что тег <b> не работает с версии 4,1 HTML

Ответить

pavelaleks pavelaleks 27.06.2015 07:00:20

Ты это мне написал? Ты видел дату моего поста??

Ответить

ArturPanteleev ArturPanteleev 07.03.2012 20:42:08

Спасибо за статью, помню я как раз и не разобрался с шаблонизаторами и фигурными скобками.

Ответить

fatalstrike fatalstrike 25.04.2012 14:10:09

Здравствуйте, Михаил. Есть вопрос. Например есть tpl файл для боковой панели. В боковой панели есть подобие виджетов. Они одинаково выглядят и для них я так же сделал один tpl файл. Вот tpl виджета: <div class=widget> <h3>{title}</h3> {text} {bottomtext} </div> Как мне с помощью одного tpl для виджета выводить например 3 виджета?

Ответить

Admin Admin 25.04.2012 14:13:27

Через цикл.

Ответить

fatalstrike fatalstrike 25.04.2012 14:19:13

Так если я буду в цикле с помощью str_replace() изменять значения {title} {text} и т.д. то они будут меняться для всех виджетов...

Ответить

Admin Admin 25.04.2012 19:50:06

for(...) $text .= str_replace(...); И вот в $text и будут все 3 виджета.

Ответить

vsenetak vsenetak 18.05.2012 16:20:52

Скажите, пожалуйста, а как связан tpl с версткой? Вот мы создали такой блок: <div> <p>Здравствуйте, <b>{username}</b>!</p> <p><a href = 'editprofile.php'>Редактировать профиль</a<</p> <p><a href = 'editprofile.php'>Выход</a></p> </div> а в каком файле настраивается его вид?

Ответить

Admin Admin 18.05.2012 16:23:34

Сначала делается вёрстка, а уже потом эта вёрстка разбивается на куски и отправляется в tpl-файлы.

Ответить

vsenetak vsenetak 18.05.2012 16:33:29

Спасибо! Это я понимаю,но в самом же ptl файле не прописывается графика, содержимое и их свойства, и расположение на странице?

Ответить

Admin Admin 18.05.2012 18:08:40

Туда прописывается HTML-код, а это и есть всё то, что Вы написали.

Ответить

ppk-center ppk-center 28.05.2012 20:20:55

У Вас опечатка в коде - надо не <div> <p>Здравствуйте, <b>{username}</b>!</p> <p><a href = 'editprofile.php'>Редактировать профиль</a<</p> <p><a href = 'editprofile.php'>Выход</a></p> </div>, а <div> <p>Здравствуйте, <b>{username}</b>!</p> <p><a href = 'editprofile.php'>Редактировать профиль</a></p> <p><a href = 'editprofile.php'>Выход</a></p> </div>

Ответить

Admin Admin 28.05.2012 20:29:30

Спасибо, исправил!

Ответить

shelton shelton 20.10.2012 13:05:42

Михаил, можете написать статью, где будет описпно, как создать класс для подключения шаблона(типа template).

Ответить

logaut logaut 08.12.2014 16:34:07

Замечательная статья, Михаил! Не смотря на то, что я не полностью помню базу php, я строчки этого примера разобрал и наизусть запомнил. Именно самого образца - примера, мне не хватало для понимания вывода значений и обработки скобок фигурных. То есть по сути, замены username на конкретное значение - имя. Я думаю, что это всего лишь капля в море, того, что я узнал из этой статьи. С уважением, Сергей.

Ответить

pSECTORq pSECTORq 20.12.2014 09:15:35

Привет Михаил. Конечно, огромное спасибо тебе за твои уроки (бесплатные, на курсы денег нет к сожалению ), вот 3-е сутки практически без сна сижу и пытаюсь понять как использовать ООП. Процедурное программирование конечно хорошо, но в ООП я увидел компактность пользования. Ну так вот, вот код шаблонизатора(--- function articles(){ $mysqli = connectDB(); $result_set = $mysqli->query("SELECT * FROM news"); closeDB($mysqli); return shotStoryArray($result_set); } function shotStoryArray($result_set){ $results = array(); while (($row = $result_set->fetch_assoc()) != false){ $results[] = $row; } return $results; } $result = articles(); for ($i = 0; $i < count($result); $i++){ $file = file_get_contents("templaters/mytemp/index.html"); $file = str_replace('{title}',$result[$i]['title'],$file); $file = str_replace('{desc}',$result[$i]['description'],$file); $file = str_replace('{fulltext}',$result[$i]['fulltext'],$file); $file = str_replace('{author}',$result[$i]['autor'],$file); print ($file); } ---) Шаблонизатор работает как надо, но как его в КЛАСС загнать никак не могу понять. и еще такой вопрос как передать в переменную все файлы шаблона из каталога. что бы не писать для каждого шаблона отдельный код и теги а просто написать строку $file = file_get_contents("templaters/mytemp/index.html"); и там где index.html подставить переменную допустим $filename в которую записаны все файлы шаблона?

Ответить

Riddler120 Riddler120 28.01.2015 17:24:46

Вы используете tpl-файлы просто, чтобы максимально отделить php код от html кода, или есть еще плюсы использования tpl-файлов? Может с ними код быстрей работает? Есть ли разница между использованием php+tpl-файлов и html+вставки php кода?

Ответить

logaut logaut 04.03.2015 17:34:02

Знаете, разница есть. Представьте что Вы делаете блог или новостной портал, Вам без шаблонизатор и tpl не справились. Вот смотрите, к, примеру вы сделали сайт и без шаблонизаторов и tpl файлов, в таком случае Вам понадобится в место элементов шаблона %username% ставить в html код вот такие конструкции: <?php echo "$name"; ?> или такую конструкцию, покороче: <?=$name;?>, а когда Вам захочется поменять шаблон, то тяжело будет сделать - это без шаблонизаторов, к тому же в добавок, чтобы поменять шаблон, Вам и в программный код влезать нужно будет. Что насчёт быстрой загрузки страниц... Тут можно использовать кеширование страниц сайта, или использовать Ajax на полную катушку с javascript.

Ответить

Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.