Пишем простейший ротатор рекламы для своего сайта
Некоторые наверно заметили, что я решил прикрыть свой эксперимент по монетизации блога и страничка рекламы нынче висит просто для проформы.
Сейчас вместо последних постов из блогов рекламодателей висят мои собственные объявления, рефки и ссылки на свои проекты. Место теперь только одно и оно не продаётся.
Для этого пришлось немного переписать скрипт для вывода объявлений. Точнее сделать его намного проще.
Итоги и причины закрытия эксперимента по монетизации
Считаю эксперимент довольно удачным. Было набрано два десятка рекламодателей и получено 100 долларов прибыли, что уже по сути приятно. Немногие конечно заинтересовались необычным видом рекламы, но такие были. Что тоже очень приятно.
А прикрываю я прямую монетизацию по таким причинам:
- Я пишу только тогда, когда мне этого хочется. Поэтому наблюдаются серьёзные перепады посещаемости. Рекламодателям это не понятно и неприятно.
- Свои проекты рекламировать выгодней. Один переход залётного сеошника по ссылке на список бирж для покупки ссылок может принести неплохой пассивный доход сразу в нескольких сервисах.
- Можно давать объявления об обмене электронной валюты или поиске исполнителей. А также другой мелочи.
Далее займёмся технической стороной вопроса.
Пишем ротатор объявлений на PHP
Наш скрипт ультрапрост. Он достаёт из БД рандомную ссылку, втыкает её в шаблон и выводит в нужном месте сайта. И всё.
Для начала создаём таблицу promo в базе данных MySQL. В ней мы будем хранить наши объявления. Полей по минимуму: идентификатор, статус (на всякий случай) и элементы ссылки.
`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 пишем код:
// Контроллер вывода объявления
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. Например так:
<? if ($link['url']): ?>
<a href="<?= $link['url'] ?>" title="<?= $link['title'] ?>"><?= $link['anchor'] ?></a>
<? else: ?>
<?= $link['anchor'] ?>
<? endif; ?>
</div>
<span class="invite">Объявление. Купить нельзя.</span>
Если у объявления нет урла, то будет выводиться просто текстовая строка. Иначе полноценная ссылка с тайтлом и анкором.
Теперь у нас есть микродвижок для вывода объявлений из БД. Как они туда будут попадать – дело ваше. Либо пользуйтесь ультрасовременной и удобной админкой PhpMyAdmin, либо пишите свою, либо допишите механизм публикации объявлений за деньги (если хочется не только свои объявления крутить).
Публикация оплачиваемой рекламы на сайте конечно усложняет работу. Но и в этом случае можно сделать всё максимально просто.
Например, можно даже не заморачиваться с кликами и показами. Пусть рекламодатель оплачивает размещение за время размещения объявления.
Для этого нужно или добавить в таблицу пару полей (и проверку по дате при выборке объявлений из БД) или просто удалять раз в месяц все объявления (пару строк кода).
Вставка объявления на сайт
Осталось только вставить код (пути к файлам корректируйте исходя из своей структуры). Его не обязательно вставлять непосредственно перед выводом. Можно просто вставить в начале файла.
На место чудесного появления объявлений вставьте переменную $ads[0].
Как вы заметили, объявлений на странице может быть несколько. Для их вывода используйте номера элементов массива $ads[0], $ads[1], $ads[2] и т.д.
Если не заморачиваться с ООП и MVC, то весь движочек можно поместить в один небольшой файл. Получится примерно так:
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 и сразу же оформить заказ.
Поделиться ссылкой:
Комментарии:
спасибо за решение. не знал с какой стороны подъехать) а скрипт вывода ссылок с RSS тоже давай) буду благодарен
У меня тоже плагин ротации - очень удобно. Не всем под силу работать с кодами. Хотя в кодах тоже есть своя прелесть - меньше нагрузка на сервер.
У меня WP и я почти совсем не разбираюсь в php, в таком случае наверно все таки плагин будет лучшим вариантом?
Очень интересная статья,я то думал пхп и базы данных - это дремучий лес
Согласен, на мой взгляд гораздо проще установить уже готовый плагин и не париться, тем более, что если человек не разбирается в кодах, он может только навредить блогу.
Написано довольно доступно, за что вам большое спасибо. Но все же думаю, не каждый захочет маяться со скриптом, многие найдут готовый, хоть и будут не правы.
Спасибо и только спасибо! Буду юзать, и кстати, согласен на счет того, что не у всех стоит ВП и нужно стараться все делать руками.
Давно хочу пхп изучить, даже где-то видео курсы лежат, которые начинал просматривать, и книгу по пхп начинал читать... ну вот что-то пока не как не получается. надеюсь что однажды настанет тот день когда я напишу в коментах - «о, Лёха, тут нужно вот это подставить, а вон там то заменить - и будет летать быстрее МИГа» :) Надеёсь комент под идиотский не попадёт :)
В интернете куча готовых плагинов зачем изобретать велосипед, хотя для саморазвития полезно
Плагин на вордпресс поставить, конечно, легче, но он ресурсы будет поджирать. Лучше самому ручками сделать..
Для практики не помешает поработать c php а плагин для ленивых и не хочет даже попробывать поучиться
Без использования мускула было бы интереснее. Как по мне, так слишком «сложно» кажется.
Познавательно,но я вот пока далёк от таких движений)) Вот если бы кто подсказал нужный плагин для wp...
Привет. А чем плох Аскет, младший брат Даоса?(для любителей плагинов, погуглите и гляньте на эти скрипты)
Насколько я понимаю Аскет и твой скрипт делают одно и то же
Или я ошибаюсь?
По-моему уж слишком простоват ротатор, лучше потратиться и купить что-то вроде daos...
Можно все намного проще без MySQLсделать. Создаем массив, потом rand - это займет буквально пару строчек
Вот бы еще код того скрипта, что выводит в твоем блоге справа иконки социальных сетей! Очень нравится...
Спасибо за статью, но жалко , что не бывает ротаторов написанных на html.
Хорошая идея рекламировать своё=) Сам как-то делал ротатор, но там были только баннеры и прописывалось всё в коде. Потом просто из массива выбирал. Спасибо за Ваш скриптик, попробую как-нибудь.
Этот метод мне больше по душе, чем готовый плагин. Поставил себе на блог.
Спасибо за скрипт.
Спасибо за статью изложено понятно, а вот как сделать банер в шапке темы. Тема iGadgets 1.0 от NewWpThemes, по задумке автора банер там должен быть, но при ее установке и настройке его там нет, как исправить.
Толковая статья, но есть же дополнения... Не плохая статья для тех, кто хочет делать всё своими руками
Да уж, не просто это все уразуметь. Действительно , наверно плагин просто поставить.
Думаю намного проще установить готовую CMS, например WP и на неё уже лепить всякие плагины.Ну это решение для тех кто совсем в php не бум бум, если иначе, то для чайников :)
Спасибо за заметку, оказалось полезным!
Вот так wordpress забирает работу у прогамистов. Конечно для многих плагин поставить удобней и дешевле, особенно если сам проект имеет low budget.
Спасибо за написаную статью! Очень помог скрипт моему сайту! Или как там его называют! Я в этом не шарю, а тут все доступно описано!
Здравствуйте. Ваш ротатор рекламы по временному счетчику или по обнавлению страницы срабатывает?
Очень полезная информация, да но с плагином меньше заморочек
Спасибо, за инфу. Как раз на днях собирался с подобной задачей разбираться.