На одном из форумов мне задали вопрос как сделать навигацию по страницам новостей для статического сайта, т.е. сайта полностью сделанного на html. Для такого сайта вариант, на мой вщгляд только один: читать файлы из директории (файлы в имени должны иметь цифру-страницу) и потом выводить. Либо сортировать по дате создания. Чтож приступим к написанию.
<?php
$conf_array = array(
'news' =>
array('filepath'=>'themes/','type'=>'time','ext'=>'php','pref'=>''),
'catalog'=>
array('filepath'=>'rtop/','type'=>'name','ext'=>'php','pref'=>'cat'),
//файлы в диррректории cat1.html,cat2.html т.д.
);
//Массив конфигов дирректорий
//и типа сортировки имя или дата последнего изменения
//префикс нужен для сортировки исключительно по имени.
$cat = $_GET['cat'];
//Элемент массива GET соответствующий ключу массива $conf_array
if($cat)
{
if(isset($conf_array[$cat])){
//Проверяем существует ли такой элемент массива
if(file_exists($conf_array[$cat]['filepath']))
{
$dir = opendir($conf_array[$cat]['filepath']);
//Открываем дирректорию
while(($file = readdir($dir))!==false)
//В цикле читаем дирректорию получая
//все имена файлов в данной дирректории
{
$ext = explode(".",$file);
$ext = $ext[count($ext)-1]; //ext - расширение файла
if(!is_dir($conf_array[$cat]['filepath'].$file) &&
$ext = $conf_array[$cat]['ext'])
{//Проверяем не дирректория ли файл и расширение дозволено ли
if($conf_array[$cat]['type'] == 'time'){
//Какой тип сортировки в зависимости от этого такие ключи массива
$pages[filemtime($conf_array[$cat]['filepath'].$file)] = $conf_array[$cat]['filepath'].$file;
}
else
{
$str = str_replace($ext,'',$file);
$str = str_replace($conf_array[$cat]['ext'],'',$file);
//Получаем числа-номера страниц. В дальнейшем при переборке
//и выводе можно не плюсовать переменную а использовать их
$pages[$str] = $conf_array[$cat]['filepath'].$file;
}
}
}
ksort($pages); //Сортируем массив в обратном порядке по ключам
$i = 0;
foreach($pages as $k=>$v) //Перебираем получившийся массив, и выводим ссылки
{
$i++;
if(basename($_SERVER['PHP_SELF']) != $file)
echo '<a href="',$v,'?cat='.$cat.'">',$i,'</a> ';
else echo $i.' ';
}
}
else{
echo 'Произошла ошибка. Указанная дирректория не существует.';
}
}
else {
echo 'Произошла ошибка. Запрошенная категория не существует.';
}
}
?>
|
Представленная система далеко не идеальна и выполнена на скорую руку. Вы можете по своему модернизировать ее и привести в комментариях тут примеры как вы реализовывали это, дабы другие могли получить более широкое представление. Единственный плюс данной системы для новичка в том что она затрагивает не только работу с файлами, но и работу с массивами, которую, к сожалению, пока я не описывал у себя на ресурсе.