Нулевой сниппет или расширенный сниппет, схема блока ответов в GoogleAds
Определимся для чего нужен нулевой сниппет в GoogleAds, рассмотрим структуру сниппета вопрос-ответ. Приведем пример в html и json схеме.
Столкнувшись на днях с библиотекой
Информацию брал
1. Подключение на сайте:
В статье, на официальном сайте (ссылка на которую выше) приведена
В главном файле шаблона перед закрывающимся тегом body, подключаем и запускаем скрипт.
<!DOCTYPE html>
<html>
<head>
...
</head>
<body>
....
<!-- sbjs аналитика -->
<script src="sourcebuster.min.js"></script>
<script>
sbjs.init();
</script>
<!-- END sbjs аналитика -->
</body>
</html>
Для проверки, работает ли добавленный скрипт, в консоли браузера следует набрать:
sbjs.get
Не должно возникать ошибки и должен быть выдан объект с информацией.
Информация, которая хранится в sbjs.get.current потребуется нам для определения источника:
2. Работа на серверной стороне:
Sourcebuster.js работает с cookie. Поэтому актуальная информация вступит в силу только после перезагрузки страницы или посещения пользователем любой другой ссылки на сайте (чтобы была перегрузка страницы и обновлена кука).
Работа с данными в куках проста.
<?php
/**
* Если нет $_COOKIE['analitic_sbjs'] то возвращаем это
*/
function getTempInfo() {
$a = strtr($_COOKIE['sbjs_current'], ['|||' => '&']);
parse_str($a, $b);
if (!$b) {
$b = [
'typ' => 'organic',
'src' => 'google',
'mdm' => 'organic',
'cmp' => '(none)',
'cnt' => '(none)',
'trm' => '(none)',
];
}
return (string) json_encode($b);
}
// Вытягиваем сохраненную информацию. Если ее нет, в analitic_sbjs, то дергаем getTempInfo()
$other = strip_tags(trim((string) $_COOKIE['analitic_sbjs']) ? : getTempInfo());
// json_decode, и приводим все в нижний регистр, для более легкого сравнения
$decode = $other ? json_decode($other, true) : [];
$decode['src'] = mb_strtolower($decode['src']);
$decode['mdm'] = mb_strtolower($decode['mdm']);
$source = 'Другие';
if ($decode['src'] == 'google' && $decode['mdm'] == 'cpc') {
$source = 'Google Adwords';
} elseif ($decode['src'] == 'yandex' && $decode['mdm'] == 'cpc') {
$source = 'Яндекс Директ';
} elseif (mb_stripos($decode['src'], 'youtube') !== false) {
$source = 'Youtube';
} elseif (in_array($decode['src'], ['facebook', 'fb']) && in_array($decode['mdm'], ['cpc','ppc','cpa','cpm','cpv','cpp'])) {
$source = 'Facebook реклама';
} elseif ($decode['src'] == 'instagram' && in_array($decode['mdm'], ['cpc','ppc','cpa','cpm','cpv','cpp'])) {
$source = 'Instagram реклама';
} elseif (mb_stripos($decode['src'], 'google') !== false && $decode['mdm'] == 'organic') {
$source = 'SEO Google';
} elseif (mb_stripos($decode['src'], 'yandex') !== false && $decode['mdm'] == 'organic') {
$source = 'SEO Yandex';
} elseif ($decode['src'] == 'hotline' && $decode['mdm'] == 'cpc') {
$source = 'hotline';
} elseif ($decode['src'] == 'priceua' && $decode['mdm'] == 'cpc') {
$source = 'Price';
} elseif (mb_stripos($decode['src'], 'viber') !== false) {
$source = 'Viber';
} elseif ((mb_stripos($decode['src'], 'facebook') !== false || mb_stripos($decode['src'], 'fb') !== false) && !in_array($decode['mdm'], ['cpc','ppc','cpa','cpm','cpv','cpp'])) {
$source = 'Facebook другое';
} elseif ($decode['mdm'] == 'email') {
$source = 'Email рассылка';
} elseif ($decode['mdm'] == 'organic') {
$source = 'SEO другое';
} elseif ($decode['mdm'] == 'cpc') {
$source = 'Реклама другое';
} elseif ($decode['src'] == 'nadavi') {
$source = 'Ek';
} elseif ($decode['src'] == 'sendpulse') {
$source = 'Send Pulse';
} elseif (mb_stripos($decode['src'], 'yandex') !== false) {
$source = 'Яндекс другое';
} elseif ($decode['mdm'] == 'referral') {
$source = 'Переходы с других сайтов';
} elseif ($decode['src'] == '(direct)' && $decode['mdm'] == '(none)') {
$source = 'Прямые заходы';
} elseif ($decode['mdm'] == 'display') {
$source = 'Медийная реклама';
} else {
$source = 'Другие';
}
var_dump($source); // Информация про источник.
Как видно, в $source будет информация об источники, с которого перешел клиент. Такой метод целесообразно применять при оформление заказа или на подобное одноразовое действие, чтобы это было не на первой странице входа юзера.
Информация хранится в $_COOKIE['analitic_sbjs'] и в $_COOKIE['sbjs_current'] (но в специфическом формате). Функция getTempInfo() здесь как страховка, вдруг у юзера отключены куки или что-то пошло не так (мыло ли). В любом случае это приблизительная информация, так как основана на js и куках.
Привел пример без ООП, чтобы было более понятно. Я считаю, что здесь важней разобрать, что приходит в src и mdm, и что это значит в совокупности для определения источника.
Этот пример не отображает всех возможностей подключаемой библиотеки. С остальным можно подробно ознакомиться на официальном сайте, источник приведен вверху.
Определимся для чего нужен нулевой сниппет в GoogleAds, рассмотрим структуру сниппета вопрос-ответ. Приведем пример в html и json схеме.
Приходится сталкиваться с неоптимизированными по размеру фотографиями формата png. Есть простой оптимизатор optipng, который дает возможность управлять настройками оптимизации.
Приходится сталкиваться с неоптимизированными по размеру фотографиями формата jpeg. Есть простой оптимизатор jpegoptim, который дает возможность управлять настройками оптимизации.
Игорь