OpenCart Banner Module: расширение возможностей стандартного модуля

В этой статье речь пойдёт о расширении возможностей одного из стандартных модулей OpenCart, модуля показа баннеров. Цель доработки – получить возможность показывать на страницах магазина интерактивные баннеры в виде flash-объектов, java-апплетов, блоков javascript или любого другого кода в формате гипертекстовой разметки. Основная ставка сделана на размещение рекламных баннеров программ Google AdWords или Яндекс.Директ, также будет не менее интересно и полезно внедрить новые сервисы для покупателей на базе технологий Ajax.

В общем виде одна из форм модуля баннеров (см. меню Система/Дизайн/Баннеры) будет дополнена новой кнопкой, при нажатии которой можно выбрать один из типов баннера: изображение или код HTML.



Приоритет при показе имеет тип баннера с заполненным полем кода, т.е. если у баннера в текстовом поле есть данные, то они будут выведены на экран, в противном случае будет показано изображение.

Внимание! Перед каждой модификацией сайта или базы данных не забывайте делать резервные копиии.

Порядок внесения изменений

1. Используя веб-приложение PhpMyAdmin или консоль MySQL в структуру таблицы banner_image добавьте поле code с типом данных TEXT.

2. В файле ~/admin/model/design/banner.php для функций addBanner() и editBanner() в конструкции INSERT INTO для таблицы banner_image в конец текста запроса добавьте code = '" . $this->db->escape($banner_image['code']) . "'
2.1 Здесь же для функции getBannerImages() в переменную массива данных $banner_image_data[] добавьте 'code' => $banner_image['code']

3. В файлах ~/admin/language/russian/design/banner.php и ~/admin/language/english/design/banner.php добавим соответствующие им переменные перевода:

$_['text_empty'] = 'Очистить поле';
$_['entry_code'] = 'Код HTML:';
$_['button_code'] = 'Код HTML';
$_['button_image'] = 'Изображение';	$_['text_empty'] = 'Clear Field';
$_['entry_code'] = 'HTML Code:';
$_['button_code'] = 'HTML Code';
$_['button_image'] = 'Image';


4. В файле контроллера модуля баннера ~/admin/controller/design/banner.php для функции getForm() определяем переменные перевода из п.3:

$this->data['text_empty'] = $this->language->get('text_empty'); $this->data['entry_code'] = $this->language->get('entry_code'); $this->data['button_code'] = $this->language->get('button_code'); $this->data['button_image'] = $this->language->get('button_image');

Для этой же функции в переменную массива данных $this->data['banner_images'][] добавляем: 'code' => $banner_image['code']

5. Шаблон формы ~/admin/view/template/design/banner_form.tpl полностью заменяем на файл, размещенный по указанной ссылке.

6. В файле ~/catalog/controller/module/banner.php после строки foreach ($results as $result) { добавляем следующий код:

   if (!empty($result['code'])) {
    $this->data['banners'][] = array(
     'code' => $result['code']
    );
   } else


7. В шаблоне ~/catalog/view/theme/default/template/module/banner.tpl находим строку <?php if ($banner['link']) { ?> и заменяем на код ниже:

  <?php if (!empty($banner['code'])) { ?>
  <?php echo htmlspecialchars_decode($banner['code']); ?>
  <?php } elseif ($banner['link']) { ?>


Готово! Дополнительных настроек не требуется, все ранее сохранённые баннеры в системе останутся, для них станет доступно новое поле для ввода кода.

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

Теги:
BANNERS, EARNINGS, FLASH, GOOGLE ADWORDS, HTML-CODE, JAVA, OPENCART V.1.5+, БАННЕРЫ, МОДУЛИ, ПРОИЗВОЛЬНЫЙ КОД
Добавлено: 25 Февраля 2015 20:42:01 Добавил: Андрей Ковальчук Нравится 0
Добавить
Комментарии:
Нету комментариев для вывода...