Как создать сайт с нуля на 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.

Комменарии

Написать комментарий

Примечание: HTML разметка не поддерживается! Используйте обычный текст.
    Плохо           Хорошо
Защита от роботов