Достаточно часто при создании сайтов перед нами появляется задача выводить на одном и том же месте страницы различные блоки информации при каждой ее загрузке.
В данной статье мы подробно рассмотрим PHP скрипт позволяющий элементарным образом решить задачу ротации блоков. При чем не важно что в них будет — рекламный баннер, текст, прочий код.
По своему желанию мы можем как просто заменять части страницы в одном месте, так и менять местами наши баннеры (выводя их в различных местах), что может быть полезно при размещении рекламы на сайте.
Поясню несколько подробнее. Допустим мы имеем простейший сайт с парой рекламных блоков:
И при каждой новой загрузке выделенные черным блоки должны меняться между собой местами в рандомном порядке. Причем не обязательно, чтобы их было всего 2, их может быть сколько угодно. И выводить на странице мы можем сколько угодно блоков и где угодно.
Реализация ротации блоков информации на странице сайта
Для того, чтобы у нас все работало достаточно создать маленький массив и воспользоваться функцией shuffle(), чтобы перемешивать значения внутри него при каждом обновлении страницы:
<?php $banners[] = '<div class="reclam">Рекламный блок 1</div>'; $banners[] = '<div class="reclam">Рекламный блок 2</div>'; $banners[] = '<div class="reclam">Рекламный блок 3</div>'; $banners[] = '<div class="reclam">Рекламный блок 4</div>'; shuffle($banners); echo $banners[0]; ?>
Теперь разбираем все по порядку:
- Мы создаем массив, в который заносим необходимые нам блоки с информацией. Что в них будет не имеет никакого значения. Сколько их может быть? А сколько нам нужно. В примере мы взяли 4 «баннера»:
$banners[] = '<div class="reclam">Рекламный блок 4</div>';
- Применяя к нашему массиву shuffle() мы случайным образом изменяем порядок следования элементов в массиве. Проще говоря перемешиваем значения между собой:
shuffle($banners);
- Ну и на следующем шаге мы выводим нужные нам блоки в нужных местах страницы.
echo $banners[0];
Полный код страницы примера:
<!doctype html> <html> <head> <title>Минисайт</title> <link rel="stylesheet" media="all" type="text/css" href="style.css" /> </head> <body> <header> <p>Шапка сайта</p> </header> <?php $banners[] = '<div class="reclam">Рекламный блок 1</div>'; $banners[] = '<div class="reclam">Рекламный блок 2</div>'; $banners[] = '<div class="reclam">Рекламный блок 3</div>'; $banners[] = '<div class="reclam">Рекламный блок 4</div>'; shuffle($banners); echo $banners[0]; ?> <section> <p>Основное содержимое</p> </section> <?php echo $banners[1]; ?> <footer> <p>Подвал сайта</p> </footer> </body> </html>
Результат его действия:
После первой загрузки страницы
После следующего обновления… Ну и так далее. Блоки просто будут в рандомном (случайном) порядке чередоваться между собой.
При желании мы можем записать этот скрипт несколько по иному:
<?php $banners = array( '<div class="reclam">Рекламный блок 1</div>', '<div class="reclam">Рекламный блок 2</div>', '<div class="reclam">Рекламный блок 3</div>', '<div class="reclam">Рекламный блок 4</div>' ); shuffle($banners); echo $banners[0]; ?>
Работает он точно также как и предыдущий вариант. Разница только в синтаксисе занесения информации внутрь нашего массива. Лично мне второй вариант нравится больше в силу своей лаконичности.
Преимущества рассмотренного нами решения
- Он имеет очень простую и понятную структуру, что позволяет воспользоваться им даже человеку делающему первые шаги в веб-разработке.
- Он не подгружает каких-либо сторонних фрагментов кода, файлов и тд, как это зачастую делают модули на популярных CMS, а следовательно мы никак не влияем на скорость загрузки страницы.
- Для его работы достаточно, чтобы на сервереподдерживался PHP. В последнее время хостов без этой опции я не встречал…
- Мы не привязаны к какой-либо CMS или фреймворку. Тобишь использовать этот скрипт можно на абсолютно любом сайте. Будь то самопис или же шаблонный сайтик.
- Благодаря своей просторе не имеет погрешностей, которые бы могли привести к проблемам с безопасностью сайта.