Наше прошлое 20072009201120132014
г. Москва, ул. Гостиничная, д. 7А. кор.2
8 (499) 404-26-56
пн-пт 11:00 - 19:00
 

Создание простого движка на php часть 2

Как уже говорилось в предыдущих уроках, при создании интернет магазина или интернет сайта, одним из самых важных показателей является движок. Особенно если стоимость интернет магазина не самая низкая.

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

Почему сайт нужно делать на движке??

Сайт можно сделать и на чистом html, без использования движков и php-вообщем. На php можно написать только форму обратной связи, и прочие скрипты, необходимые на сайте. Но возникает множество проблем, вот некоторые из них:

  1. Сложность в изменений дизайна сайта
  2. Невозможно подключить систему управления контентов
  3. Сложность и длительность в изменении частей сайта (например, сделали сайт на html из 100 страниц, и потребовалось на каждой странице добавить новый пункт меню, придется все перелапачивать)

Сейчас мы напишем движок для создания сайта из 3-ех страниц. Структуру движка можете посмотреть в предыдущем уроке.

Вот исходный код движка:

Файл: index.php

Файл выводит шапку и подвал, и запускает класс Engine, который выводит страницы сайта. Страницы сайта хранятся в папке templates.

<?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";//Подключаем подвал сайта
?>

Файл: class/Engine.php

Основной файл движка. Отвечает за открытия страниц. Имя файла шаблона передается методом GET. По-умолчанию открывается страница main.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 "Главная страница сайта ox2.ru";
                break;
            case "about":
                return "О компании ox2.ru";
                break;
            case "ox2":
                return "Преимущества ox2.ru";
                break;
            default:
                break;
        }
    }

}
?>

Файл: templates/header.php

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

 <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=ox2">Почему OX2</a> | <a href="?page=asdasd">Битый раздел</a>
            </div>

        </body>
    </html>

Файл: templates/footer.php

Подвал нашего сайта, обычно содержит копирайт компании которая создала сайт, телефоны, и нижнее меню

 <div style="float: right; clear: both;">
    
    <strong>&copy; 2012 Все права защищенны - 
    <a href="htp://ox2.ru/" target="__blank">Создание сайтов - OX2.ru</a></strong>
</div>
</body>
</html>

Файл: templates/main.php - Главная страница

<h1>Главная страница сайта ox2.ru</h1>
<p>Сайт в разработке</p>

Файл: templates/about.php - Страница о компании

<h1>О компании ox2.ru</h1>
    <p>текст еще не написан</p>

Файл: templates/ox2.php - Страница Почему OX2

<h1>Преимущества ox2.ru</h1>
<p>Мы умеем делать хорошие сайты и интернет-магазины )) </p>

Скачать исходник

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

Как уже говорилось в предыдущих уроках, при создании интернет магазина или интернет сайта, одним из самых важных показателей является движок. Особенно если стоимость интернет магазина не самая низкая. Он нужен не только для того, чтобы была возможность подключения сайта к системе управления контентом (cms), но и для правильной организации работы сайта.

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

Эдуард [27.01.2016]

Комментарий:
Доброго времени суток, подскажите пожалуйста почему в templates/main.php
не отрабатывает php код?
Html работает а php не выполняется

Сергей [20.03.2015]

Комментарий:
Спасибо за урок. Поможет в будущем. Сейчас изучаю теорию и ваши уроки помогают осмыслить многое в построение сайта.

Михей [11.03.2015]

Комментарий:
Мне кажется с геттайтл не работает....

Павел [23.01.2015]

Комментарий:
Все супер. Учусь по вашим урокам. Спасибо за знания, которые дарите людям :)
Я только начал изучать работу с классами...До этого мог писать корявый код, который был разбросан по всем файлам.
Сделал простенький движок по вашему уроку, но решил усложнить для себя задание и сразу впал в ступор. Вот к примеру я хочу сделать боковую колонку. И в ней будет меню, а еще какие-нить виджеты самописные(календарь,форма входа,что угодно). Как мне организовать эту работу через классы?

Заполните все поля

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

Ваше имя

Комментарий