Этот курс ( Практикум по разработке CMS ) создавался, когда у PHP была версия 5.3 или 5.4. Со временем какие-то функции PHP устаревают (mysql, each), какие-то начинают работать по-другому (empty). Пожалуйста, следите за изменениями в PHP по сайту php.net! |
Обзор технологий. Начало кодирования
Введение
CMS – content management system, обычно переводится как "система управления содержимым (сайта)". Возможно, вы слышали о таких широко распросранённых CMS, как Joomla, Битрикс. Создав собственную CMS, вы сможете понять, как работают другие, научитесь видеть их внутренние достоинства и недостатки. А несложные сайты (вроде блога с комментариями) вы сможете создавать прямо на своей CMS, которая позволит вам легко редактировать содержимое сайта, делать резервные копии, переносить файлы сайта и базу данных (БД) с одного хостинга на другой.
Для работы вам понадобятся следующие инструменты:
- текстовый редактор с подсветкой синтаксиса: Notepad++ (на Windows), Kate или Geany (на Linux, MaxOS);
- Mysql-сервер;
- веб-сервер Apache с подключенным в виде модуля PHP;
- phpMyAdmin (http://www.phpmyadmin.net/) для создания таблиц mysql;
- браузер Firefox.
Вам не нужна будет громоздкая система разработки (IDE), весь код вашей CMS не превысит 100 килобайт (несколько файлов php, css, js).
Веб-сервер и mysql-сервер вы можете установить сразу, используя для Windows такой дистрибутив, как USBWebserver V8 (http://www.usbwebserver.net/en/download.php), а для Linux набор пакетов LAMP (MAMP, XAMP для MacOS). Если вы не сможете это сделать самостоятельно, используя компьютер и Интернет, вам, скорее всего, пока рано изучать данный курс.
Курс рассчитан на людей, знакомых со спецификациями HTML5, CSS2 и с основами программирования на PHP, Javascript, с работой в phpMyAdmin и составлением простых sql-запросов. Нужны также будут начальные знания английского языка – чтобы с помощью словаря разбирать, что значит "affected rows", "deprecated", или "alter table files add primary key ...".
HTML
В мире веб существуют сотни CMS, фреймворков и прочих "библиотек", и число их постоянно растёт. Потому что каждый человек, создавший хоть один сайт, обязательно задумается: нельзя ли в следующий раз избежать многочисленных трудов и создать новый сайт, взяв из старого сайта нечто существенное и слегка подправив?
Что общего у блога, сайта доставки суши и сайта школьного расписания? Обнаружив это общее, мы сможем значительно ускорить создание следующего сайта (например, landing-page для продажи воздушных шариков).
Любой сайт состоит из html-страниц, это лежит на поверхности. Значит, общим будет некоторый набор html-тэгов. Большинство из них повторяются от одного сайта к другому: DOCTYPE, title, charset, link, script... То есть можно смело взять такой кусок текста (листинг 1.1 пример 1.1):
<!DOCTYPE html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <title>Астрология</title> <link rel="stylesheet" href="site.css" type="text/css"> <script type="text/javascript" src="site.js"></script> </head> <body> <p><img src="files/img1.jpg" />Гадание по кофейной гуще</p> <p><img src="files/img2.jpg" />Оптом, в розницу и на экспорт</p> </body>Листинг 1.1.
– и использовать его для создания любой страницы любого сайта, подставляя вместо слов "Астрология" и "Гадание по кофейной гуще" другие слова (и копируя на место картинок img1.jpg и img2.jpg другие файлы). В этом случае каждая страница сайта будет реально существующим html-файлом, и вы сможете менять этот текст, редактировать его. То есть это уже будет что-то вроде системы управления содержанием.
Но работать в такой системе не очень удобно:
- править тексты вы сможете только в текстовом редакторе на своём компьютере – в Блокноте (или Notepad++);
- править текст надо будет очень аккуратно, чтобы не испортить окружающие html-тэги;
- чтобы изменить текст, вам нужно будет скачать нужный html-файл к себе на комьютер, отредактировать его, а потом загрузить обратно на сервер по ftp-протоколу (то есть не через браузер, а с помощью отдельной специальной программы).
Идея CMS как раз в том и состоит, чтобы вы могли менять содержимое своего сайта, используя только браузер, без дополнительных программ и сложных манипуляций с файлами.
Здесь возникает две разные задачи:
- Доступ к содержимому сервера через браузер.
- Удобное изменение текстов сайта без опасности повредить html-код.
Для загрузки файлов на сервер используют html-формы. Браузер передаёт с помощью такой формы запрос, к которому присоединяет выбранный вами (на вашем компьютере) файл. Запрос в соответствии с протоколом HTTP должен быть "POST". Сервер без помощи специальных языков программирования (php, java, python) не сможет поместить отправленный вами файл в нужную папку.
Теоретически существует ещё возможность отправлять на веб-сервер файлы методом PUT (которые, например, http-сервер Nginx может получать и распеределять по папкам самостоятельно, без использования Php), но такой возможности (отправлять файлы методом PUT) пока нет у самих html-форм, поэтому мы будем исходить только из использования метода POST.
Это значит, что у работы на "чистом html" нет перспектив и нам сразу же понадобится php. А чтобы соединять разные тексты с одним и тем же повторяющимся фрагментом html, нужно будет хранить тексты отдельно от фрагментов html (называемых обычно шаблонами). Хранить тексты можно просто в отдельных файлах, но база данных (Mysql) намного удобнее.