Google & Yandex баннеры в компоненты Banners

+17
2.5K
Добрый день!
Была поставлена задача добавить возможность выводить через позиции {Баннер=номер позиции} баннеры гугла и яндекса. Вообще решение подойдет для любого кода html или javascript. Подсчет показов работать будет, а вот клики и CTR нет.
Сам код баннеров вы вставляете в файл TXT и его мы закачиваем как баннер.
Иллюстрация

И так приступим.
Нам понадобится внести изменения в языковой файл, файл model.php и в файл backend.php(админка)

Первое открываем /ПАПКАСАЙТА/languages/ru/admin/components/banners.php
Ищем
  1. $_LANG['AD_BANNER_FLASH'] ='Flash (swf) (468x60)';
  2.  
После добавляем нашу переменную:

  1. $_LANG['AD_BANNER_HTML'] ='HTML (google, yandex)';
Далее находим
  1. $_LANG['AD_BANNER_FILE_TYPES'] ='Только gif, jpg, jpeg, png, swf';
меняем на

  1. $_LANG['AD_BANNER_FILE_TYPES'] ='Только gif, jpg, jpeg, png, swf, txt';
Сохраняем и закрываем файл языковой. Для английского языка сделать тоже самое только в папке en. Сейчас мы определили языкове переменные которые будем использовать далее.

Открываем файл /ПАПКАСАЙТА/admin/components/banners/backend.php

Ищем код
  1. if(!in_array($ext, array('jpg','jpeg','gif','png','swf'))){
  2.  
нам надо добавить загрузку файла в формате txt

заменяем на код

  1. if(!in_array($ext, array('jpg','jpeg','gif','png','swf','txt'))){
  2.  
Далее нам надо добавить выбор типа загружаемого баннера
ищем
  1. <option value="swf" <?php if(@$mod['typeimg']=='swf') { echo 'selected'; } ?>><?php echo $_LANG['AD_BANNER_FLASH']; ?></option>
  2.  
После сразу добавляем
  1. <option value="txt" <?php if(@$mod['typeimg']=='txt') { echo 'selected'; } ?>><?php echo $_LANG['AD_BANNER_HTML']; ?></option>
тут как раз мы указали нашу языковую переменную.

И остается нам только файл model.php

Открываем /ПАПКАСАЙТА/components/banners/model.php

ищем
  1. public static function getSwfBanner($banner){
  2.  
  3.  
  4.  
  5. return '<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,19,0" width="100%" height="90">'."\n".
  6.  
  7. '<param name="movie" value="/images/banners/'.$banner['fileurl'].'?banner_id='.$banner['id'].'" />'."\n".
  8.  
  9. '<param name="quality" value="high" />'."\n".
  10.  
  11. '<param name="FlashVars" value="banner_id='.$banner['id'].'" />'."\n".
  12.  
  13. '<embed src="/images/banners/'.$banner['fileurl'].'?banner_id='.$banner['id'].'" quality="high" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" width="100%" height="90">'."\n".
  14.  
  15. '</embed>'."\n".
  16.  
  17. '</object>';
  18.  
  19.  
  20.  
  21. }
  22.  
После добавляем
  1.  
  2. public static function getTxtBanner($banner){
  3.  
  4. $f = file_get_contents("".$_SERVER['DOCUMENT_ROOT']."/images/banners/".$banner['fileurl']."", true);
  5. // Читать строку их текстового файла и записать содержимое
  6.  
  7. return $f;
  8. }
Проверку на наличие файла не добавлял, так как проходит перед загрузкой.

далее ищем
  1. if ($banner['typeimg']=='swf'){
  2.  
  3. $html = self::getSwfBanner($banner);
  4.  
  5. }
  6.  
добавляе

  1. if ($banner['typeimg']=='txt'){
  2.  
  3. $html = self::getTxtBanner($banner);
  4.  
  5. }
  6.  
Внимание!!! Данный последний код найдется и добавится в двух местах!!!


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

Вопросы или замечания приветствуются.
+2
Нил™ Нил™ 7 лет назад #
+
Даже удивительно что в компоненте баннеры по умолчанию нет такой возможности как вставить обычный html код.
+1
Erwin Erwin 7 лет назад #
Согласен нужно прям в коробку сразу запилить такое решение нужное!!!!
+1
Андрей Андрей 6 лет назад #
Отличное решение, осталось добиться, чтобы реферальные ссылки работали по клику на баннер.
Может быть есть возможность открыть прямую ссылку? через чекбокс.

Еще от автора

Политика безопасности и соглашение
Много споров было что в текст публиковать.
Готовим сервер VDS Nginx + php7.0-fpm +MySQL для Inst2
Добрый день! Данная записка более чем напоминание о том, что не забыть при установке и настройке VDS Nginx + php7.0-fpm +MySQL для Inst2.
Свои sql запросы в ICMS2
Это скорее всего напоминание себе, но пригодится многим, кто пытается адаптировать свои наработки под ICMS2.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.