Как и многие вебмастера, я сталкиваюсь с тем, что Яндекс-Директ, бывает, подтормаживает при загрузке. Причина - использование
document.write("<script>”);
в любом месте страницы, что при отсутствии ответа от сервера - приводит к блокировке HTML-парсера и “зависанию” страницы.
Сам Яндекс предлагает бороться с этой проблемой следующим образом, однако, как-то не уверенно ;-) - о возможности создания такого подключения можно узнать только из FAQ, а не из самого интерфейса системы при создании и подключении блоков.
Все здорово, правда в случае, если на сайте несколько блоков Директа - становится немного неудобно.
Сегодня я написал небольшую “оберточку”, которая может кому-нибудь пригодится
В теме сайта (/themes/ВАША_ТЕМА/theme.php для RunCMS, например)
function theme_show_context($data) { if (!isset($data['type'])) { $data['type'] = 'horizontal'; } if (!isset($data['limit'])) { $data['limit'] = 3; } if (!isset($data['stat_id'])) { $data['stat_id'] = 100; } $id = md5(serialize($data)); $html = "<!-- Яндекс.Директ --> <script type=\"text/javascript\"><!-- yandex_direct_place = '".$id."'; yandex_partner_id = 1907; yandex_site_bg_color = 'FFFFFF'; yandex_site_charset = 'windows-1251'; yandex_ad_format = 'direct'; yandex_font_size = 1; yandex_direct_type = '".$data['type']."'; yandex_direct_border_type = 'ad' yandex_direct_limit = ".$data['limit']."; yandex_direct_header_bg_color = 'FEEAC7'; yandex_direct_bg_color = 'FFF9F0'; yandex_direct_border_color = 'FBE5C0'; yandex_direct_title_color = '0000CC'; yandex_direct_url_color = '006600'; yandex_direct_all_color = '0000CC'; yandex_direct_text_color = '000000'; yandex_direct_hover_color = '0066FF'; yandex_direct_favicon = true; yandex_stat_id = ".$data['stat_id']."; document.write('<sc'+'ript type=\"text/javascript\" src=\"http://an.yandex.ru/system/context.js\"></sc'+'ript>'); //--></script>"; $GLOBALS['yandex_direct'][$id] = $html; return '<div class="yandex_direct_place" id="'.$id.'"></div>'; }
а в самом конце темы, прямо перед - выводится то, что накопилось
// calling yandex-direct foreach ($GLOBALS['yandex_direct'] as $id => $html) { echo $html; }
Вызов кода Яндекс-Директа в любом месте сайта теперь выглядит так
theme_show_context(array('stat_id' => 10, 'limit' => 2));
Теперь задержки нет и думать о связке DIV <> SCRIPT не приходится.


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