Отправляет email-рассылки с помощью сервиса Sendsay

Программистские записки

  Все выпуски  

Программистские записки Переход между страницами для статического сайта.


На одном из форумов мне задали вопрос как сделать навигацию по страницам новостей для статического сайта, т.е. сайта полностью сделанного на 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>& nbsp;';

                else echo 
$i.'&nbsp;';

            }

        }

        else{

                echo 
'Произошла ошибка. Указанная дирректория не существует.';

        }

    }

    else {

        echo 
'Произошла ошибка. Запрошенная категория не существует.';

    }

}

?>

Представленная система далеко не идеальна и выполнена на скорую руку. Вы можете по своему модернизировать ее и привести в комментариях тут примеры как вы реализовывали это, дабы другие могли получить более широкое представление. Единственный плюс данной системы для новичка в том что она затрагивает не только работу с файлами, но и работу с массивами, которую, к сожалению, пока я не описывал у себя на ресурсе.

Здесь можно оставить свои комментарии. Выпуск опубликован при помощи плагина subscribe.ru and blogspot.com cross poster


В избранное