Notice: Trying to access array offset on value of type bool in /var/www/vhosts/itacad.it/httpdocs/wp-content/themes/betheme/functions/theme-functions.php on line 1517

Notice: Trying to access array offset on value of type bool in /var/www/vhosts/itacad.it/httpdocs/wp-content/themes/betheme/functions/theme-functions.php on line 1518

Notice: Trying to access array offset on value of type bool in /var/www/vhosts/itacad.it/httpdocs/wp-content/themes/betheme/functions/theme-functions.php on line 1519
Attivare la visualizzazione dettagliata degli errori in php
13 Giugno 2012
Interfacciarsi con YouTube utilizzando il php
15 Giugno 2012
Mostra tutto

Notice: Trying to access array offset on value of type bool in /var/www/vhosts/itacad.it/httpdocs/wp-content/themes/betheme/functions/theme-functions.php on line 1517

Notice: Trying to access array offset on value of type bool in /var/www/vhosts/itacad.it/httpdocs/wp-content/themes/betheme/functions/theme-functions.php on line 1518

Notice: Trying to access array offset on value of type bool in /var/www/vhosts/itacad.it/httpdocs/wp-content/themes/betheme/functions/theme-functions.php on line 1519

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.

 

 


Notice: Trying to access array offset on value of type null in /var/www/vhosts/itacad.it/httpdocs/wp-content/themes/betheme/includes/content-single.php on line 286
Giorgio Mancuso

1 Comment

  1. […] Una soluzione per Joomla più elegante di quella che ho usato qualche articolo fa >>> […]

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *