Пишем простейший ротатор рекламы для своего сайта

Некоторые наверно заметили, что я решил прикрыть свой эксперимент по монетизации блога и страничка рекламы нынче висит просто для проформы.

Сейчас вместо последних постов из блогов рекламодателей висят мои собственные объявления, рефки и ссылки на свои проекты. Место теперь только одно и оно не продаётся.

Для этого пришлось немного переписать скрипт для вывода объявлений. Точнее сделать его намного проще.

Итоги и причины закрытия эксперимента по монетизации

Считаю эксперимент довольно удачным. Было набрано два десятка рекламодателей и получено 100 долларов прибыли, что уже по сути приятно. Немногие конечно заинтересовались необычным видом рекламы, но такие были. Что тоже очень приятно.

А прикрываю я прямую монетизацию по таким причинам:

  • Я пишу только тогда, когда мне этого хочется. Поэтому наблюдаются серьёзные перепады посещаемости. Рекламодателям это не понятно и неприятно.
  • Свои проекты рекламировать выгодней. Один переход залётного сеошника по ссылке на список бирж для покупки ссылок может принести неплохой пассивный доход сразу в нескольких сервисах.
  • Можно давать объявления об обмене электронной валюты или поиске исполнителей. А также другой мелочи.

Далее займёмся технической стороной вопроса.

Пишем ротатор объявлений на PHP

Наш скрипт ультрапрост. Он достаёт из БД рандомную ссылку, втыкает её в шаблон и выводит в нужном месте сайта. И всё.

Для начала создаём таблицу promo в базе данных MySQL. В ней мы будем хранить наши объявления. Полей по минимуму: идентификатор, статус (на всякий случай) и элементы ссылки.

