Тормозит Яндекс-Директ?

Michael_XIII аватар

Как и многие вебмастера, я сталкиваюсь с тем, что Яндекс-Директ, бывает, подтормаживает при загрузке. Причина - использование

  1. document.write("<script>”);

в любом месте страницы, что при отсутствии ответа от сервера - приводит к блокировке HTML-парсера и “зависанию” страницы.

Сам Яндекс предлагает бороться с этой проблемой следующим образом, однако, как-то не уверенно ;-) - о возможности создания такого подключения можно узнать только из FAQ, а не из самого интерфейса системы при создании и подключении блоков.

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

Сегодня я написал небольшую “оберточку”, которая может кому-нибудь пригодится

В теме сайта (/themes/ВАША_ТЕМА/theme.php для RunCMS, например)

  1. function theme_show_context($data) {
  2. if (!isset($data['type'])) {
  3. $data['type'] = 'horizontal';
  4. }
  5.  
  6. if (!isset($data['limit'])) {
  7. $data['limit'] = 3;
  8. }
  9.  
  10. if (!isset($data['stat_id'])) {
  11. $data['stat_id'] = 100;
  12. }
  13.  
  14. $id = md5(serialize($data));
  15.  
  16.  
  17.  
  18. $html = "<!-- Яндекс.Директ -->
  19. <script type=\"text/javascript\"><!--
  20. yandex_direct_place = '".$id."';
  21. yandex_partner_id = 1907;
  22. yandex_site_bg_color = 'FFFFFF';
  23. yandex_site_charset = 'windows-1251';
  24. yandex_ad_format = 'direct';
  25. yandex_font_size = 1;
  26. yandex_direct_type = '".$data['type']."';
  27. yandex_direct_border_type = 'ad'
  28. yandex_direct_limit = ".$data['limit'].";
  29. yandex_direct_header_bg_color = 'FEEAC7';
  30. yandex_direct_bg_color = 'FFF9F0';
  31. yandex_direct_border_color = 'FBE5C0';
  32. yandex_direct_title_color = '0000CC';
  33. yandex_direct_url_color = '006600';
  34. yandex_direct_all_color = '0000CC';
  35. yandex_direct_text_color = '000000';
  36. yandex_direct_hover_color = '0066FF';
  37. yandex_direct_favicon = true;
  38. yandex_stat_id = ".$data['stat_id'].";
  39. document.write('<sc'+'ript type=\"text/javascript\" src=\"http://an.yandex.ru/system/context.js\"></sc'+'ript>');
  40. //--></script>";
  41.  
  42. $GLOBALS['yandex_direct'][$id] = $html;
  43. return '<div class="yandex_direct_place" id="'.$id.'"></div>';
  44. }

а в самом конце темы, прямо перед - выводится то, что накопилось

  1. // calling yandex-direct
  2. foreach ($GLOBALS['yandex_direct'] as $id => $html) {
  3. echo $html;
  4. }

Вызов кода Яндекс-Директа в любом месте сайта теперь выглядит так

  1. theme_show_context(array('stat_id' => 10, 'limit' => 2));

Теперь задержки нет и думать о связке DIV <> SCRIPT не приходится.

5
Average: 5 (1 vote)
Your rating: None

Отправить комментарий