![]() ![]() ![]()
Какой рейтинг вас больше интересует?
|
![]()
Пишем простейший ротатор рекламы для своего сайта2011-08-12 09:44:55 (читать в оригинале)Некоторые наверно заметили, что я решил прикрыть свой эксперимент по монетизации блога и страничка рекламы нынче висит просто для проформы. Сейчас вместо последних постов из блогов рекламодателей висят мои собственные объявления, рефки и ссылки на свои проекты. Место теперь только одно и оно не продаётся. Для этого пришлось немного переписать скрипт для вывода объявлений. Точнее сделать его намного проще. Итоги и причины закрытия эксперимента по монетизацииСчитаю эксперимент довольно удачным. Было набрано два десятка рекламодателей и получено 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, то весь движочек можно поместить в один небольшой файл. Получится примерно так: <?phpinclude_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 и сразу же оформить заказ. С уважением, Алексей Опанасенко aka Never Lex.
|
![]() ![]()
Категория «Истории»
Взлеты Топ 5
Падения Топ 5
![]()
Популярные за сутки
|
Загрузка...

взяты из открытых общедоступных источников и являются собственностью их авторов.