Почему сайт нужно делать на движке?
Сайт можно сделать и на чистом html, без использования движков и php-вообщем. На php можно написать только форму обратной связи, и прочие скрипты, необходимые на сайте. Но возникает множество проблем, вот некоторые из них:
[list type=decimal]
[*]Сложность в изменений дизайна сайта
[*]Невозможно подключить систему управления контентов
[*]Сложность и длительность в изменении частей сайта (например, сделали сайт на html из 100 страниц, и потребовалось на каждой странице добавить новый пункт меню, придется все перелапачивать)
[/list]
Сейчас мы напишем движок для создания сайта из 3-ех страниц. Структуру движка можете посмотреть в предыдущем уроке.
Вот исходный код движка:
Файл: index.php
Файл выводит шапку и подвал, и запускает класс Engine, который выводит страницы сайта. Страницы сайта хранятся в папке templates.
Файл: class/Engine.php
Основной файл движка. Отвечает за открытия страниц. Имя файла шаблона передается методом GET. По-умолчанию открывается страница main.php.
Файл: templates/header.php
Шапка сайта, содержит верхнее меню, можно поставить логотип сайта, и другую не изменную информацию. Обратите внимание на то, что в верхнем меню сайта есть одна битая ссылка. Ее мы сделали специально, чтобы протестировать методы записи и вывода ошибок на сайт.
Файл: templates/footer.php
Подвал нашего сайта, обычно содержит копирайт компании которая создала сайт, телефоны, и нижнее меню
Файл: templates/main.php - Главная страница
Файл: templates/about.php - Страница о компании
На этом php движке можно сделать простенький сайт. Стоимость создания сайта с таким движком обычно очень низкая, т.к. в нем нет системы управления.
Сайт можно сделать и на чистом html, без использования движков и php-вообщем. На php можно написать только форму обратной связи, и прочие скрипты, необходимые на сайте. Но возникает множество проблем, вот некоторые из них:
[list type=decimal]
[*]Сложность в изменений дизайна сайта
[*]Невозможно подключить систему управления контентов
[*]Сложность и длительность в изменении частей сайта (например, сделали сайт на html из 100 страниц, и потребовалось на каждой странице добавить новый пункт меню, придется все перелапачивать)
[/list]
Сейчас мы напишем движок для создания сайта из 3-ех страниц. Структуру движка можете посмотреть в предыдущем уроке.
Вот исходный код движка:
Файл: index.php
Файл выводит шапку и подвал, и запускает класс Engine, который выводит страницы сайта. Страницы сайта хранятся в папке templates.
PHP:
<?php
/**
* Простой движок на PHP
* @author ox2.ru
*/
include_once "class/Engine.php"; //Подключаем класс-движка
$engine = new Engine(); //Создаем объект класса Engine
include_once "templates/header.php"; //Подключаем шапку сайта
if ($engine->getError()) { //Если возникли ошибки, выводим сообщение на экран
echo "<div style=\"border:1px solid red;padding:10px;margin: 10px auto;
width: 500px;\">" . $engine->getError() . "</div>";
}
echo $engine->getContentPage(); //Выводим страницы сайта
include_once "templates/footer.php";//Подключаем подвал сайта
?>
Основной файл движка. Отвечает за открытия страниц. Имя файла шаблона передается методом GET. По-умолчанию открывается страница main.php.
PHP:
<?php
/**
* Простой движок на PHP
* @author ox2.ru
*/
class Engine {
private $_page_file = null;
private $_error = null;
public function __construct() {
if (isset($_GET["page"])) { //Если открыта какая-нибудь страница
//Записываем в переменную имя открытого файла (из GET запроса)
$this->_page_file = $_GET["page"];
//Небольшая защита
$this->_page_file = str_replace(".", null, $_GET["page"]);
$this->_page_file = str_replace("/", null, $_GET["page"]);
$this->_page_file = str_replace("\\", null, $_GET["page"]);
//Проверяем, если шаблон не существует
if (!file_exists("templates/" . $this->_page_file . ".php")) {
$this->_setError("Шаблон не найден"); //Ошибку на экран
$this->_page_file = "main"; //Открываем главную страницу
}
}
//Если в GET запросе нет переменной page, то открываем главную
else $this->_page_file = "main";
}
/**
* Записывает ошибку в переменную _error
* @param string $error - текст ошибки
* @author ox2.ru
*/
private function _setError($error) {
$this->_error = $error;
}
/**
* Возвращает текст ошибки
* @author ox2.ru
*/
public function getError() {
return $this->_error;
}
/**
* Возвращает текст открытой страницы
*/
public function getContentPage() {
return file_get_contents("templates/" . $this->_page_file . ".php");
}
/**
* Возвращает тег заголовок открытой страницы
* @return string
*/
public function getTitle() {
switch ($this->_page_file) {
case "main":
return "Главная страница сайта";
break;
case "about":
return "О компании";
break;
case "ox2":
return "Преимущества";
break;
default:
break;
}
}
}
Шапка сайта, содержит верхнее меню, можно поставить логотип сайта, и другую не изменную информацию. Обратите внимание на то, что в верхнем меню сайта есть одна битая ссылка. Ее мы сделали специально, чтобы протестировать методы записи и вывода ошибок на сайт.
HTML:
<html>
<head>
<?php global $engine; ?>
<title><?php $engine->getTitle(); ?></title>
</head>
<body>
<div style="background-color: #E9E8E2">
<a href="?page=main">Главная</a> | <a href="?page=about">О компании</a>
| <a href="?page=asdasd">Битый раздел</a>
</div>
</body>
</html>
Подвал нашего сайта, обычно содержит копирайт компании которая создала сайт, телефоны, и нижнее меню
HTML:
<div style="float: right; clear: both;">
<strong>© 2012 Все права защищенны -
<a href="#" target="__blank">Создание сайтов</a></strong>
</div>
</body>
</html>
HTML:
<h1>Главная страница сайта</h1>
<p>Сайт в разработке</p>
HTML:
<h1>О компании</h1>
<p>текст еще не написан</p>