5 способов разместить контекстную рекламу на сайте

Рубрика: CMS MaxSite;
Метки:
5 способов разместить контекстную рекламу на сайте

Добрый день. На связи с вами Илья Земсков. Я занимаюсь разработкой полезных плагинов для maxSite CMS, и Сергей Михалевич пригласил поделиться с вами некоторыми моими советами по обустройству сайтов на этом замечательном движке. В моём первом материале на этом сайте я решил дать ответ на популярный вопрос о том, как разместить контекстную рекламу на сайт?

Итак, существует минимум 5 возможных способа разместить код контекстной рекламы на сайте, который работает на maxSite CMS. Интересно, вы все их знаете? wink

Я сознательно не конкретизирую код какой рекламной системы мы собрались разместить, т.к. подход к размещению не будет меняться будь то Adsense, РСЯ, Бегун, тизерная система или какая-то другая рекламная система. Главное, что для монетизации сайта вебмастер выбрал систему и получил от неё JS/HTML-код для размещения на сайте.

1 способ – разместить код в шаблоне

Самый очевидный способ. Для его реализации нужно найти желаемое место в php-коде шаблона и вставить выданный рекламной системой код в это место (при этом важно не забыть оформить переход от php-кода к html-коду). Например, если поставить задачу выводить adsense-код между заголовком статьи и её содержимым, то можно разместить код системы в type_foreach файл info-top.php. Получится нечто такое:

<?php if (!defined('BASEPATH')) exit('No direct script access allowed'); 
$p->format('edit', 'Edit', '<div class="right bg-yellow padding5 d-inline-block">', '</div>');
$p->format('cat', ' / ', '<div>', '</div>');
$p->format('date', 'D, j F Y г.', '<div><time datetime="[page_date_publish_iso]">', '</time></div>');
$p->html(NR . '<header>');
	$p->line('[edit][title]');
	$p->div_start('info info-top');
		$p->line('[date][cat]');
# здесь начинается вставка рекламного кода:
?>
<script type="text/javascript"><!--
google_ad_client = "pub-2819962478067849";
/* 468x60, vizr.ru */
google_ad_slot = "4365476481";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script>
<script type="text/javascript"
src="https://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
<?
# / здесь вставка закончилась
	$p->div_end('info info-top');
$p->html('</header>');
# end file

Чтобы показывать рекламу сразу на всех страницах сайта нужно поправить основной файл шаблона - main.php. Для размещения рекламы только на страницах типа page или только на страницах рубрик и т.п. в подпапке type папки шаблона ищем type-файлы page.php, category.php или файл того типа страниц, который вам нужен.

Более гибко размещать в коде type_foreach-файлов. В этом случае получается легко разместить в одном из предусмотренных автором шаблона мест для кастомизации вывода. Для использования этого метода желательно хорошо ориентироваться в файлах шаблона.

Основной минус описанного способа в том, что рекламный код может оказаться в нескольких файлах шаблона, что затрудняет последующее управление им и затрудняет модернизацию шаблона (придётся натыкаться на длинные куски рекламного кода).

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

2 способ – использовать плагин «Ушки»

В движке есть замечательный плагин «Ушки». Его задача выдавать по вызову содержимое «ушки» в любом запрошенном месте. Ушка может хранить в себе код рекламной системы. Вам остаётся только определить место вызова ушки с кодом. На следующем скриншоте я показал пример сохранения моего кода в ушке с именем «adsense» (чтобы посмотреть картинку в полном размере - щелкните по ней):

