Как создать сайт с нуля на php
Сегодня я вам расскажу, как создать сайт с нуля. Для этого нам понадобится сервер с поддержкой php и базы данных mysql. Я покажу пример создания сайта на шаблонизаторе Smarty.
Я выбрал данный шаблонизатор, т.к он облегчит нам работу с HTML частью сайта и он поддерживает много полезных нам функций, например кэширование, что нежелательно делать в php, если страницы у нас динамичные. Динамичные страницы - это допустим у нас есть файл page.php
и он будет отвечать за несколько страниц, например page.php?content=info
или в случаи с постраничной навигацией типа page.php?p=2
. Если нам кэшировать сами php файлы, то ничего хорошего из этого не выйдет. Мы обратимся к странице page.php?p=2
, страница сохранится в кэше, и если допустим обратимся к другой странице того же файла, например page.php?content=info
или к любой другой, то мы всё еще увидим содержимое page.php?p=2
. Именно по этому я остановлюсь на Smarty, он с этой задачей справляется хорошо.
Нам нужно скачать сам шаблонизатор с официального сайта smarty.net открыть архив, перейти в каталог smarty-версия
и извлечь папку libs
.
Теперь откроем корневой каталог сайта и создадим в нем 2 папки: system
и templates
. После создадим 3 файла: index.php
, header.php
и footer.php
. Нам нужно создать еще файлы самого шаблона. Для этого откроем папку templates
и создадим в ней 3 файла: index.tpl
, header.tpl
и footer.tpl
. Структура сайта почти готова, нам осталось открыть папку system
и скопировать в него ту самую папку libs
, которую мы извлекли из архива и создать еще одну папку под названием templates_c
, где мы будем хранить кэшированные html файлы. У нас должно получиться вот так:
- system
- libs
- templates_c
- templates
- footer.tpl
- header.tpl
- index.tpl
- footer.php
- header.php
- index.php
Если у вас структура похожа на таблицу выше - можно приступать к написанию кода. Давайте начнем с шапки, и откроем файл header.php
, который в корне сайта и вставим в него следующий код:
<?php
// Запустим сессии
session_start();
// Подключимся к библиотеке smarty
include "system/libs/Smarty.class.php";
$smarty = new Smarty;
// Укажем директорию для html файлов
$smarty->setTemplateDir('templates');
// Укажем директорию для кэша html файлов
$smarty->setCompileDir('system/templates_c');
?>
Теперь откроем файл footer.php
и вставим в него небольшой код:
<?php
// Покажем smarty, с каким названием шаблон нужно вывести. В index.php мы создадим переменную $page = "index";, соответственно у нас получается файл шаблона index.tpl
$smarty->display($page.'.tpl');
?>
Затем откроем index.php
и попробуем передать в шаблон какую-нибудь переменную.
<?php
// Укажем какой файл шаблона мы будем вызывать, расширение .tpl футере добавится само
$page = "index";
// Подключим шапку
include "header.php";
// Создадим любую переменную
$per = "Hello World";
// Передадим переменную в шаблон
$template->assign('per', $per);
// Подключим подвал
include "footer.php";
?>
С php частью мы закончили. Видите кокой чистый и понятный код у нас получился? Теперь перейдем к файлам шаблона в папке templates
. Откроем файл header.tpl
и создадим нашу шапку html.
<!DOCTYPE html>
<html lang="ru">
<head>
<title>Web Фишки</title>
</head>
<body>
После откроем подвал, файл footer.tpl
и вставим в него:
</body>
</html>
И наконец откроем файл главной страницы index.tpl
и выведем в него нашу переменную
{$per}
Всё очень просто! Работать с smarty легко, он может сам работать с переменными и даже с массивами, нам не нужно добавлять в него php код.
Пример передачи массива в шаблон:
$mass = array(
"один",
"два",
"три"
);
$template->assign('mass', $mass);
и уже в самом шаблоне с ним работать
<ul>
{foreach from=$mass item=array}
<li>{$array}</li>
{/foreach}
</ul>
или пример с IF
{if $mass|@count >= "3"}
В этом массиве 3 или более элементов
{else}
В этом массиве меньше 3-х элементов
{/if}
Нужно учесть один нюанс. Если в шаблоне будет код, содержащий символы { или }, например JavaScript, то шаблонизатор поругается на ошибку. Чтобы это решить, нам нужно поставить этот код между {literal}
{/literal}
. Но учтите, что если между ними попадёт переменная типа {$per} или функция, то она выведется как обычный текст. Ниже приведу пример, как правильно добавлять такие коды, содержащие переменные или функции.
{literal}
function showMessage() {
alert('{/literal}{$per}{literal}');
}
{/literal}
Основа у нашего сайта уже есть и на этом можно заканчивать. Из самого главного - нам остаётся подключить хороший класс для работы с базой данных MySQL.