Меняющийся фон на PHP
А вы хотели бы, чтобы на Вашем сайте фон периодически изменялся? Я вот недавно столкнулся с необходимостью реализовать такое счастье, и теперь хочу поделиться с Вами способом реализации данной задачи на PHP.
Функция довольно проста и имеет всего два агрумента, первый — это тип файлов, второй — месторасположения папки с изображениями. Вот собственно код функции:
function change_bg($imageType, $pathImg) { $imageType = '.' . $imageType; $imgs = array(); $dir = opendir($pathImg); while ($imgName = readdir($dir)) { if ($imgName != '.' && $imgName != '..') { if (strtolower(strrchr($imgName, '.')) == $imageType) { $imgs[] = $pathImg . $imgName; } } } closedir($dir); $num = count($imgs); $day = date('s'); // s - секунды; i - минуты; H - часы; d - дни; m - месяцы; Y - годы; if ($day{0} == '0') $day = $day{1}; while ($day >= $num) { $day -= $num; } $style = "style = \"background:url({$imgs[$day]});\""; return $style; }
Функция возвращает CSS-свойство background. Для наглядности, фоновое изображение меняется каждую секунду, и строка $day = date('s');
отвечает за это, для того, чтобы менять изображение один раз в минуту, измените эту строку следующим образом $day = date('i');
Как применить это к Вашему сайту? Да очень просто! Стиль можно применять к любому тегу. Например к тегу body:
<body <?php echo change_bg('jpg', 'image/');?>>
Ну и небольшой демо-пример для наглядности.
Только думал:
А он оказывается и пример представил, от молодца!
Так это, а с какой периодичностью меняется то? И в левом верхнем углу почему-то набор символов вместо слов отображается у меня.
В примере каждую секунду. Кодировку подправил. Спасибо, Диам.
В примере.
Перепроверил, у меня всё ок. Кодировка utf-8.
Но для надёжности поставил 1251ю. Теперь должно быть хорошо.
Стасяндрик хз, у меня фон не меняется..
Понял о чем ты. Фон меняется по обновлению страницы.
Для изменения фона без обновления нужен JavaScript.
По обновлению странички меняется, действительно
а почему так хромает форматирование кода?
Ну вот уж так сложилось, что это и есть моя манера написания скриптов на-быструю-руку. Хотелось бы узнать, что Вам конкретно не понравилось (учту на будущее).
ИМХО, плохому танцору… Мне на**ать какие там стили придумали и кто, я отлично справляюсь с собственные стилем форматирования кода, так как я не использую говно-движки, как джумла и др. Они убогие и тупящие. Реальный пример был у меня пару недель назад, когда удалил Joomla-сайт с 500 уников в день (всего-то), а он работал, как будто там было их сотня тысяч. Рядом работал мой двиг с производительностью в 10000 раз быстрее и посещением в 10 раз большим.
Я не говорю, что все движки — треш, но 99% их точно херня, на которую не то что деньги, внимание выделить жалко.
Stafox, твой пример чет не пашет. в чем беда?
Да вроде работает. Только обновление бэкграунда происходит не автоматически (как на js), а с обновлением страницы (F5).
Есть 2 основных стандарта форматирования кода — Zend и PEAR.
+ специфичные для проектов (Drupal, Joomla, Kohana и др).
Просто это влияет на скорость понимания кода сторонними разработчиками. А время — деньги, как известно.
К тому же, грамотное оформление будет плюсом при приеме на работу.
Привел код в порядок. Спасибо. Обычно придерживаюсь стандарта Zend.
как данный код подключить к сайту? куда что надо копировать? подскажите пжалуйста)
В самом начале страницы вставляете код функции
[php]<?php
function change_bg($IMAGE_TYPE, $PATH_IMG)
{
...
}
?>[/php]
ну, а потом находите свой тег body, и заменяете его на эту строку
[php]<body <?php echo change_bg('jpg', 'image/');?>>[/php]
Как вариант.
Разбираюсь с кодом, у меня вордпресс)) верхний код в heder вставлять?
Можно в functions.php
Хотела посмотреть ваш демо-пример а он что то не работает.Я попробовала и страницу вашу обновить и всё тоже самое.
Странно. У меня все работает. Открываете пример и нажимаете обновить страницу. После каждого обновления будет отображен новый фон.
При каждом обращении к сайту диры и файлы чекать? Лишняя нагрузка.
Лучше массив ссылками на файлы хранить, чтоб сервак не грузить. В идеале вообще лучше на JS это переложить (подстановку src при onload).
Да, лишняя нагрузка. Но в этом случае, в любое время можно закинуть парочку своих (а может 1000?) изображений и посмотреть его в действии. Быстро, без задания путей и т.д. Ведь можно вообще переименовать все изображения от 1.jpg, 2.jpg …. 832.jpg, а потом циклом бегать
(но я не любитель такого)
Про JS оно понятно, такие вещи на нем и должны реализовываться, но здесь непосредственно, стояла задача: сделать средствами PHP.
Ну понятно.
Я ради интереса тоже много чего делаю не оптимального )
А как сделать, чтобы картинка менялась при обновлении страницы, или каждый день разная
указывать число и дни, например 1d 
Изменить 15-ую строку скрипта.
Изменение каждую секунду:
[php]$day = date('s');[/php]
Каждый день
[php]$day = date('d');[/php]
Подскажите, пожалуйста, что необходимо заменить в коде?
Куда прописывать путь, название картинок, тип?
Заранее спасибо.
Названия картинок не нужны. Следует указать лишь путь, и тип.
Путь должен быть указан относительно корня.