Heute mal wieder ein kleiner Code-Schnipsel von mir. Und zwar ein Gallerie-Script ohne Nutzung einer Datenbank. Dafuer aber mit Hilfe meiner
Klasse directorylist.
Bei der Erstellung des Scripts waren mir folgende Punkte wichtig:
- Flexibilitaet
- Blaetterfunktion fuer Gallerie und Bilder
Das Endergebniss kann sich meiner Meinung nach wirklich sehen lassen, denn alle wichtigen Parameter sind einstellbar, wenn ich nicht versehentlich was vergessen haben sollte.
Es gibt lediglich 2 Voraussetzungen um dieses Script nutzen zu koennen:
Dies ist zum einen die bereits oben genannte Klasse und zum anderen eine bestimmte Verzeichnisstruktur.
Es muss ein Verzeichnis fuer die Bilder und eines fuer die Thumbnails geben. In diesen Verzeichnissen befinden sich die Unterverzeichnisse mit den Gallerien.
Beispiel:
|
Code:
|
galleries
|
|----- images
| |
| |----- Gallery1
| | |
| | |--- Pic1.jpg
| | |--- Pic2.jpg
| | |--- Pic3.jpg
| |
| |----- Gallery2
| |--- Pic1.jpg
| |--- Pic2.jpg
|
|----- thumbs
|
|----- Gallery1
| |
| |--- Pic1.jpg
| |--- Pic2.jpg
| |--- Pic3.jpg
|
|----- Gallery2
|--- Pic1.jpg
|--- Pic2.jpg
|
Folgende Konstanten steuern das Script:
- IMAGESPATH
Hiermit wird der Pfad zu dem Verzeichnis mit den Bildern eingestellt
- THUMBSPATH
THUMBSPATH stellt den Pfad zu den Thumbnails ein
- MAXIMAGESPERROW
Hier wird die maximale Anzahl an Bilder pro Reihe angegeben.
- MAXROWSPERPAGE
MAXROWSPERPAGE gibt die maximale Anzahl Reihen pro Seite an.
- SHOWPICCOUNT
SHOWPICCOUNT kann fuer kleinere Gallerien auf true gesetzt werden. Bei groesseren Gallerien empfehle ich hier auf jeden Fall false, denn ansonsten koennte das ganze Script ein wenig ausgebremst werden.
Die maximale Anzahl an Bildern pro Seite ist (logischerweise) MAXIMAGESPERROW*MAXROWSPERPAGE.
Ich hab, wie oben schon angesprochen, eine Blaetterfunktion fuer die Gallerie und auch fuer die Bilder eingebaut, sodass die Gallerie sich ueber mehrere Seiten erstrecken kann und man nach der Auswahl eines Bildes von Bild zu Bild wechseln kann.
Und nun zum Script:
gallery.php
|
PHP-Code:
|
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Image Galleries</title>
</head>
<body>
<?php
define("IMAGESPATH",'galleries/images');
define("THUMBSPATH",'galleries/thumbs');
define("MAXIMAGESPERROW",5);
define("MAXROWSPERPAGE",4);
define("SHOWPICCOUNT",false);
require("directorylist.class.php");
if (SHOWPICCOUNT==true)
{
$images=new directorylist(IMAGESPATH,true);
}
else
{
$images=new directorylist(IMAGESPATH,true,true);
}
if (!empty($_GET['gallery']))
{
if (!empty($_GET['image']))
{
if (SHOWPICCOUNT==false)
{
$images->subdirs[$_GET['gallery']-1]=new directorylist($images->subdirs[$_GET['gallery']-1]->name,true,true);
}
$name=explode("/",$images->subdirs[$_GET['gallery']-1]->name);
$name=$name[count($name)-1];
echo '<a href="gallery.php?gallery='.$_GET['gallery'].'"><b>'.$name.'</b></a>';
echo '<span style="margin-left:100px"><span style="margin-right:5px">';
if ($_GET['image']>1)
{
echo '<a href="gallery.php?gallery='.$_GET['gallery'].'&image='.($_GET['image']-1).'"><</a>';
}
else
{
echo '<';
}
echo '</span><span style="margin-left:5px">';
if ($_GET['image']<count($images->subdirs[$_GET['gallery']-1]->files))
{
echo '<a href="gallery.php?gallery='.$_GET['gallery'].'&image='.($_GET['image']+1).'">></a>';
}
else
{
echo '>';
}
echo '</span></span>';
echo '<a href="gallery.php">Back to the galleries</a><hr>';
echo '<img src="'.IMAGESPATH.'/'.$name.'/'.$images->subdirs[$_GET['gallery']-1]->files[$_GET['image']-1].'" alt="'.$images->subdirs[$_GET['gallery']-1]->files[$_GET['image']-1].'">';
}
else
{
if (!empty($_GET['page']))
{
$page=$_GET['page'];
}
else
{
$page=1;
}
$name=explode("/",$images->subdirs[$_GET['gallery']-1]->name);
$name=$name[count($name)-1];
echo '<b>'.$name.'</b>';
$thumbs=new directorylist(THUMBSPATH.'/'.$name,true,true);
$pages=ceil(count($thumbs->files)/(MAXIMAGESPERROW*MAXROWSPERPAGE));
echo '<span style="margin-left:100px"><span style="margin-right:5px">';
if ($page>1)
{
echo '<a href="gallery.php?gallery='.$_GET['gallery'].'&page='.($page-1).'"><</a>';
}
else
{
echo '<';
}
echo '</span><span style="margin-left:5px">';
if ($page<$pages)
{
echo '<a href="gallery.php?gallery='.$_GET['gallery'].'&page='.($page+1).'">></a>';
}
else
{
echo '>';
}
echo '</span></span>';
echo '<a href="gallery.php">Back to the galleries</a><hr>';
$x=0;
while ($x<MAXIMAGESPERROW*MAXROWSPERPAGE)
{
if (!isset($thumbs->files[$x+($page-1)*MAXIMAGESPERROW*MAXROWSPERPAGE]))
{
break;
}
echo '<a href="gallery.php?gallery='.$_GET['gallery'].'&image='.($x+($page-1)*MAXIMAGESPERROW*MAXROWSPERPAGE+1).'"><img style="border:none; margin:5px;" src="'.THUMBSPATH.'/'.$name.'/'.$thumbs->files[$x+($page-1)*MAXIMAGESPERROW*MAXROWSPERPAGE].'" alt="'.$thumbs->files[$x].'"></a>';
$x++;
if ($x%MAXIMAGESPERROW==0)
{
echo '';
}
}
unset($thumbs);
}
}
else
{
echo '<b>Galleries</b><hr>';
for ($x=0;$x<count($images->subdirs);$x++)
{
$name=explode("/",$images->subdirs[$x]->name);
$name=$name[count($name)-1];
echo '<a href="gallery.php?gallery='.($x+1).'">'.$name.'</a>';
if (SHOWPICCOUNT==true)
{
echo ' - '.count($images->subdirs[$x]->files).' pictures';
}
echo '';
}
}
unset($images);
?>
</body>
</html>
|
Fuer die Administration der Gallerien ist dieses Script uebrigens nicht zustaendig, es ist lediglich zur Ausgabe gedacht.
Viel Spass
reptiler
__________________
PHP Class Collection - PHP-Klassen fuer PHP 5 (und Teilweise auch fuer PHP 4)
Updates: Catcher 1.1, FTPConnection 1.2, MultiSQL 1.1, RSS2 1.1, SMTPConnection 1.4
__________________
EasyLFS - Hintergrundinformationen, Installationsanleitung, Softwareliste und Download
EasyLFS Projektthread - Informationen, Status und Diskussion zu meiner Linux-Distribution
__________________
Zitat:
|
Ich bin die Schildkroete, mein Sohn. Ich habe das Universum erschaffen, aber bitte mach mir daraus keinen Vorwurf; ich hatte Bauchschmerzen.
|
__________________
Zitat:
|
Zitat von Friedrich Nietzsche
Man muss noch Chaos in sich haben, um einen tanzenden Stern gebaeren zu koennen.
|