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();