Pull to refresh

Небольшая обертка для нескольких блоков Яндекс-Директа на странице c «отложенной» загрузкой

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

document.write("

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

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

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

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

В теме сайта (/themes/ВАША_ТЕМА/theme.php для XOOPS/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 = "";

$GLOBALS['yandex_direct'][$id] = $html;
return '<'.'div class="yandex_direct_place" id="'.$id.'">
';
}


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

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

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

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

Теперь задержки нет и думать о связке DIV <-> SCRIPT не приходится.
Tags:
Hubs:
Total votes 7: ↑5 and ↓2+3
Comments6

Articles