Достаточно часто при создании сайтов перед нами появляется задача выводить на одном и том же месте страницы различные блоки информации при каждой ее загрузке.
В данной статье мы подробно рассмотрим 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 или фреймворку. Тобишь использовать этот скрипт можно на абсолютно любом сайте. Будь то самопис или же шаблонный сайтик.
- Благодаря своей просторе не имеет погрешностей, которые бы могли привести к проблемам с безопасностью сайта.




