Le retour de la bannière aléatoire

Suite des épisodes de la bannière aléatoire !

Résumé des épisodes précédents : grâce à zenphoto, je pouvais aller extraire un morceau d’image d’un des albums. La bannière du site changeait ainsi de manière aléatoire à chauqe chargement de la page, et le résultat était parfois surprenant. Hélas, depuis le début d’année, Free a augmenté sa sécurité, et la fonction php include() que j’utilisais est maintenant totalement interdite. Retour donc à une bannière fixe, malgré de nombreux essais de contournement.

Je me suis alors orienté vers une autre solution : puisque de mon blog WordPress en local (sur le pc) la fonction include fonctionne toujours, lorsque l’image générée me plait, je la sauvegarde dans un répertoire. Il suffit ensuite d’appeler une de ces images de manière aléatoire. Pour ce faire, après une petite recherche sur le web, j’ai trouvé le code suivant :

<?php
$curdir=getcwd(); chdir(get_template_directory() . "/images/headers");
$files=glob("*.{gif,png,jpg,gif}", GLOB_BRACE);
chdir($curdir);
$file=$files[array_rand($files)];
?>
<img src="<?php echo(get_bloginfo('template_url')."/images/headers/$file"); ?>" width="770" height="140" alt="<?php bloginfo('name'); ?> random header image" />

Je le teste en local, tout fonctionne à merveille. Mais voilà, nouveau problème avec Free : glob est également désactivé ! 🙁

Heureusement, mes fichiers portant tous le même nom suivi d’un chiffre (banniereX.jpg), j’ai pu simplifier le code en procédant de la sorte :

<?php
$rand =  rand(1, 50);
?>
<img src="<?php echo(get_bloginfo('template_url')."/images/headers/banniere$rand.jpg"); ?>" width="970" height="140" alt="<?php bloginfo('name'); ?> random header image" />

C’est beaucoup plus simple, mais m’oblige à gérer le nombre de fichiers présent manuellement : cinquante images pour l’instant si vous avez suivi… J’en ajouterai sûrement d’autres de temps en temps.

Et finalement, la solution m’a été donnée sur le forum phpfrance : plus de fonction glob, et plus besoin de gérer le nombre d’images :

<?php
$curdir=getcwd(); chdir(get_template_directory() . "/images/headers");
$dossier=getcwd();
$list = opendir($dossier);
$tabfile = array();
while ($fichier = readdir($list))
  {
  ($fichier != "." && $fichier != ".." && $fichier != ".htaccess")? $tabfile[] = $fichier : '' ;
  }
  closedir($list);
//mélange du tableau
  shuffle($tabfile);
// premier élément du tableau
$file = array_shift($tabfile);
chdir($curdir);
?>
<img src="<?php echo(get_bloginfo('template_url')."/images/headers/$file"); ?>" width="970" height="140" alt="morceau d'image..." title="morceau d'image..." />

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *