Вариант 2
Отличие этого варианта отпредыдущего в том, что:
Программа читает файл инициализации галереи.
В каждой строке такая конструкция (так надо заполнять файл для этого варианта!): 1.jpg|Моя первая фотография rt.jpg|моя фотография rt.jpg где символ "|" - это разделитель между описанием и именем файла картинки.
Как видно, в этом варианте надо писать в файле имя файла картинки с расширением. Если это вам это очень мешает, то можете переделать так, чтобы было в файле только имя, а расширение определялось бы автоматически, основываясь на первом примере.
Алгоритм такого варианта будет определить имя картинки, считать имена файлов в папке с файлами, обрезая у имен файлов расширения, находим нужный, сравнивая каждый раз с тем, что взяли из файла. Именно совпавший и будет искомым.
Далее программа, создав массив из имен и описаний картинок, определяет, на какой странице галереи клиент находится и выводит ему соответственно ту или иную страницу.
Сам движок галереи остается тем же, как вы наверное заметили.
Изменяются некоторые его части. Вот сам код:
<html> <head> <TITLE>Photo-galery</TITLE> <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=Windows-1251"> <LINK REL=STYLESHEET TYPE="text/css" href="/style.css">
</head> <body leftmargin=0 topmargin=0 marginwidth="0" marginheight="0">
<table width=650 cellspacing=0 cellpadding=5 border=0 cols=2><tr><td> <div align="center"> <br> <p align="center" class="zag-main">Картинная галерея.</p> <? // Пишем переменные, которые зависят от Вас // $scrpic=10; // максимальное кол-во фоток на странице$big='../pic/big_regats/'; // путь к большим картинкам $small='../pic/small_regats/'; // путь к малым картинкам $ini=$DOCUMENT_ROOT.'/avrora/pic/read/read_regats1.ini'; // путь к файлу с текстами к картинкам // //В данном случае, файл строится так: строка с названием картинки (без расширения файла) //затем строка с подписью к картинке //затем название следующей картинки и так далее. // //Например: //1|Моя первая фотография //rt|моя фотография rt.jpg //.... и так до последней картинки. Если подписи к картинке нет, то надо оставлять пустую строку. // // $kav="'"; // одинарные кавычки пригодятся нам потом в таком виде // для отображения в браузере в яваскрипте. Там необходимо иметь оба вида кавычек, // а для php надо еще поставить выводимое выражение в кавычки. $podp='увеличить'; // надпись под картинкой, // побуждающая клиента нажать на картинку для увеличения // $style_zag2='zag2-main'; // стили текста на странице $style_osn='osn-main'; // стили текста на странице $style_link='link'; // стили текста на странице // // //сама программа $text=file($ini); // читаем файл с подписями к картинкам в массив $text for ($i=0; $si<sizeof($text); $i++) { // читаем файл ини и сохраняем имена картинок. $si=$i+1; $string=explode("|",$text[$i]); $pic[$si]=$string[0]; // присваиваем текущему элементу массива с именами файлов имя текущего файла $description[$si]=$string[1]; }
$maxpic=count($pic); // сколько файлов в папке с малыми картинками
if ($begin=="") { // если на страницу зашли впервые, то $begin присваеваем 1
$begin=1; }$end=$begin+$scrpic-1; // $end - номер последней картинки на странице if ($end>$maxpic) { // если последний номер на странице больше кол-во картинок в папке, // то он равен последнему $end=$maxpic; } $beginrew=$begin-$scrpic; // при переходе назад, начинаем показывать картинки с номера, //равному "первый номер текущей страницы минус кол-во картинок на странице" $beginfw=$begin+$scrpic; // при переходе вперед, начинаем показывать картинки с номера, //равному "первый номер текущей страницы плюс кол-во картинок на странице" $hrefrew='<a href='.$PHP_SELF.'?begin='.$beginrew.' class='.$style_zag2.'>назад</a>'; // создаем ссылку "назад" $hreffw='<a href='.$PHP_SELF.'?begin='.$beginfw.' class='.$style_zag2.'>вперед</a>'; // создаем ссылку "вперед" $navig=$hrefrew.' || '.$hreffw; // ставим между ссылками "назад-вперед" символ "||" if ($beginrew<=0) { // если мы на первой странице, то ссылка назад не нужна // $hrefrew='<a href='.$PHP_SELF.'?begin='.$beginrew.' class='.$style_zag2.'>назад</a>'; $navig=$hreffw; } if ($beginfw>$maxpic) { // если мы на последней странице, то ссылка вперед не нужна // $hreffw='<a href='.$PHP_SELF.'?begin='.$beginfw.' class='.$style_zag2.'>вперед</a>'; $navig=$hrefrew; } // вывод на экран номеров страниц галереи $scrmax=ceil($maxpic/$scrpic); // вычисляем, сколько страниц с картинками for ($scr=1; $scr<=$scrmax; $scr++) { // начиная с первого номера до кол-ва страниц галереи $beginsrc=($scr-1)*$scrpic+1; // вычисляем номер картинки, // с которого будут выводиться картинки на странице if ($beginsrc==$begin) { // если страница текущая, // то ее номер выводим в виде простого текста, а не ссылки echo ' <span class='.$style_zag2.'>'.$scr.'</span> '; } else { // если страница не текущая, то выводим ссылку на нее и передаем параметры: // номер картинки, с которой начать выводить на этой странице echo ' <a href='.$PHP_SELF.'?begin='.$beginsrc.' class='.$style_zag2.'> '.$scr.' </a> '; } } echo '<p align=center class='.$style_zag2.'>'.$navig.'</p>'; // вывод на экран навигации "вперед-назад"
for ($i=$begin; $i<=$end; $i++) { // начиная с первой картинки на странице, // перебираем картинки вплоть до последней на странице $descript=$description[$i]; $photo=$big.$pic[$i]; // присваиваем $photo имя малого файла+путь к папке с большими картинками $size=getimagesize($photo); // читаем информацию о картинке $width=$size[0]+40; // получаем ширину картинки и + 40 (свободное поле вокруг картинки) $height=$size[1]+40; // получаем высоту картинки и + 40 (свободное поле вокруг картинки) $sxp=$size[2]; // получаем тип (расширение файла картинки) $smphoto=$small.$pic[$i]; // присваиваем $smphoto имя малого файла+путь к папке с малыми картинками $smsize=getimagesize($smphoto); // читаем информацию о картинке $smwidth=$smsize[0]; // получаем ширину картинки $smheight=$smsize[1]; // получаем высоту картинки $smexp=$smsize[2]; // получаем тип (расширение файла картинки) $winstat='toolbar=0,location=0,directories=0,status=0,menubar=0,scrollbars=1,resizable=1,width='.$width.',height='.$height; // статус открываемого окна с большой картинкой
// выводим таблицу галереи. // если номер картинки четный, то картинка слева, а описание справа и наоборот // делаем это для неужасного внешнего вида галереи // Вы можете разположить картинки как Вам заблагорассудится. // итак: ?><table width=420 cellspacing=0 cellpadding=5 border=0 cols=2><tr><? // выводим одинаковую часть кода таблицы дл ячейки картинки //Далее выводим картинки в ячейках таблиц с описаниями. Делаем все с "предпросмотром" //"предпросмотр предпочтителен, потому что не надо сразу грузить большие файлы, //а клиент если захочет, сам загрузит то, что его заинтересовало в новых окнах. // if ($i/2==ceil($i/2)) { // если номер картинки на странице четный echo '<td width=210 rowspan=2><p align=right CLASS='.$style_osn.'>'.$descript.'</p ></td><td hight='.($smheight+2).'><table width=202 cellspacing=1 cellpadding=0 border=0 bgcolor="#000000" border=0><tr><td><A HREF='.$photo.' target="'.$i.'" onclick="window.open('.$kav.$photo.$kav.', '.$kav.$i.$kav.', '.$kav.$winstat.$kav.');"> <IMG SRC='.$smphoto.' WIDTH='.$smwidth.' HEIGHT='.$smheight.' BORDER=0 alt="увеличить"></A></td></tr></table ></td></tr><tr><td valign=top ><center><A HREF='.$photo.' target="'.$i.'" onclick="window.open('.$kav.$photo.$kav.', '.$kav.$i.$kav.', '.$kav.$winstat.$kav.');" CLASS='.$style_link.'>'.$podp.'</a></center></td></tr></table>'; } else { // если номер картинки нечетный echo '<td align=left><table width=202 cellspacing=1 cellpadding=0 border=0 bgcolor="#000000"><tr><td hight='.($smheight+2).'><A HREF='.$photo.' target="'.$i.'" onclick="window.open('.$kav.$photo.$kav.', '.$kav.$i.$kav.', '.$kav.$winstat.$kav.');"><IMG SRC='.$smphoto.' WIDTH='.$smwidth.' HEIGHT='.$smheight.' BORDER=0 alt="увеличить"></A></td></tr></table></td><td width=210 rowspan=2><p align=left CLASS='.$style_osn.'>'.$descript.'</p ></td></tr><tr><td valign=top ><center><A HREF='.$photo.' target="'.$i.'" onclick="window.open('.$kav.$photo.$kav.', '.$kav.$i.$kav.', '.$kav.$winstat.$kav.');" CLASS='.$style_link.'>'.$podp.'</a></center></td></tr></table>'; } } // вывод на экран "вперед-назад" echo '<p align=center class='.$style_zag2.'>'.$navig.'</p>'; // вывод на экран номеров страниц echo '<div align=center>'; for ($scr=1; $scr<=$scrmax; $scr++) { $beginsrc=($scr-1)*$scrpic+1; if ($beginsrc==$begin) { echo ' <span class='.$style_zag2.'>'.$scr.'</span> '; } else { echo ' <a href='.$PHP_SELF.'?begin='.$beginsrc.' class='.$style_zag2.'> '.$scr.' </a> '; } }
?>
</div><p> </td></tr></table> </body> </html>
Программа администрирования та же, что и в варианте 1.
1 2 3
8 8 8
| |