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

186
Немного изменил компонент баннеры.

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



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

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

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

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

это

Код 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'].'" border="0" alt="'.$banner['title'].'"/></a>';
  3. }
заменил на это

Код PHP:
  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'].'" border="0" alt="'.$banner['title'].'"/></div><div class="a_3">'.$banner['title'].'</div></a></div>';
  3. }
переименуйте классы, как вам нравится
/s/номер баннера - новая ссылка перехода баннера


в том же файле

Код PHP:
  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.  
заменил на это

Код PHP:
  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 в корне сайта


это

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

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

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

Код PHP:
  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;}
Разное содержимое sitemap.xml для каждого из зеркал при мультиязычности сайта
Комментарии (0)

Нет комментариев. Ваш будет первым!