Сначала реализуем вывод содержимого раздела. Откройте
index.php и найдите следующий фрагмент кода:
xf (!isset($p)) {
$page = «Главная страница»;
$tpl->set_value(·PAGE·,$page);
}
180 Часть IV. Разработка собственной CMS
Сразу после него добавьте реакцию на значение ‘show переменной $р
(листинг 14.5).
elseif($p==»show») {
// Выводим содержимое раздела
// Удаляем из $id все, что может представлять опасность
//В последующих главах вы узнаете, зачем мы это сделали
$id = @htmlspecialchars($id);
$id = @strip_tags($id);
// Ищем подразделы, т. е. разделы, у которых поле root
// равно номеру выводимого раздела
$query = «select * from cats where root=$id»;
$result = mysql_query($query);
i f (mysql_num_rows ($ result) ==0) {
// Подразделов нет, выводим страницы
$q2 = «select * from cats where id=$id»;
$res2 = mysql__query($q2) ;
$q3 = «select * from cats where id=$id»;
$res3 = mysql_query($q3);
$row3 = mysql__fetch_array($res3);
$info = $row3[txt];
$page = $page . «
«;
if (mysql_num_rows ($res2)>0) { $row2 = mysql_fetch_array($res2); $page = $page . «$row2[title] «; Гпава 14. Реализация основных функций CMS 181 $q = «select * from pages where cat=$id»; $res = mysql_query($q); while ($row = mysql_fetch_array($res)) $page = $page . «
$row [header] «; // Поле info — это информация о разделе $page = $page . « |
$info |
«;
}
else $page = $page . «HeT такого раздела!«;
}
// Есть подразделы, выводим их
while ($row = mysql_fetch_array($result))
$page = $page . «
$row[title]«;
}
Приведенный код проверяет наличие у выводимого раздела подразделов.
Если подразделов нет, то выводится список страниц раздела и информация о
разделе. Если же подразделы есть, то выводится только список подразделов.
Выводить информацию о разделе я не стал, чтобы не усложнять код. В
случае необходимости вы можете добавить эту возможность самостоятельно. На
Рис. 14.10 показано, как наша CMS выводит содержимое раздела— список
страниц и информацию о разделе.
Теперь напишем код вывода страницы. По сравнению с кодом вывода
раздела он будет довольно прост. Заодно мы реализуем функцию GotoTop, доба-
вив ссылки-якоря для перехода вниз и вверх документа. Нужный нам код
представлен в листинге 14.6. Данный код нужно добавить сразу после
последней закрывающей фигурной скобки сценария index.php.
182
Часть IV. Разработка собственной CMS
Рис. 14.10. Вывод раздела сайта
elseif ($p==»showpageM) {
$id = @htmlspecialchars($id);
$id = @strip_tags($id);
$q = «select * from pages where id=$id»;
$r = mysql__query($q);
if (mysql_num_rows ($r) >0) {
$row = mysql__fetch__array($r);
// Выводим название страницы
$page = $page . «$row[h€>ader]M;
// Выводим ссылку Вниз
$page = $page .
«
«;
Глава 14. Реализация основных функций CMS 183
// Выводим содержимое страницы
$раде = $раде . «
$row[content]«;
// Выводим ссылку на версию для печати
$раде = $раде . «
href=print.php?page=$id>Bepo*H для печатиа>«;
// Выводим ссылку Вверх
$раде = $раде . «
HaBepx
}
else $page = $раде . «HeT такой страницы!«;
}
$tpl->set_value(‘PAGE’,$page);
Зак ?ял
Рис. 14.11. Меню готово
184
Часть IV. Разработка собственной CMS
Последняя строка необходима для установки переменной шаблона { page } по
переменной сценария $раде. Результат вывода страницы представлен на
рис. 14.11. Как видно из этого рисунка, наш сценарий раскрыл меню и
отобразил список страниц раздела.
14.6. Подведем итоги проделанной работы
Я могу вас поздравить: львиная доля работы выполнена. Наша CMS уже
умеет выводить разделы, подразделы и страницы сайта. Однако не стоит
радоваться раньше времени. Нам предстоит еще много чего сделать: нужно
реализовать дополнительные функции CMS, панель администрирования и
защитить нашу систему от атак злоумышленников.
Полный листинг файла index.php я приводить не стану— вы его найдете на
компакт-диске в каталоге Glava_14. Кроме этого файла в каталоге Glava_14
вы найдете следующие файлы:
? 14-3.php — листинг 14.3 — это наш первоначальный index.php, чтобы вы
убедились, что он работает;
? config.php — файл параметров CMS;
? menu.php — сценарий вывода меню;
? page.tpl — TPL-шаблон;
? template.php — шаблонизатор;
? db.sql — SQL-файл, создающий все необходимые таблицы и
заполняющий их первоначальной информацией.
5th Фев 2011
|
Теги:
|