Изменения в компоненте «баннеры»: количество, внешний вид, формат ссылки

+11
1.01K
Немного изменил компонент баннеры.

Вместо одного баннера, теперь выводится два подряд.
Сам баннер сопровождается текстовой ссылкой, что позволяет формировать тизеры картинка + заголовок.
Обернул каждый элемент тизера в дивы, и добавил классов, чтобы можно было форматировать, стилизовать тизеры как угодно через css.
И изменил стандартную ссылку баннера с вида /banner1 на более неопределённую /s/1, менее очевидную для всяких адблоков и вообще мне так больше нравится.



В итоге получается такой Директ...

Иллюстрация

Что для этого изменил.

Содержимое файла components/bannes/model.php

это

  1. public static function getImageBanner($banner){
  2. return '<a href="/gobanner'.$banner['id'].'" title="'.$banner['title'].'" target="_blank"><img src="/images/banners/'.$banner['fileurl'].'" alt="'.$banner['title'].'"/></a>';
  3. }
заменил на это

  1. public static function getImageBanner($banner){
  2. return '<div class="a_1"><a href="/s/'.$banner['id'].'" title="'.$banner['title'].'" target="_blank"><div><img class="a_2" src="/images/banners/'.$banner['fileurl'].'" alt="'.$banner['title'].'"/></div><div class="a_3">'.$banner['title'].'</div></a></div>';
  3. }
переименуйте классы, как вам нравится
/s/номер баннера — новая ссылка перехода баннера


в том же файле

  1.  
  2. $banner = $inDB->get_fields('cms_banners', "position = '$position' AND published = 1 AND ((maxhits > hits) OR (maxhits = 0))", '*', 'RAND()');
  3. if(!$banner) { return $html; }
  4.  
  5. if ($banner['typeimg']=='image'){
  6. $html = self::getImageBanner($banner);
  7. }
  8.  
  9. if ($banner['typeimg']=='swf'){
  10. $html = self::getSwfBanner($banner);
  11. }
  12.  
  13. if ($html) {
  14. // обновляем статистику просмотра баннера
  15. $inDB->query("INSERT IGNORE INTO cms_banner_hits (banner_id, ip) VALUES ('{$banner['id']}', '{$inUser->ip}')");
  16. if($inDB->get_last_id()){
  17. $inDB->query("UPDATE cms_banners SET hits = hits + 1 WHERE id= '{$banner['id']}'");
  18. }
  19. }
  20.  
заменил на это

  1.  
  2. $banners = $inDB->get_table('cms_banners', "position = '$position' AND published = 1 AND ((maxhits > hits) OR (maxhits = 0)) ORDER BY RAND() LIMIT 2", '*');
  3. if(!$banners) { return $html; }
  4. $html = '';
  5.  
  6. foreach($banners as $banner){
  7. if ($banner['typeimg']=='image'){
  8. $html .= self::getImageBanner($banner);
  9. }
  10.  
  11. if ($banner['typeimg']=='swf'){
  12. $html .= self::getSwfBanner($banner);
  13. }
  14.  
  15. if ($html) {
  16. // обновляем статистику просмотра баннера
  17. $inDB->query("INSERT IGNORE INTO cms_banner_hits (banner_id, ip) VALUES ('{$banner['id']}', '{$inUser->ip}')");
  18. if($inDB->get_last_id()){
  19. $inDB->query("UPDATE cms_banners SET hits = hits + 1 WHERE id= '{$banner['id']}'");
  20. }
  21. }
  22.  
  23. }
  24.  
  25.  
LIMIT 2 — количество баннеров


Чтобы новая ссылка баннера работала в файле url_rewrite.php в корне сайта


это

  1. $rules[] = array(
  2.  
  3. 'source' => '/^gobanner([0-9]+)$/ui',
  4.  
  5. 'target' => 'banners/{1}',
  6.  
  7. 'action' => 'rewrite'
  8.  
  9. );

заменить на это

  1. $rules[] = array(
  2.  
  3. 'source' => '/^s\/([0-9]+)$/ui',
  4.  
  5. 'target' => 'banners/{1}',
  6.  
  7. 'action' => 'rewrite'
  8.  
  9. );
стили как на скриншоте

  1. .a_1{width:100%; max-width:400px; height:auto; padding:10px; box-sizing:border-box; border:1px solid silver; border-radius:4px;}
  2. .a_3{font-size:22px; text-decoration:underline;}
  3. .a_2{width:100%; height:auto;}
Нет комментариев. Ваш будет первым!

Еще от автора

Капча на сайт или разделы сайта
Если нужно, закрыть весь сайт или некоторые его разделы каптчей.
Пинг поисковых систем для первой ветки
Небольшая интеграция инструментов для пингования, чтобы сделать его чуть удобнее
Генератор карты сайта в формате txt на лету без крона
Вообще то где то тут уже есть вполне рабочие генераторы карты для первой ветки, но этот вариант тоже имеет право быть.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.