А вы хотели бы, чтобы на Вашем сайте фон периодически изменялся? Я вот недавно столкнулся с необходимостью реализовать такое счастье, и теперь хочу поделиться с Вами способом реализации данной задачи на 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;
}
[/php] Функция возвращает CSS-свойство background. Для наглядности, фоновое изображение меняется каждую секунду, и строка [php]$day = date(‘s’);[/php] отвечает за это, для того, чтобы менять изображение один раз в минуту, измените эту строку следующим образом [php]$day = date(‘i’);[/php] Как применить это к Вашему сайту? Да очень просто! Стиль можно применять к любому тегу. Например к тегу body:
[php]<body <?php echo change_bg(‘jpg’, ‘image/’);?>>[/php] Ну и небольшой демо-пример для наглядности.
Только думал:
А он оказывается и пример представил, от молодца! 🙂
Так это, а с какой периодичностью меняется то? И в левом верхнем углу почему-то набор символов вместо слов отображается у меня.
В примере каждую секунду. Кодировку подправил. Спасибо, Диам.
В примере.
Перепроверил, у меня всё ок. Кодировка 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]
Подскажите, пожалуйста, что необходимо заменить в коде?
Куда прописывать путь, название картинок, тип?
Заранее спасибо.
Названия картинок не нужны. Следует указать лишь путь, и тип.
Путь должен быть указан относительно корня.
Привет, у меня доска объявлений хочу сделать чтобы вип объявления менялись с интервалом пару секунд, с твоим кодом можно это организовать, и как вот пример стороннего сайта rfboard.ru
Да, можно, но я думаю, что имеет смысл сделать это немного иначе. Все зависит от того, как будет реализован показ объявлений
А если хочется менять не только картинку, но и фон, цвет границы, её толщину, прозрачность того же контента. И нет необходимости все это менять каждую секунду, тоесть без цикла, а просто чтоб был выбор, напр, картинка такая-то, цвет такой-то, толщина такая, прозрачность такая…
Делайте это на JS:)