CREATE TABLE IF NOT EXISTS `promo` (
   `id_promo` smallint(6) NOT NULL AUTO_INCREMENT,
   `url` varchar(255) NOT NULL,
   `title` varchar(255) NOT NULL,
   `anchor` varchar(255) NOT NULL,
   `status` tinyint(1) NOT NULL,
   PRIMARY KEY (`id_promo`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;

Затем загружаем на хост библиотеку MSQL.php. Это драйвер БД – прослойка между голыми SQL запросами и разработчиком. Используйте любой ORM или не используйте вообще. Дело ваше.

Также создаём 3 файла: C_Promo.php, M_Promo.php, Promo.tpl.php. Модель (библиотека), контроллер и представление (шаблон).

В C_Promo.php пишем код:

<?php
// Контроллер вывода объявления

include_once dirname(__FILE__) . '/M_Promo.php';
$mPromo = M_Promo::Instance();

$links = $mPromo->GetRandomPromoLinks(1);

foreach ($links as $link)
{
   ob_start();
   include dirname(__FILE__) . '/Promo.tpl.php';
   $ads[] = ob_get_clean();
}

В M_Promo.php пишем класс M_Promo и вставляем единственную функцию:

// Выбор рандомных объявлений
public function GetRandomPromoLinks($quantity)
{
   $t = "SELECT * FROM promo WHERE status = 1 ORDER BY rand() LIMIT %d";
   $query = sprintf($t, $quantity);
   $result = $this->msql->Select($query);
   return $result;
}

Знаю, что ORDER BY rand() не оптимальное решение для выбора случайной строки, но таблица у нас будет небольшая. Поэтому разницы в скорости мы не почувствуем. Разве что на реально нагруженном сайте.

Теперь осталось только оформить шаблон вывода объявления Promo.tpl.php. Например так:

<div class="ads">
<? if ($link['url']): ?>
<a href="<?= $link['url'] ?>" title="<?= $link['title'] ?>"><?= $link['anchor'] ?></a>
<? else: ?>
<?= $link['anchor'] ?>
<? endif; ?>
</div>
<span class="invite">Объявление. Купить нельзя.</span>

Если у объявления нет урла, то будет выводиться просто текстовая строка. Иначе полноценная ссылка с тайтлом и анкором.

Теперь у нас есть микродвижок для вывода объявлений из БД. Как они туда будут попадать – дело ваше. Либо пользуйтесь ультрасовременной и удобной админкой PhpMyAdmin, либо пишите свою, либо допишите механизм публикации объявлений за деньги (если хочется не только свои объявления крутить).

Публикация оплачиваемой рекламы на сайте конечно усложняет работу. Но и в этом случае можно сделать всё максимально просто.

Например, можно даже не заморачиваться с кликами и показами. Пусть рекламодатель оплачивает размещение за время размещения объявления.

Для этого нужно или добавить в таблицу пару полей (и проверку по дате при выборке объявлений из БД) или просто удалять раз в месяц все объявления (пару строк кода).

Вставка объявления на сайт

Осталось только вставить код (пути к файлам корректируйте исходя из своей структуры). Его не обязательно вставлять непосредственно перед выводом. Можно просто вставить в начале файла.

include_once dirname(__FILE__) . '/../../promo/C_Promo.php';

На место чудесного появления объявлений вставьте переменную $ads[0].

Как вы заметили, объявлений на странице может быть несколько. Для их вывода используйте номера элементов массива $ads[0], $ads[1], $ads[2] и т.д.

Если не заморачиваться с ООП и MVC, то весь движочек можно поместить в один небольшой файл. Получится примерно так:

<?php

include_once dirname(__FILE__) . '/MSQL.php';
$msql = MSQL::Instance();

// Выбор рандомных объявлений
function GetRandomPromoLinks($quantity)
{
   $t = "SELECT * FROM promo WHERE status = 1 ORDER BY rand() LIMIT %d";
   $query = sprintf($t, $quantity);
   $result = $msql->Select($query);
   return $result;
}

$links = GetRandomPromoLinks(1);

foreach ($links as $link)
{
   ob_start();
   include dirname(__FILE__) . '/Promo.tpl.php';
   $ads[] = ob_get_clean();
}

Ещё упростить скрипт можно, просто убрав MSQL драйвер, и написав обработку запроса в скрипте. Шаблон также можно внести в файл. Нет предела упрощению в общем.

Подключаться уменьшенный вариант будет точно также.

P.S.

Точно также можно крутить не только текстовые ссылки, но и баннера.

P.P.S.

Если общественности будет интересно, то выложу также код скрипта для вывода ссылок на последние посты из RSS лент.

Новости

Скрипт корзины обрёл сегодня механизм псевдорегистрации (запоминания покупателей), систему накопительных скидок и экспорт заказов в 1С. Можете посмотреть прямо сейчас варианты корзины jCart и сразу же оформить заказ.

Подпишитесь на обновления блога

Получить в подарок мини-книги и 21-дневный тренинг по личностному росту.

Подписаться на рассылку «Инструменты Интернет для онлайн бизнеса»

Поделиться ссылкой:


Комментарии:

11.08.2011 15:30:33
#1 Shershov

Спасибо, за инфу. Как раз на днях собирался с подобной задачей разбираться.

12.08.2011 06:41:44

спасибо за решение. не знал с какой стороны подъехать) а скрипт вывода ссылок с RSS тоже давай) буду благодарен

12.08.2011 08:33:10
#3 Andrei

Вы прочитали мои мысли :) Спасибо за статью!

12.08.2011 08:52:14

Интересно, но намного проще плагин на WP поставить!

12.08.2011 08:55:02

Мураха, во-первых, не у всех стоит WP, во-вторых, полезно делать кое-что руками ;)

12.08.2011 12:09:43
#6 анониумс

Своровал, буду разбираться! В любом случае Спс

12.08.2011 17:15:27
#7 Николай

конечно проще плагин на wordpress поставить, намного удобней

13.08.2011 12:29:12

У меня тоже плагин ротации - очень удобно. Не всем под силу работать с кодами. Хотя в кодах тоже есть своя прелесть - меньше нагрузка на сервер.

13.08.2011 15:50:57

