Основной файл CMS — index.php
Первым делом нужно разобраться, что будет делать этот файл. А делать он
будет вот что:
1. Подключать файл настроек.
2. Подключать шаблонизатор.
3. Устанавливать соединение с сервером MySQL, используя параметры
доступа из файла настроек.
4. Выводить содержимое выбранной пользователем страницы (точнее,
передавать содержимое страницы шаблонизатору, который управляет
выводом, но сейчас это не важно).
Первые три пункта ясны. Осталось определиться, как сценарий узнает, какую
страницу выбрал пользователь. Я предлагаю использовать параметр-
переменную $р, которая будет указывать тип страницы, и параметр $id,
который будет содержать идентификатор выводимой страницы. В итоге URL в
строке браузера будет выглядеть так:
http://cafiT/index.php?p=Tnn&id=4n^o
Если переменная $р не задана, то будет выведена главная страница сайта.
В этом случае URL будет выглядеть так:
http://caiiT/index.php
Да, можно было бы упростить нашу CMS и передавать с помощью
переменной $р сразу идентификатор страницы. Но это не совсем удобно. Представим,
что нам нужно отобразить страницы разных типов и для каждого типа
использовать свое оформление. Или что нам нужно вывести информацию не из
базы данных, а из HTML-файла или с другого сервера.
Глава 14. Реализация основных функций CMS
165
Вот в этом случае нам и понадобится переменная $р, которая будет
указывать:
$p=’db’; // Вывод страницы из базы данных
$p=’file’; // Вывод страницы из HTML-файла
$р=’server1; // Вывод страницы с сервера
Теперь мы можем написать index.php. Первоначальный его вариант
представлен в листинге 14.3 (обратите внимание на комментарии!).
// Подключаем файл настроек
require «config.php»;
// Подключаемся к серверу БД
mysql_connect($dbhost,$dbuser,$dbpasswd);
mysql_select_db($dbname);
// Подключаем шаблонизатор
require «template.php»;
// Открываем шаблон
$tpl->get_tpl(‘page.tpl·);
// Устанавливаем переменные шаблона
$tpl->set_value(‘TITLE1,$title);
$tpl->set_value(‘DESCRIPTION’,$description);
$tpl->set_value(‘INFO’,$info);
// Меню пока не будет
$menu = «скоро появится меню
Пункт 1
Пункт 2
Пункт 3″;
166
Часть IV. Разработка собственной CMS
$tpl->set_value(‘MENU1,$menu);
// Переменная $р не установлена — нужно вывести главную страницу
if (!isset($p)) {
$page = «Главная страница»;
$tpl->set_value(‘PAGE’,$page);
}
// Запускаем парсинг шаблона
$tpl->tpl_j>arse () ;
// Выводим HTML
echo $tpl->html;
?>
Рис. 14.1. Фундамент нашей CMS
Глава 14. Реализация основных функций CMS
167
Чтобы проверить, как работает index.php, нужно скопировать файлы
index.php, template.php, config.php и page.tpl в какой-нибудь каталог сервера и
ввести в строке адреса браузера следующий URL:
11Пр://сервер/каталог/тс1ех.рЬр
С одной стороны, наш index.php ничего особенного не делает (см. рис. 14.1),
но, с другой стороны, вас можно поздравить — вы заложили фундамент
своей CMS. Теперь вам осталось малость— сформировать меню по страницам
сайта, хранящимся в базе данных, и вывести одну из страниц как
переменную шаблона { page }.
14.4. Проектирование базы данных
Наша CMS будет хранить информацию в трех таблицах:
О static — статическая информация, например: главная страница, контакты
и т. д.;
? cats — таблица категорий, т. е. разделов сайта. По этой таблице будет
формироваться иерархическое меню сайта;
О pages — таблица страниц, содержит страницы сайта.
14.4.1. Таблица static
Таблица static — самая простая. Структура данной таблицы изображена на
рис. 14.2. Как видно из рисунка, таблица содержит всего два поля— id
(идентификатор страницы) и content (содержимое страницы).
Рис. 14.2. Структура таблицы static
1тобы создать данную таблицу, нужно выполнить следующий SQL-запрос:
CREATE TABLE ‘static1 (
ficT varchar(15) NOT NULL,
168
Часть IV. Разработка собственной CMS
‘content* text,
PRIMARY KEY (‘id’)
) DEFAULT CHARSET=cpl251;
Примечание
Данный SQL-запрос можно ввести в программе phpMyAdmin, которую мы
рассмотрим в приложении 4.
5th Фев 2011
|
Теги:
|