Налаштування Google Business Profile для 1С-Бітрікс
Google Business Profile (колишній Google My Business) визначає, що користувач бачить у Knowledge Panel праворуч від результатів пошуку за назвою компанії. Невідповідність даних між сайтом і профілем Google — одна з небагатьох SEO-помилок, яку можна виправити за день і отримати результат протягом тижня.
Розмітка Schema.org як основа
Google читає дані про організацію з сайту через структуровану розмітку. Це первинне джерело для формування Knowledge Panel. Без коректного LocalBusiness (або більш специфічного типу: Store, Restaurant, MedicalOrganization) Google використовує неструктурований текст зі сторінки «Контакти» — з непередбачуваними результатами.
У Бітриксі дані організації зберігаються або в інфоблоці, або в користувацьких налаштуваннях сайту. Для централізованого зберігання — інфоблок «Реквізити» з символьним кодом company_info. Структурована розмітка генерується у footer.php шаблону:
<?php
$arCompany = \CIBlockElement::GetList(
[],
['IBLOCK_CODE' => 'company_info', 'ACTIVE' => 'Y'],
false,
['nTopCount' => 1],
['ID', 'PROPERTY_*']
)->GetNextElement()?->GetProperties();
?>
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Store",
"name": "<?= COption::GetOptionString('main', 'site_name') ?>",
"telephone": "<?= htmlspecialcharsEx($arCompany['PHONE']['VALUE']) ?>",
"email": "<?= htmlspecialcharsEx($arCompany['EMAIL']['VALUE']) ?>",
"address": {
"@type": "PostalAddress",
"streetAddress": "<?= htmlspecialcharsEx($arCompany['ADDRESS']['VALUE']) ?>",
"addressLocality": "<?= htmlspecialcharsEx($arCompany['CITY']['VALUE']) ?>",
"postalCode": "<?= htmlspecialcharsEx($arCompany['ZIP']['VALUE']) ?>",
"addressCountry": "UA"
},
"geo": {
"@type": "GeoCoordinates",
"latitude": <?= (float)$arCompany['LAT']['VALUE'] ?>,
"longitude": <?= (float)$arCompany['LON']['VALUE'] ?>
},
"sameAs": [
"<?= htmlspecialcharsEx($arCompany['VK_URL']['VALUE']) ?>",
"<?= htmlspecialcharsEx($arCompany['TG_URL']['VALUE']) ?>"
]
}
</script>
Google Business Profile API
Для автоматичної синхронізації даних сайту з GBP використовується Google Business Profile API. Потрібен сервісний аккаунт з OAuth 2.0.
Базовий запит на оновлення через cURL з Бітрікса:
// Оновити номер телефону в GBP при змінюванні в інфоблоці
AddEventHandler('iblock', 'OnAfterIBlockElementUpdate', function($id) {
if (!isCompanyInfoElement($id)) return;
$token = getGBPAccessToken(); // з збереженого refresh_token
$locationName = 'accounts/{ACCOUNT_ID}/locations/{LOCATION_ID}';
$data = ['phoneNumbers' => ['primaryPhone' => getNewPhone($id)]];
$ch = curl_init("https://mybusinessbusinessinformation.googleapis.com/v1/{$locationName}?updateMask=phoneNumbers");
curl_setopt_array($ch, [
CURLOPT_CUSTOMREQUEST => 'PATCH',
CURLOPT_POSTFIELDS => json_encode($data),
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . $token,
'Content-Type: application/json',
],
CURLOPT_RETURNTRANSFER => true,
]);
curl_exec($ch);
curl_close($ch);
});
Відгуки Google у Бітриксі
GBP API дозволяє читати відгуки й виводити їх на сайті. Це підвищує довіру й додає User-Generated Content без модерації. Кешування обов'язкове — Google обмежує кількість запитів до API:
$cache = \Bitrix\Main\Data\Cache::createInstance();
$cacheKey = 'gbp_reviews';
if ($cache->startDataCache(3600 * 6, $cacheKey, '/gbp')) {
$reviews = fetchReviewsFromGBP($locationName, $token);
$cache->endDataCache(['reviews' => $reviews]);
} else {
$reviews = $cache->getVars()['reviews'];
}
Розмітка відгуків: AggregateRating
Якщо відгуки з GBP виводяться на сайті, їх можна включити в розмітку AggregateRating у блоці Schema.org. Google використовує ці дані для зірочок у сніпеті пошуку. Важливо: не можна використовувати власні відгуки для AggregateRating — тільки незалежні джерела. Відгуки Google підходять.







