Thread subject: pHpFusion Nederlands (BE|NL) » Ondersteuning, Themas, Infusies, Modificaties en Installatie :: Random image paneel

Posted by Ground Zero on 24 October 2009, 20:34
#1

Een eenvoudig script dat een willekeurig afbeelding in toont in een paneel.
De afbeelding neemt de breedte van het paneel aan en schaalt zichzelf voor de hoogte.
Je kan eventueel ook linken naar een fotoalbum.

In mijn voorbeeld komen de img van een map met producten (foto's).
De afbeelding linkt naar het fotoalbum met de img erin.

Het script toont willekeurig 1 van de afbeeldingen uit de gekozen map.
Je hoeft de naam niet aan te passen.

In je paneel
Code

openside("Random image");
  echo "
'Producten'
";
closeside();


.BASEDIR. zorgt ervoor dat er gekeken wordt vanaf de 'hoodmap' waar php-fusion in istaat. omdat dit niet altijd root/ is.
Je kan de link ook weg laten.
.IMAGES. linkt naar de afbeelding map, meestal root/images/, maar voor de uitzonderingen is hier een 'functie' voor gemaakt die naar e juiste map linkt.
rotate.php linkt naar het script

In de map die je ingegeven hebt bij met de juiste naam, hier rotate.php
[geshi=php]
/* ------------------------- CONFIGURATION ----------------------- */

/*
zet hier het het volledige path naar de afbeeldingen
bv. $folder = '/user/me/example.com/images/'
laat het puntje . staan als het script in dezelfde map staat als de afbeeldingen
ik denk dat .IMAGES. en .BASEDIT. hier ook zullen werken
*/
$folder = '.'

$extList = array();
$extList['gif'] = 'image/gif'
$extList['jpg'] = 'image/jpg'
$extList['jpeg'] = 'image/jpeg'
$extList['png'] = 'image/png'
// VOEG HIER EVENTUEEL NOG EXTENSIES TOE
// bv $extList['bmp'] = 'image/bmp'

/* --------------------- END CONFIGURATION ----------------------- */

$img = null;

if (substr($folder,-1) != '/') {
$folder = $folder.'/'
}

if (isset($_GET['img'])) {
$imageInfo = pathinfo($_GET['img']);
if (
isset( $extList[ strtolower( $imageInfo['extension'] ) ] ) &&
file_exists( $folder.$imageInfo['basename'] )
) {
$img = $folder.$imageInfo['basename'];
}
} else {
$fileList = array();
$handle = opendir($folder);
while ( false !== ( $file = readdir($handle) ) ) {
$file_info = pathinfo($file);
if (
isset( $extList[ strtolower( $file_info['extension'] ) ] )
) {
$fileList[] = $file;
}
}
closedir($handle);

if (count($fileList) > 0) {
$imageNumber = time() % count($fileList);
$img = $folder.$fileList[$imageNumber];
}
}

if ($img!=null) {
$imageInfo = pathinfo($img);
$contentType = 'Content-type: '.$extList[ $imageInfo['extension'] ];
header ($contentType);
readfile($img);
} else {
if ( function_exists('imagecreate') ) {
header ("Content-type: image/png");
$im = @imagecreate (100, 100)
or die ("Cannot initialize new GD image stream");
$background_color = imagecolorallocate ($im, 255, 255, 255);
$text_color = imagecolorallocate ($im, 0,0,0);
imagestring ($im, 2, 5, 5, "IMAGE ERROR", $text_color);
imagepng ($im);
imagedestroy($im);
}
}

?>
[/geshi]

Posted by Ground Zero on 25 October 2009, 22:43
#2

Eventjes van de gelegenheid gebruik maken om m'n gezonde ranks te tonen.
Gewoon appels ipv sterren en een peer voor degene zonder rank

Posted by maud138 on 05 August 2010, 15:03
#3

Hoi, kun je me helpen hiermee? Ik ben een beginneling. Ik heb de code ingevoerd en de rotate.php gekopieerd. Het panel doet het (ik heb er een linkerpanel van gemaakt), maar nu verschijnt mijn rechterpanel ook ineens links en het middenpanel verdwijnt helemaal.
Hoe kan ik dat oplossen?
Maud