У меня WP и я почти совсем не разбираюсь в php, в таком случае наверно все таки плагин будет лучшим вариантом?

13.08.2011 16:19:36

Очень интересная статья,я то думал пхп и базы данных - это дремучий лес

13.08.2011 21:01:40

Согласен, на мой взгляд гораздо проще установить уже готовый плагин и не париться, тем более, что если человек не разбирается в кодах, он может только навредить блогу.

14.08.2011 19:26:26
#12 Алексиан

Написано довольно доступно, за что вам большое спасибо. Но все же думаю, не каждый захочет маяться со скриптом, многие найдут готовый, хоть и будут не правы.

16.08.2011 04:10:35

Спасибо и только спасибо! Буду юзать, и кстати, согласен на счет того, что не у всех стоит ВП и нужно стараться все делать руками.

16.08.2011 10:55:22
#14 анонимус

Спасибо своровал:) И ты говорил там что то про кодик для RRS;)

17.08.2011 01:40:53
#15 Detective

И будет ли этот ротатор эффективным?

17.08.2011 05:33:17
#16 gorro

Николай, Зачастую ручками намного полезней, чем ставить готовый продукт

17.08.2011 10:59:47

Давно хочу пхп изучить, даже где-то видео курсы лежат, которые начинал просматривать, и книгу по пхп начинал читать... ну вот что-то пока не как не получается. надеюсь что однажды настанет тот день когда я напишу в коментах - «о, Лёха, тут нужно вот это подставить, а вон там то заменить - и будет летать быстрее МИГа» :) Надеёсь комент под идиотский не попадёт :)

17.08.2011 11:31:33
#18 Elena

Спасибо за пост!
Давно изучаю пхп и эта инф очень интересная для меня!

17.08.2011 12:09:39
#19 Александр

В интернете куча готовых плагинов зачем изобретать велосипед, хотя для саморазвития полезно

18.08.2011 10:35:42

Плагин на вордпресс поставить, конечно, легче, но он ресурсы будет поджирать. Лучше самому ручками сделать..

20.08.2011 17:15:28

Никита,
Ресурсы конечно важны, но вот я не силен в ПХП. остается только плагин. :)

20.08.2011 20:23:34

Для практики не помешает поработать c php а плагин для ленивых и не хочет даже попробывать поучиться

22.08.2011 05:38:22

Без использования мускула было бы интереснее. Как по мне, так слишком «сложно» кажется.

22.08.2011 09:16:24

Евгений, Ну от одного плагина хуже, точно не будет

22.08.2011 09:50:49

getnaked, можно и без Мускула, но всё равно ведь его используем. Почему бы данные там и не хранить.

24.08.2011 17:38:45

Познавательно,но я вот пока далёк от таких движений)) Вот если бы кто подсказал нужный плагин для wp...

25.08.2011 21:53:39

Привет. А чем плох Аскет, младший брат Даоса?(для любителей плагинов, погуглите и гляньте на эти скрипты)
Насколько я понимаю Аскет и твой скрипт делают одно и то же
Или я ошибаюсь?

26.08.2011 05:23:30

Руслан Сафин, ошибаешься. Аскет предназначен для работы с рекламодателями и размещает строки за SMS. А этот микроскрипт полностью для своих нужд.

Ну и конечно программерам иногда полезно и интересно думать головой вместо установки скриптов.

26.08.2011 16:41:10
#29 анонимус

Познавательно,но я вот пока далёк от таких движений

26.08.2011 19:49:36
#30 Александр

По-моему уж слишком простоват ротатор, лучше потратиться и купить что-то вроде daos...

27.08.2011 20:53:32

Можно все намного проще без MySQLсделать. Создаем массив, потом rand - это займет буквально пару строчек

30.08.2011 14:41:59

Вот бы еще код того скрипта, что выводит в твоем блоге справа иконки социальных сетей! Очень нравится...

30.08.2011 14:45:04

sim, конечно, но так легче развивать скрипт и обновлять данные.

