MODX Snippet - random picture from folder [MODX Сниппет - вывод случайного изображения из директории]
<?php
$img_dir = (isset($dir)) ? $dir : ('/assets/img/staff/'); //папка с картинками
$img_ext = (isset($ext)) ? $ext : 'jpg'; //рассширение картинок
$error_img = (isset($errimg)) ? $errimg : ('/assets/img/error.jpg'); //картинка, если картинок нет
$mode = (isset($defimg)) ? $defimg : 1;
$img_array = array(); // Массив для названий изображений
$error = [
'not_img' => 'В папке нет картинок с расширением - ' . $img_ext,
'not_dir' => 'Переменная img_dir не содержит путь к папке',
];
if (is_dir(MODX_BASE_PATH . $img_dir)) { // Проверяем действительно ли переменная содержит путь к папке
if ($od = opendir(MODX_BASE_PATH . $img_dir)) { // Открываем папку
while ( ($file = readdir($od)) !== false ) { // Проверяем все файлы что находятся в папке
if ( strtolower(strstr($file, ".")) === "." . $img_ext ) { // Выделяем с всех файлов только изображения.
array_push($img_array, $file); // Если файл действительно имеет расширение изображения добавляем его в массив
}
}
if (empty($img_array)) {
$modx->log(MODX_LOG_LEVEL_ERROR, 'Snippet - random_foto: ' . $error['not_img']);
if ($mode) {
return '<img src="' . $error_img . '">';
} else {
return;
}
}
closedir($od); // Закрываем папку
}
} else {
$modx->log(MODX_LOG_LEVEL_ERROR, 'Snippet - random_foto: ' . $error['not_dir']);
if ($mode) {
return '<img src="' . $error_img . '">';
} else {
return;
}
}
$rd = rand(0, count($img_array)-1); // Получаем случайное число от 1 до количества записей в массиве
return '<img src=' . $img_dir.$img_array[$rd] . '>'; // Выводим изображение с директории