Stamattina mi sono buttato su un task che avevo in coda da un po’ di tempo: cambiare l’immagine di sfondo del sito di un cliente prendendone una casualmente tra quelle presenti in una cartella.
Mi sono quindi imbattuto in un esempio molto simile a ciò che volevo fare http://henry.jarske.net/writings.page/php-random/
L’esempio in questione fa qualcosa in più di ciò che volevo fare: a me bastava una funzione che restituisse l’URI di un immagine presa a caso in una cartella (da usare poi all’interno di un tempate Joomla), questo codice restituisce l’immagine stessa, con tutti i codici mime per gestirla.
Ho quindi modificato il codice di partenza per aggiungere la mia necessità a quello già codificato, ne è uscita la funzione getRamdomImage.
function getRandomImage($sPathRel="",$aTypes="",$sType="name") // derivato da http://henry.jarske.net/writings.page/php-random/ { // Configuration //$image_path = ""; if($aTypes=='') { $aTypes = array( "GIF" => "image/gif", "JPG" => "image/jpg", "PNG" => "image/png"); } // Directory scan $file_list = array(); $sPath = realpath(trim($sPathRel) != "" ? $sPathRel : ".") . "/"; if ($sPath !== false && is_dir($sPath) && $handle = @opendir($sPath)) { while (($file = readdir($handle)) !== false) { if (is_file($sPath . $file)) { $file_extension = strtoupper(substr(strrchr($file, "."), 1)); if (isset($aTypes[$file_extension])) { $file_list[] = array( "filename" => $sPath . $file, "filenamerel" => $sPathRel . $file, "mimetype" => $aTypes[$file_extension]); } } } } // Output if (sizeof($file_list) > 0) { shuffle($file_list); if($sType=="name") { echo $file_list[0]["filenamerel"]; } else { header("Content-Type: " . $file_list[0]["mimetype"]); header("Content-Length: " . @filesize($file_list[0]["filename"])); @readfile($file_list[0]["filename"]); } } else { echo "No images found."; } }
I parametri della funzione sono
$sPathRel
Cartella che contiene le immagini da visualizzare in maniera random, con “/” finale. Ad esempio “images/sfondo/”. Se non specificato verrà esaminata la cartella corrente.
$aTypes
Array contenente l’estensione ed il tipo mime delle immagini da considerare. Se non specificato è inizializzato a
array( “GIF” => “image/gif”, “JPG” => “image/jpg”, “PNG” => “image/png”);
$sType
specifica la modalità di funzionamento della funzione. Se uguale a “name” (valore di default) la funzione restituirà l’URL di una della immagini contenuta della cartella $sPathRel.
Altri valori fanno sì che la funzione restituisca l’intera immagine.
Di seguito un esempio d’uso della funzione all’interno di un file php.
<body style=”background-image: url(<?php getRandomImage(‘images/sfondo/’); ?>);”>
Il risultato si può ammirare in www.scubadi.it.
1 Comment
[…] Una soluzione per Joomla più elegante di quella che ho usato qualche articolo fa >>> […]