Сегодняшняя статья посвящена частому вопросу, который мне задавали мои знакомые. Звучал он примерно так: "Ты не знаешь, как вывести случайное изображение вместо заднего фона в шапке Joomla"? Знаю, и сегодня Вам об этом расскажу.
Сегодняшний пример я приведу на основе бесплатного шаблона bizblue для Joomla 2.5. Вы же можете его стиражировать практически для любого шаблона, немного видоизменив код. Итак, если открыть файл /templates/bizblue/index.php то можно найти там код:
<td align="center" class="logoheader">
Немного расширим его и заменим на:
<td align="center" class="logoheader"
<?php
function getRandomImage ($img_folder) {
$imglist=array();
mt_srand((double)microtime()*1000);
//use the directory class
$imgs = dir($img_folder);
//read all files from the directory, checks if are images and ads them to a list (see below how to display flash banners)
while ($file = $imgs->read()) {
if ((strpos($file,".gif")!==false)||(strpos($file,".jpg")!==false)||(strpos($file,".png")!==false)) {
$imglist[] = $file;
}
}
closedir($imgs->handle);
if(!count($imglist)) return '';
//generate a random number between 0 and the number of images
$random = mt_rand(0, count($imglist)-1);
$image = $imglist[$random];
return $image;
}
echo 'style="background: url('.$this->baseurl.'/templates/'.$this->template.'/images/header/'.getRandomImage(dirname(__FILE__).DS.'images/header').') no-repeat scroll left bottom #FFFFFF;">';
?>
В приведенном выше коде мы ввели новую функцию getRandomImage, которая сканирует все файлы в папке, передаваемой в неё вместо переменной $img_folder.
В данном случае это папка dirname(__FILE__).DS.'images/header', т.е. папка /templates/bizblue/images/header
За основу берутся только файлы с расширениями: *.gif,*.jpg,*.png. Вы можете добавить по аналогии другие.
Далее берется случайное изображение и возвращается путь к нему в качестве результата функции:
return $image;
Внимание! Все пути являются относительными начиная с корневой папки Вашего сайта!
И наконец в самой ячейке TD в свойство стиля style мы добавили путь к изображению для заднего фона:
style="background: url('результат работы функции getRandomImage') no-repeat scroll left bottom #FFFFFF;"
К слову, данный пример можно использовать не только для вывода случайного изображения вместо заднего фона в заголовке Joomla 2.5, но и для вывода случайного изображения в любой ситуации, немного модифицировав (изменив) код.