Налаштування Яндекс.Справочника для 1С-Бітрікс
Яндекс.Справочник — це джерело даних для карточки організації в Яндекс.Картах, пошуку й інших сервісах. Проблема більшості бітриксових сайтів: дані про організацію розкидані — телефон в одному місці шаблону, адреса в іншому, час роботи ніде, а НАП (NAP: Name, Address, Phone) на сайті не збігається з даними у Справочнику. Пошукові системи використовують узгодженість НАП як сигнал локального ранжування.
Structured Data LocalBusiness у Бітриксі
До роботи зі Справочником треба розібратися з розміткою на самому сайті. Schema.org LocalBusiness — це те, що сканується пошукувачем і порівнюється з даними агрегаторів. У Бітриксі розмітка додається в шаблон або компонент.
Дані про організацію краще зберігати в налаштуваннях сайту або в інфоблоці «Контакти» — не хардкодити в шаблоні:
// Отримати дані з інфоблока "Контакти"
$contacts = \CIBlockElement::GetList(
[],
['IBLOCK_CODE' => 'contacts', 'ACTIVE' => 'Y'],
false,
['nTopCount' => 1],
['ID', 'NAME', 'PROPERTY_PHONE', 'PROPERTY_ADDRESS', 'PROPERTY_HOURS']
)->GetNextElement()->GetFields();
JSON-LD у footer.php шаблону:
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "LocalBusiness",
"name": "<?= htmlspecialcharsEx($siteName) ?>",
"telephone": "<?= htmlspecialcharsEx($contacts['PROPERTY_PHONE_VALUE']) ?>",
"address": {
"@type": "PostalAddress",
"streetAddress": "<?= htmlspecialcharsEx($contacts['PROPERTY_ADDRESS_VALUE']) ?>",
"addressLocality": "Київ",
"addressCountry": "UA"
},
"openingHours": "<?= htmlspecialcharsEx($contacts['PROPERTY_HOURS_VALUE']) ?>",
"url": "https://<?= SITE_SERVER_NAME ?>"
}
</script>
Автоматична синхронізація з API Справочника
Яндекс.Справочник має API для масового керування організаціями. Для сайту з однією точкою це надлишково, але для мережі магазинів — обов'язково. API працює через REST:
POST https://api.business.yandex.net/v1/companies/{company_id}
Authorization: OAuth {token}
Content-Type: application/json
{
"name": "Назва",
"phones": [{"number": "+38 (095) 123-45-67"}],
"address": {
"country_code": "UA",
"locality": "Київ",
"street": "Тверська",
"housenumber": "1"
},
"work_intervals": [
{"day": "MON", "time_minutes_begin": 540, "time_minutes_end": 1200}
]
}
У Бітриксі синхронізація запускається агентом при змінюванні даних в інфоблоці — через подію OnAfterIBlockElementUpdate.
Віджет карти на сайті
Яндекс.Карти вбудовуються через API або через стандартний iframe-віджет. Для Бітрікса рекомендується використовувати JavaScript API Яндекс.Карт з ленивою ініціалізацією — карта завантажується тільки коли користувач прокручує до неї:
const mapSection = document.getElementById('yandex-map');
const observer = new IntersectionObserver((entries) => {
if (entries[0].isIntersecting) {
loadYandexMap();
observer.disconnect();
}
}, { threshold: 0.1 });
observer.observe(mapSection);
function loadYandexMap() {
const script = document.createElement('script');
script.src = 'https://api-maps.yandex.ru/2.1/?lang=uk_UA&apikey=YOUR_KEY';
script.onload = initMap;
document.head.appendChild(script);
}
Це запобігає завантаженню 300KB JavaScript API Яндекс.Карт при кожному відвідуванні сторінки «Контакти».
Моніторинг актуальності даних
Після синхронізації дані у Справочнику проходять модерацію — від кількох годин до кількох днів. Автоматично перевірити відповідність між сайтом і Справочником можна через https://yandex.ua/maps/org/{company_id}/info/ — порівняти дані програмно або вручну раз на місяць. Розбіжність у телефоні, адресі або часі роботи між сайтом і Справочником негативно впливає на локальне SEO.