Аббат_Кальне, во-первых, слева. во-вторых, это чистый CSS :)

30.08.2011 16:12:32
#34 алекс

Обязательно попробую, спасибо за полезные фишки!

31.08.2011 15:37:24

Never Lex, Лекс. Ничего не мешает хозяину Аскета загнать в базу свои ссылки =) И отключить возможность покупки ссылок другими (правда я хз есть ли такая функция там =) )

01.09.2011 05:30:55

Руслан Сафин, ну так пусть загоняет. Это его дело. Я же не говорил, что решение единственно верное :)

02.09.2011 09:19:36

Как раз то, что искал. Буду пробовать. Спасибо!

04.09.2011 15:29:15
#38 Александр

Неплохо. Нужно поставить себе на сайт

04.09.2011 16:50:55
#39 Александр

Спасибо за статью, но жалко , что не бывает ротаторов написанных на html.

06.09.2011 08:45:50

Спасибо, простенький и удобный, то что нужно

06.09.2011 14:42:55

Хорошая идея рекламировать своё=) Сам как-то делал ротатор, но там были только баннеры и прописывалось всё в коде. Потом просто из массива выбирал. Спасибо за Ваш скриптик, попробую как-нибудь.

08.09.2011 05:35:57
#42 Алекпер

Этот метод мне больше по душе, чем готовый плагин. Поставил себе на блог.
Спасибо за скрипт.

08.09.2011 12:43:50
#43 Сергей

Спасибо за статью изложено понятно, а вот как сделать банер в шапке темы. Тема iGadgets 1.0 от NewWpThemes, по задумке автора банер там должен быть, но при ее установке и настройке его там нет, как исправить.

12.09.2011 16:54:10
#44 Александр

Интересно, но намного проще плагин на WP поставить!

20.09.2011 09:28:21
#45 ecalex

как раз то что нужно, вп плагины иногда не правильно работают...

20.09.2011 14:02:41
#46 Михаил

Спасибо, интересный вариант. Но я пользуюсь готовым модулем рекламы)

30.09.2011 14:57:29
#47 Николай

Толковая статья, но есть же дополнения... Не плохая статья для тех, кто хочет делать всё своими руками

22.10.2011 07:44:31

Полезная статья. Спасибо

07.11.2011 18:14:16

Да уж, не просто это все уразуметь. Действительно , наверно плагин просто поставить.

19.12.2011 16:17:30
#50 Alex

не плохо и для новичков будет понятно

03.02.2012 10:29:35

Автор - молодец, что используешь ООП!

08.02.2012 17:38:26
#52 Dima

Спасибо, за скрипт . На днях тоже буду разбираться с этой задачей =).

07.03.2012 07:16:08

Спасибо. Довольно интересная статья. Надо попробовать)

12.08.2012 15:50:40

Думаю намного проще установить готовую CMS, например WP и на неё уже лепить всякие плагины.Ну это решение для тех кто совсем в php не бум бум, если иначе, то для чайников :)
Спасибо за заметку, оказалось полезным!

04.11.2012 17:41:45
#55 atlanta direct mail

Вот так wordpress забирает работу у прогамистов. Конечно для многих плагин поставить удобней и дешевле, особенно если сам проект имеет low budget.

16.04.2013 05:42:30

Начал изучать недавно PHP и Явускрипт, буду пробовать

24.04.2013 13:13:00

Спасибо за написаную статью! Очень помог скрипт моему сайту! Или как там его называют! Я в этом не шарю, а тут все доступно описано!

09.06.2014 14:34:48
#58 Александер

Здравствуйте. Ваш ротатор рекламы по временному счетчику или по обнавлению страницы срабатывает?

Оставьте комментарий [форматирование]

Пожалуйста, воздержитесь от спама и идиотских высказываний. Жёсткая модерация. Ссылки закрыты атрибутом nofollow, а значит не несут пользы для продвижения!
Ссылки на всё кроме личных блогов и тематических блогов, сходных по тематике с данным, вырезаются.



Мой RSS фид