parser

Написать ответ на текущее сообщение

 

 
   команды управления поиском

Наипростейшая галерея

off 02.07.2007 15:23

Дело было вечером, делать было нечего...
Возникла задача переноса галереи http://gallery.sf.net/ первой версии без использовании БД на новый хостинг.
И как всегда приходит осмысление "а оно мне надо?!".
Имеется ввиду функционал, который реально задействован/или не задействован на этом движке.
Из всех её функций собственно нужен был только показ картинок.
Да, там были счётчики просмотров, и были комментарии, и ещё конечно были подписи к фотографиям и для всего этого была ещё административная часть.
Ни в коей мере не противопоставляя свои способности и знания parser3 этой галерее (тем более что уже давно существует 2-я версия), я решил написать простейший скрипт, который смог бы решить мои задачи: показывать аля категории (директории), превью фото и сами фото.
Учитывая, что у меня уже есть много фото подготовленных и отсортированных по директориям.

Итак:
1) у вас есть фото подготовленные для показа в web вида: xxx.sized.jpg
2) К ним вы сделали превью: xxx.thumb.jpg
3) Положили к себе на сайт в каталог /gallery/albums/myfirstalbum
название директории myfirstalbum - это название альбома
Таких альбомов (или категорий/директорий разумеется может быть несколько)
4) сделали cover.jpg обложку к альбому, которую тоже положили в тотже каталог к вашим фото в альбоме
5) В каждый каталог-альбом кладёте файл index.html:
^use[/gallery/index.html]
^gallery[]
6) В каталог /gallery/ кладёте сценарий-галереи (он тоже называется index.html):
@main[]
#####################################################################################
# index.html - наипростейшая галерея без употребления БД
# 1. находит в директориях файл index.html и cover.jpg и считает их папками с фото
# 2. отображает cover.jpg с сылкой на соответсвующий index.html
# 3. ищет файлы вида xxx.thumb.jpg и считает их превьюшками фото вида xxx.sized.jpg
# 4. отображает превьюшки в таблице из $tblcolumn колонок
#####################################################################################
^gallery[]

@gallery[]
$tblcolumn(5)
# вывод заголовка страницы
$header[^file::load[binary;/gallery/header.p]] 
^untaint{$header.text}
$path_albums[albums/] 
$list[^file:list[$path_albums]]
<center /><div>
^list.menu{ 
^if(-d "${path_albums}$list.name"){ 
# если внутри каталога есть файл index.html 
$coverindex[${path_albums}${list.name}/index.html]  
^if(-f "$coverindex"){
$covername[${path_albums}${list.name}/cover.jpg]
^if(-f "$covername"){
Галерея $list.name <br />
<a href="$coverindex"><img src="$covername" border="1"></img></a><br /><br />
}
}
}{ 
# Это файл $list.name
} 
}
# end of menu
</div>
######################################################################
# отображение thumb картинок
$currentpath[^file:dirname[index.html]/]
$thumb_image[^file:list[$currentpath;\.thumb\.jpg^$]]
$tblcount($thumb_image)
<center /><div>
<table border="0" cellpadding="10" cellspacing="10">
^while($tblcount>0){
<tr>
^for[icolumn](1;$tblcolumn){
$tblcount($tblcount-1)
^if($tblcount>=0){
$cut_name[$thumb_image.name]
$cut_name[^cut_name.trim[end;thumb.jpg]]
$sized_name[${cut_name}.sized.jpg]
<td align="center">
<a href="${currentpath}$sized_name"><img src="${currentpath}${thumb_image.name}" border="5"></img></a>
</td>
^thumb_image.offset(1)
}{
<td>&nbsp^;</td>
}
}
</tr>
}
# end of while
</table>
</div>
# вывод подвала страницы
$footer[^file::load[binary;/gallery/footer.p]] 
^untaint{$footer.text}
P.S. подразумевается что у вас уже настроен parser3 и web-сервер для работы с ним
и как видимо понятно /gallery/ является директорией для вашей галерии
в начале и в конце сценария-галереи выводятся заголовок и подвал страницы из файлов header.p и footer.p - не забудьте их создать!