Контроллеры модуля рекламы

Показ баннера из группы баннеров

Внесите в код макета(ов) в соответствующие места показ одного баннера из группы баннеров (вместо 1 укажите идентификатор группы баннеров)

<?php
if (Core::moduleIsActive('advertisement'))
{
	$Advertisement_Group_Controller_Show = new Advertisement_Group_Controller_Show(
		Core_Entity::factory('Advertisement_Group', 1)
	);
	$Advertisement_Group_Controller_Show
		->xsl(
			Core_Entity::factory('Xsl')->getByName('ОтображениеБаннера')
		)
		->show();
}
?>

Показ двух и более баннеров из группы баннеров

<?php
if (Core::moduleIsActive('advertisement'))
{
	$Advertisement_Group_Controller_Show = new Advertisement_Group_Controller_Show(
		Core_Entity::factory('Advertisement_Group', 1)
	);
	$Advertisement_Group_Controller_Show
		->limit(2)
		->xsl(
			Core_Entity::factory('Xsl')->getByName('ОтображениеБаннера')
		)
		->show();
}
?>

Защита от показа баннера поисковым ботам

При наличии модуля статистики посещаемости код баннера можно располагать внутри условия

<?php
if (!Core::moduleIsActive('counter') || !Counter_Controller::checkBot(
	Core_Array::get($_SERVER, 'HTTP_USER_AGENT')
))
{
   // Блок показа баннера
}
?>

Контекстный показ баннеров

Контекстный показ баннеров может использоваться с разными источниками контекста — текстом страницы, текстом поискового запроса и т.п.

Контекстный показ баннера в зависимости от содержания страницы

Для показа баннера в зависимости от содержания страницы получим текст страницы следующим образом:

<?php
ob_start();

// здесь показ контента, в зависимости от которого необходимо выводить баннер

$sContextualWords = ob_get_clean();

if (Core::moduleIsActive('advertisement'))
{
	$Advertisement_Group_Controller_Show = new Advertisement_Group_Controller_Show(
		Core_Entity::factory('Advertisement_Group', 1)
	);
	$Advertisement_Group_Controller_Show
		->words($sContextualWords)
		/*  Указываем на необходимость показа только баннеров, найденных по контексту.
			Если ни одного контекстного баннера не будет найдено – ничего не будет показано. */
		->justContext(TRUE)
		->xsl(
			Core_Entity::factory('Xsl')->getByName('ОтображениеБаннера')
		)
		->show();
}

Контекстный показ баннера в зависимости от поискового запроса, по которому пользователь пришел на сайт

Добавим в начало каждого макета код, который будет определять поисковый запрос, по которому пришел пользователь и сохранять этот запрос в cookie. При определении поискового запроса используется модуль «Статистика посещаемости». Если модуль «Статистика посещаемости» отключен или отсутствует, нижеприведенный код работать не будет. Добавлять код необходимо в самое начало макета.

<?php
if (Core::moduleIsActive('counter'))
{
	$aSearchSystem = Counter_Controller::instance()->isSearchSystem(
		Core_Array::get($_SERVER, 'HTTP_REFERER')
	);

	if ($aSearchSystem)
	{
		$search_query = trim($aSearchSystem['search_query']);
		if (strlen($search_query) <= 255)
		{
			setcookie('hostcms_search_query', $search_query, time() + 31536000, '/');
			$_COOKIE['hostcms_search_query'] = $search_query;
		}
	}
}

Далее остается передать текст поискового запроса контроллеру:

<?php
if (Core::moduleIsActive('advertisement'))
{
	$Advertisement_Group_Controller_Show = new Advertisement_Group_Controller_Show(
		Core_Entity::factory('Advertisement_Group', 1)
	);
	$Advertisement_Group_Controller_Show
		->words(Core_Array::get($_COOKIE, 'hostcms_search_query'))
		/*  Указываем на необходимость показа только баннеров, найденных по контексту. 
			Если ни одного контекстного баннера не будет найдено – ничего не будет показано. */
		->justContext(TRUE)
		->xsl(
			Core_Entity::factory('Xsl')->getByName('ОтображениеБаннера')
		)
		->show();
}

Создание страницы для учета нажатий на баннер

В структуре сайта создайте страницу с именем в меню «Переход по ссылке баннера» и названием раздела «showbanner», отключите отображение данной страницы в меню. Выберите тип страницы «Типовая динамическая страница», из выпадающего списка «Раздел» выберите «Реклама», в выпадающем списке «Страница» выберите «Переход по ссылке баннера».

Если при нажатии на баннер Вы получите сообщение Apache, например «OK. The document has moved here», необходимо заменить серверный редирект на JavaScript, для этого в разделе «Страница» выберите «Переход по ссылке баннера (JavaScript)».

Не нашли ответ на свой вопрос в документации? Направьте обращение в службу поддержки или онлайн чат.

Комментарии

  • Произвольная сортировка

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

    Представим, что есть группа баннеров, с чётко определёнными датами начала показа и нам требуется, чтобы сначала выводились старые баннеры, а самые новые были в конце. Пример кода:

    $Advertisement_Group_Controller_Show = new Advertisement_Group_Controller_Show(Core_Entity::factory('Advertisement_Group', 1));
    $Advertisement_Group_Controller_Show
    ->xsl(Core_Entity::factory('Xsl')->getByName('ИмяВашегоШаблона'))
    ->limit(5)
    ->advertisements()
    ->queryBuilder()
    ->clearOrderBy()
    ->orderBy('start_datetime', 'ASC');
    $Advertisement_Group_Controller_Show->show();

    Всё довольно обычно для HostCMS, просто про «... ->advertisements() ...» нигде не упоминается.

    03.09.2014 13:12:58
    DigitalBug