Images à nommage dynamique

Afin d'améliorer le référencement naturel, il est possible de nommer les images et le chemin d'accès des images de manière dynamique

On appelle la méthode getDynImage de n'importe quelle méthode du collecteur, en passant en paramètre le tableau de l'objet en cours, puis le nom du champ contenant les nom et chemin de l'image que l'on souhaite afficher, puis un tableau contenant les libellés que l'on souhaite utiliser

Par exemple :


$this->collector['treeview']->getDynImage($treeview,'file',array('libelle-du-produit'))

Affichera :

/dimg2/treeview/file/812/libelle-du-produit.jpg

Autre exemple :


$this->collector['produits']->getDynImage($monproduits,'media',array('cat1','cat2','mon-produit'))

Affichera :

/dimg2/produits/media/812/cat1/cat2/mon-produit.jpg

Afin de rediriger toutes les images dynamques, voici la redirection qu'il faut mettre en place dans le vhost apache : 

 RewriteRule ^/dimg2/([^/]*)/([^/]*)/([^/]*)/(.*)$ /dimg2.php?mod=$1&field=$2&id=$3&p=$4 [P] 

Et voici le contenu du fichier controlleur, dans notre exemple dimg2.php:


ob_get_clean();
$mod    = (isset($_GET['mod'])) ? $_GET['mod'] : 'produits' ;
$field  = (isset($_GET['field'])) ? $_GET['field'] : 'media' ;
$id     = (isset($_GET['id'])) ? $_GET['id'] : '' ;

$mod    = filter_var($mod,FILTER_SANITIZE_STRING);
$field  = filter_var($field,FILTER_SANITIZE_STRING);
$id     = filter_var($id,FILTER_SANITIZE_NUMBER_INT);


$element = $this->collector[$mod]->getOneI18n(array('id_'.$mod=>$id));
$file = $_SERVER['DOCUMENT_ROOT'].urldecode($element[$field]);
$content = file_get_contents($file);

header('Content-Type: '.image_type_to_mime_type(exif_imagetype($file)));
readfile($file);

die();