Реализация основных функций CMS
175
// Проверяем, является ли раздел подразделом
$qur2 = «select * from cats where id=$number»;
$res2 = mysql_query($qur2) ;
$row2 = mysql_fetch_array($res2);
// Получаем значение поля root и анализируем его
$root = $row2[root];
if ($root > -1) {
// Наш раздел является подразделом, поэтому нужно
// установить переменные:
// $orig — номер исходного раздела
// $number — номер корневого раздела
// $sub=l — признак подраздела
$orig=$number; $number=$root; $sub=l;
}
}
После того как мы выполнили подготовительные действия, мы можем с
чистой совестью вывести корневые (родительские) разделы. Это можно сделать
с помощью следующего кода:
while ($row = mysql_fetch^array($r)) {
$menu = $menu . «
href=index.php?p=show&id=$row[id]>$row[title]«;
// Далее будет продолжение кода
Данный код выводит ссылки первого вида:
название_раздела а>
Но одним выводом родительских разделов мы не ограничимся. Нужно
проанализировать переменную $is_ext_menu. Ведь, возможно, пользователь
открыл страницу сайта, и теперь нам нужно вывести иерархическое меню, т. е.
отобразить список страниц раздела/подраздела и название самого
раздела/подраздела.
176
Часть IV. Разработка собственной CMS
Все сказанное реализуется с помощью следующего кода:
// Если нужно раскрыть меню
if ($is_ext_menu ==1) {
if ($row[id]==$number) {
// Если перед нами подраздел
if ($sub==l) {
// Выводим имя подраздела
$qur3 = «select * from cats where id=$orig»;
$res3 = mysql_query($qur3);
$row3 — mysql_fetch_array($res3);
$menu = $menu .
href=index.php?p=show&id=$row[id]>$row3[title]«;
}
// Получаем и выводим список страниц раздела
if ($sub==l) $number=$orig;
$qur = «select * from pages where cat=$number»;
$res = mysql__query ($q4ur) ;
// Выводим список страниц
while ($row = mysql_fetch__array($res) )
$menu = $menu .
«
    
href=index.php?p=showpage&id=$row[id]>$row[header]«;
}
} //if ($is_ext_menu == 1)
Глава 14. Реализация основных функций CMS 177
В листинге 14.4 представлен полный листинг файла menu.php. Чтобы листинг
был менее громоздким, я удалил все комментарии, которые были приведены
ранее.
$q = «select * from cats where root—l»;
$r = mysql_query($q);
$is_ext_menu = 0;
if ($p===»showpage») {
$qur = «select * from pages where id=$id»;
$res = @mysql_query($qur);
$row = @mysql_fetch_array($res);
$number = $row[cat];
$is_ext_menu = 1;
$sub = 0;
$qur2 = «select * from cats where id=$number»;
$res2 = mysql_query($jqur2);
$row2 = mysql_fetch_array($res2);
$root = $row2[root];
if ($root > -1) { $orig=$number; $number=$root; $sub=l; }
}
while ($row = mysql_fetch_array($r)) {
$menu = $menu . «
href=index.php?p=show&id=$row[id]>$row[title]«;
178
Часть IV. Разработка собственной CMS
if ($is_ext_menu ==1) {
if ($row[id]==$number) {
if ($sub—1) {
$qur3 = «select * from cats where id=$orig»;
$res3 = mysql_query($qur3);
$row3 = mysql_fetch__array($res3);
href=index.php?p=show&id=$row[id]>$row3[title]«;
}
if ($sub==l) $number=$orig;
$qur = «select * from pages where cat=$number»;
$res = mysql__query($qur);
while ($row = mysql_fetch_array($res))
$menu = $menu .
«
    
$row[header]«;
}
} // if ($is_ext__menu == 1)
}
?>
Примечание
Данный листинг вы найдете в каталоге Glava_14.
Теперь нам нужно изменить файл index.php. Отройте его и найдите оператор
присваивания:
$menu = «скоро появится меню
Пункт 1
Пункт 2
Пункт 3″;
Глава 14. Реализация основных функций CMS
179
Замените его оператором include:
include «menu.php»;
Запустите index.php. Наша CMS уже отображает корневые разделы меню
(рис. 14.9), но еще не готова к выводу содержимого раздела/страницы —
вместо этого отображается только строка { page }.
Рис. 14.9. CMS пока не готова к выводу содержимого раздела/страницы
14.5.3. Вывод содержимого раздела и страницы
Наш index.php должен реагировать на значения ‘show и ‘showpage·
переменной $р.
5th Фев 2011
|
Теги:
|