[image=https://expert-css.com/uploads/2014/mini/01_ushka_adsense.png 01_ushka_adsense.png]https://expert-css.com/uploads/2014/01_ushka_adsense.png[/image]

В плагине также есть инструкция по применению, из которой мы видим, что для отображения рекламного кода нужно вызвать ушку «adsense». Если продолжить рассмотрение задачи выводить adsense-код между заголовком статьи и её содержимым с помощью type_foreach файла info-top.php, то получится такой код:

<?php if (!defined('BASEPATH')) exit('No direct script access allowed'); 
$p->format('edit', 'Edit', '<div class="right bg-yellow padding5 d-inline-block">', '</div>');
$p->format('cat', ' / ', '<div>', '</div>');
$p->format('date', 'D, j F Y г.', '<div><time datetime="[page_date_publish_iso]">', '</time></div>');
$p->html(NR . '<header>');
	$p->line('[edit][title]');
	$p->div_start('info info-top');
		$p->line('[date][cat]');
		# здесь начинается вставка рекламного кода:	
		if (function_exists('ushka')) echo ushka('adsense');
		# здесь вставка закончилась	
	$p->div_end('info info-top');
$p->html('</header>');
# end file

Таким образом, этот способ позволяет в будущем легко сменить рекламный код, если мы решим перейти в другую рекламную систему (например, поставить вместо Adsense код РСЯ, когда сайт в неё примут). Нам не придётся редактировать файлы шаблона, будет достаточно изменить содержимое ушки adsense.

При рассмотрении первых двух способов размещения рекламного кода я брал за основу самый простой случай – когда надо разместить рекламу на всех страницах сайта. Однако, бывают сайты, на которых нужно довольно выборочно показывать рекламу. Например, отображение сторонней рекламы надо отключить, если на странице происходит подписка на очередной вебинар или рассылку (отключить чтобы не отвлекать от целевого действия wink ), но на страницах с полезными советами или ответами на вопросы рекламу вполне можно оставить. Как решается такая задача?

Обычно решается с помощью дополнительного программирования. Например, чтобы показывать рекламу на страницах с определённым id надо, во-первых, создать ушку, где будут храниться id «правильных страниц», а во-вторых, вместо простого кода вызова ушки использовать такой код:

$show_adsense = array_map('trim', explode(“,”, trim(ushka('adsense_pagesid'))));
if( is_type('page') && in_array($p->page['page_id'],  $show_adsense ) )
{
	echo ushka('adsense');
}

Здесь ушка «adsense_pagesid» хранит (через запятую) id страниц, где реклама должна отображаться. Ушка «adsense» всё также хранит adsense-код (чтобы посмотреть картинку в полном размере - щелкните по ней).

[image=https://expert-css.com/uploads/2014/mini/02_ushka_pagesid.png 02_ushka_pagesid.png]https://expert-css.com/uploads/2014/02_ushka_pagesid.png[/image]

В принципе, зная php и досконально разобравшись в архитектуре движка можно реализовать условия отображения насколько хватит фантазии любой сложности. Но не всем вебмастерам хочется иметь дело с php-кодом, тем более что решаемые задачи, как правило, довольно стандартны и, по идее, должны иметь «шаблонные решения». А они существуют, и речь о них пойдёт дальше.

3 способ – использовать плагин «AdsCut»

Основная и единственная задача плагина AdsCut заменять в тексте страницы бб-код [cut] на ушку с рекламой. Т.е. рекламный код всё также хранится в ушке, но теперь вам не нужно будет громоздить в шаблоне php-код замены cut на рекламу. У плагина только одна значимая (хотя галочку «включить плагин» тоже можно было бы признать таковой, но она дублирует стандартные возможности движка по выключению плагинов) настройка – имя ушки с кодом рекламы (чтобы посмотреть картинку в полном размере - щелкните по ней):

[image=https://expert-css.com/uploads/2014/mini/03_adscut.png 03_adscut.png]https://expert-css.com/uploads/2014/03_adscut.png[/image]

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

4 способ – использовать плагин «AdInsertion»

Рассматриваемый плагин кроме возможности выводить рекламу на месте бб-кода [cut] умеет вставлять независимые объявления в начало и конец каждой страницы, а также отключать показ на страницах, которые перечислены в настройках плагина. Ещё умеет отключать показ рекламы на «главной странице» (однако по php-коду текущей версии плагина понятно, что при такой настройке отображение отключается везде, кроме страниц с публикациями).

Интересной возможностью плагина является функция «обёртывания » (при выводе) рекламного кода в специальный DIV-блок, для которого можно задать специальные css-стили.

В целом, установка и настройка плагина проста и очевидна (чтобы посмотреть картинку в полном размере - щелкните по ней):

[image=https://expert-css.com/uploads/2014/mini/04_adinsertion.png 04_adinsertions.png]https://expert-css.com/uploads/2014/04_adinsertions.png[/image]

Мне остаётся только указать место, где можно скачать плагин - https://moonback.ru/page/adinsertion

5 способ – использовать компонент «Контекстная реклама»

Предлагаемый способ в чём-то схож с предыдущими способами, но так как основан на использовании компонентов, имеет свои особенности:

Во-первых, установка компонента. Т.к. компоненты располагаются в специальной папке шаблона, то надо скопировать компонент в неё (а не в папку плагинов).

Во-вторых, нужно настроить опции компонента. Для этого нужно в админ-панели перейти на страницу настроек шаблона и найти там вкладку с настройками компонента. Выглядит она примерно так (чтобы посмотреть картинку в полном размере - щелкните по ней):

[image=https://expert-css.com/uploads/2014/mini/05_context_ads.png 05_context_adss.png]https://expert-css.com/uploads/2014/05_context_adss.png[/image]

Компонент имеет много настроек, но благодаря названиям и инструкциям к полям их освоение не составляет большого труда. Поэтому лучше ещё раз обозначу возможности, которые открываются благодаря этим настройкам:

  • Чтобы разрешить отображение рекламы (или, наоборот, временно отключить её) теперь нет необходимости (как это было в некоторых предыдущих способах) трогать настройки ушек и т.п. Надо просто поставить (или, соответственно снять) галочку в опции «Включить отображение рекламы».
  • Как и плагин AdInsertion компонент умеет работать с конкретными страницами. Только в компоненте происходит не запрет показа рекламы на определённых страницах, а разрешение. Также использован иной подход к заданию страниц с рекламой – надо указывать ID страниц (которые доступны вебмастеру в админ-панели).
  • В компоненте есть удобная возможность (специальная «галочка») блокировать отображение рекламы при работе сайта на локальном компьютере вебмастера. Она полезна для тех, кто модернизирует сайт на локальной машине, а только потом закачивает его на веб-сервер хостера. Выключать на локальной машине отображение рекламы нужно хотя бы для того, чтобы рекламная система не считала «мусорные » показы и тем самым не портила внутренний CTR-рейтинг рекламной площадки (актуально не для всех систем, но всё же).
  • Возможность использовать дополнительные условия фильтрации отображения рекламы без громоздкого программирования. Конечно, немного знать архитектуру движка и некоторые стандартные функции всё-таки будет нужно.
  • Имеется возможность удобно задавать единый или раздельный рекламный код. Эта возможность особенно полезна, когда, например, есть желание попробовать поработать с рекламным кодом с асинхронной загрузкой.
  • Как и в плагине AdInsertion имеется возможность «обёртывания » (при выводе) рекламного кода в специальный DIV-блок (да и вообще в произвольный html-код).ХЪ

Третьим важным шагом по установке компонента на сайт является прописывание вызова компонента в шаблоне. Но чтобы вы не пугались, скажу, что программировать вам придётся не больше, чем в случае использования ушек (смотрите 2-ой способ). А то может и меньше (если, например, решите воспользоваться местами вызова, ранее заготовленными разработчиком шаблона). В частности, необходимо разместить (аналогично 2-му способу) в шаблоне такой код:

if ($fn = mso_fe('components/context-ads/context-ads.php')) require($fn);

Как видите, ничего сложного. Достаточно скопировать этот код (он, кстати, приводится в прикладываемом к компоненту файле справки) в нужный type_foreach файл. Всё. После этого шага установки можно открывать сайт и проверять отображение рекламы согласно настроенным условиям.

Изначальной идеей появления компонента «Контекстная реклама» была необходимость вынести из ушек многочисленные настройки отображения рекламы и уменьшить количество обслуживающего кода, который находится в шаблоне. Как видите, компонент решил эти задачи и позволил не засорять шаблон избыточным копипастом рекламного и/или обслуживающего (проверку условий отображения) кода. Все настройки хранятся в одном месте и в удобном виде.

После освоения опций компонента перед вебмастерами встаёт логичный вопрос - а как быть, если на сайте нужно разместить код нескольких рекламных систем? Ответ простой – нужно создать копию компонента (с другим именем папки) и повторить все шаги настройки для нового рекламного кода. Концепция использования компонентов в движке изначально подразумевала, что будут создавать многочисленные дубликаты стандартных компонентов с возможностью их кастомизации под нужды вебмастера. Так что вы можете спокойно проделать эту операцию без особого риска повредить сайт или потерять возможность комфортно обновить движок.

Благодаря тому, что компоненты не страдают синдромом «неприкосновенности» (которому подвержены стандартные файлы движка и плагинов), также можно решать и более сложные задачи по размещению рекламы на сайте. Просто вам может понадобиться вносить более серьёзные правки в php-код компонента. Так что описанный компонент вполне можно использовать как хорошую заготовку для решения вашей задачи.

Закончить описание пятого способа размещения рекламы хотел бы упоминанием (для объективности стоит это сделать) одного момента, в котором компонент незначительно, но всё-таки уступает описанным ранее плагинам - компонент не может напрямую реагировать на хуки. Однако этот минус можно легко обойти – достаточно разместить код вызова компонента в ушку и с помощь плагина ushki_to_hook настроить вызов ушки при наступлении нужного хука. В общем, это и не минус вовсе, наверно. smile

Скачать описанный компонент можно здесь - https://vizr.ru/page/component-context-ads

Вместо заключения

Ещё остались, как минимум, два элементарных способа: размещение в сайдбаре текстового виджета с рекламным кодом в нём и размещение рекламного кода на главной странице в блоке «текст перед всеми постами». Я не стал включать эти способы в обзор. Во-первых, они вполне очевидны и не требуют лишних пояснений. А во-вторых, хотел получить красивое название статьи. smile

Материал не является подробной инструкцией. Поэтому, если у вас возникнет желание прочитать более развёрнутый рассказ о каком-то из описанных способов – дайте знать в комментариях! Ну или задавайте свои вопросы. Будем вместе искать ответы smile

Спасибо за внимание! До новых встреч!

Автор статьи: Илья Земсков.

Комментариев: 35 RSS

Оставьте комментарий!

Вы можете войти под своим логином или зарегистрироваться на сайте.

Комментариев: 35
  •  Илья Земсков | 14 апреля 2014 в 17:05:04

    Очень хорошо, что вопросов нет smile Значит можно переходить к следующей теме smile

  •  Андрей | 16 апреля 2014 в 17:44:28

    Привет!

    У матросов есть вопросы )

    1. Не затронута тема A/B-тестирования. Это когда вебмастер хочет узнать какая реклама более эффективная. Некоторое время показываем попеременно на одном и том же месте разные рекламные блоки (например adsens и Директ). Через пару недель смотрим какая реклама оказалась более выгодной, ее и оставляем.

    2. У меня сейчас возникла такая проблема: на сайте довольно большой разброс по объему статей. Есть 10000 знаков, а есть и 300. Я хочу, чтобы в больших статьях показывались блоки над текстом и под. А в маленьких только верхний (а то получается рекламы больше, чем контента). Как это сделать? Я так подозреваю, нужно измерить объем текста strlen() и сделать условие, чтобы, например при strlen()>1000 реклама показывалась.

    •  Илья Земсков | 17 апреля 2014 в 05:12:55
      Не затронута тема A/B-тестирования. Это когда вебмастер хочет узнать какая реклама более эффективная. Некоторое время показываем попеременно на одном и том же месте разные рекламные блоки (например adsens и Директ). Через пару недель смотрим какая реклама оказалась более выгодной, ее и оставляем.

      Т.к. значения параметров «эффективности» лежат за пределами движка (читай в системах рекламы), то средств автоматизированного A/B-тестирования в общем случае (когда заранее не известны тестируемые системы) не существует. Тем более их нет для maxSite CMS.

      Провести A/B-тестирование в ручную можно самому используя описанные средства именно так, как ты указал. Я как-то и не подумал, что об этом надо специально говорить - ведь всё равно вебмастера будут перебором искать ту рекламную систему, которая даст больший доход за контрольный период.

      •  Андрей | 17 апреля 2014 в 12:17:16
        средств автоматизированного A/B-тестирования в общем случае (когда заранее не известны тестируемые системы) не существует

        Я говорил немного не о том. Я понимаю, что полностью автоматизированное A/B-тестирование средствами движка невозможно.

        Провести A/B-тестирование в ручную можно самому используя описанные средства именно так, как ты указал. Я как-то и не подумал, что об этом надо специально говорить - ведь всё равно вебмастера будут перебором искать ту рекламную систему, которая даст больший доход за контрольный период.

        Тестирование в ручную - как я понял, ты имеешь в виду, поставить одну рекламу на неделю, потом другую и сравнить?

        У такого способа существенный недостаток: за разные недели может быть большая разница в трафике, в составе аудитории сайта, поэтому у такого метода большая погрешность.

        Я подразумевал использование скрипта, чтобы в один и тот же период сайт на одном и том же месте показывал разные рекламы. Вот для примера часть кода на JS для четырех рекламных блоков:

        var rnd = getRandomInt( 0, 3 );
         
        if( rnd == 0 ){
        [removed]( code1 );
        } elseif( rnd == 1 ) {
        [removed]( code2 );
        } elseif( rnd == 2 ) {
        [removed]( code3 );
        } else {
        [removed]( code4 );

        Я предлагал похожий способ рассмотреть для Maxsite.

        И надо еще учесть возможное влияние кеширования (чтобы не получилось, что один вариант рекламного блока попал в кеш и выводится только он).

        •  Илья Земсков | 18 апреля 2014 в 22:10:56

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

          Если наберётся достаточно народу, которому нужна такая фича, то готов добавить в комплект компонента такой функционал.

  •  Андрей | 16 апреля 2014 в 18:17:31

    Со вторым вопросом разобрался. Текст текущей одиночной страницы содержится в $page_content.

    Соответственно для рекламы, которая выводится ушкой "ads_bottom" использовал такой код:

    <?php
      if (function_exists('ushka') && strlen($page_content)>2000) echo ushka('ads_bottom');
    ?>
    •  Илья Земсков | 17 апреля 2014 в 05:20:07

      Да, можно так (хотя для UTF8 по идее надо бы использовать mb_strlen). А ты не думал попробовать выводить блок рекламы внутри больших текстов? Скажем, после 5000 знаков в тексте объёмом 10000 знаков.

      •  Андрей | 17 апреля 2014 в 11:58:52

        У меня сайты с большими текстами, в которые будет вставляться реклама, пока в процессе наполнения и взлета )

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

        А твоя идея очень хорошая для расширения темы статьи! Надо учесть, что скрипт, вставляющий рекламу в текст, должен найти для нее подходящее место. Нельзя же отрезать ровно 5000 знаков и воткнуть адсенс. Скрипт должен уметь находить конец абзаца или раздела (ориентируясь на заголовки , например).

        •  Илья Земсков | 18 апреля 2014 в 22:04:57

          У меня есть клиент с такой ситуацией (много больших текстов) и я решил расставлять руками, ибо довольно часто руками получается намного лучше и гармоничнее. Хотя да, сейчас в голове начинает складываться возможная стратегия для реализации автоматической расстановки рекламных блоков. Но всё времени нет. Если бы было больше клиентов с такой задачей - всяко бы озадачился smile

  •  Виктория | 11 мая 2014 в 23:49:23

    Здравствуйте, подскажите как разместить рекламный HTML код на в вконткте? Заранее спасибо.

    •  Илья Земсков | 14 мая 2014 в 19:15:15

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

  •  Александр Крылов | 30 октября 2014 в 20:26:30

    Спасибо за статью. Самым простым для меня способом оказался способ с использованием плагина AdInsertion

  •  Александр | 18 февраля 2015 в 13:00:29

    Статейка-то полезная, но её трудно найти. Вот и я набрёл совершенно случайно. Это непорядок. Нужно как-то это поправить...

    Ведь в первую очередь статья нужна новичкам как бы (хотя дело и о рекламе)

    А так многие уходят на иные "движки" как только сталкиваются с МИНИМИЗАЦИЕЙ ИНФЫ о MaxSite)))). А нужно шоп они оставались...

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

    Вот.

    ВСем удачи!

  •  eqysi | 21 февраля 2016 в 22:53:40

    laserowa depilacja

  •  etahug | 25 февраля 2016 в 02:29:51

    towards What you can do When Your Other half is the Unpopular Choice

  •  uzazodek | 6 марта 2016 в 12:15:11

    An excellent Birthday messages hint for utilizing your apple iphone is to buy some sort of mobile app that may help you find dining establishments around where you are. There is actually an application accessible that may randomly talk about a restaurant as outlined by what you devote such as mexican meals, italian, or whatever you desire.

  •  afijunaj | 22 июня 2016 в 11:53:05

    Strategies For geschenkideen für frauen Creating Wealth With Article Promotion

  •  aqoqewu | 29 августа 2016 в 23:35:34

    kredyty hipoteczne pod zastaw mieszkania

  •  ewuqi | 11 октября 2016 в 15:57:12

    Как погодка сегодня? Я смотрел в yandex тепло! Всегда бы так.

  •  exyqyhici | 18 октября 2016 в 08:10:17

    dietetycy Jedwabne

  •  awarovi | 20 октября 2016 в 02:36:57

    prokru.pl

  •  ymigahafo | 26 ноября 2016 в 23:14:20

    kalendarze adwentowe

  •  ematyra | 28 ноября 2016 в 05:46:07

    kalendarz adwentowy

  •  ekuqez | 1 февраля 2017 в 23:58:34

    kulturizmas

  •  yzurytez | 13 июля 2017 в 11:57:37

    grüner kaffee kapseln kaufen

  •  ohotiva | 15 сентября 2017 в 21:12:37

    https://zarabianie.wzsp.pl

  •  ipeho | 25 ноября 2017 в 23:57:32

    witamina c dla dzieci

  •  iwevi | 27 декабря 2017 в 10:58:45

    nieciecki studnie

  •  ygimyhet | 4 февраля 2018 в 00:07:01

    Are you currently Legalne zakłady bukmacherskie w Polsce lista picking up a brand new telephone?

  •  ahamowyp | 6 февраля 2018 в 06:11:17

    skuteczne tabletki na cellulit

  •  oxoqa | 14 февраля 2018 в 10:04:29

    Szybkie pożyczki dla firm

  •  obyduk | 18 октября 2018 в 16:09:34

    https://forum24p.flu.cc

  •  oravomix | 8 ноября 2018 в 19:50:22

    https://suplementy.wzsp.pl

  •  eqozuzi | 12 февраля 2019 в 23:34:06

    blog

  •  Павел | 9 марта 2019 в 13:05:53

    Понятно и интересно спасибо,