Подключение модуля
В шаблоне сайта подключите модуль и получите контакты в виде массива:
<?php
if (CModule::IncludeModule('ipromoagency.contact')) {
$contact = \Ipromoagency\Contact\ContactHelper::getContactArray();
$social = \Ipromoagency\Contact\ContactHelper::getActiveSocial();
}
?>
Дальше используйте $contact и $social в любой части шаблона — в шапке, футере, на странице контактов.
Доступные методы
| Метод | Описание | Пример |
|---|---|---|
getContactArray() |
Получить все контакты в виде массива | $contact = ContactHelper::getContactArray(); |
getOption($code, $default) |
Получить значение опции по коду | $phone = ContactHelper::getOption('PHONE'); |
setOption($code, $value) |
Установить значение опции | ContactHelper::setOption('PHONE', '+7 (495) 123-45-67'); |
getLogoUrl($type) |
Получить URL логотипа (LOGO или LOGO_SMALL) |
$logo = ContactHelper::getLogoUrl('LOGO'); |
getLogoId($type) |
Получить ID файла логотипа | $id = ContactHelper::getLogoId('LOGO'); |
getActiveSocial() |
Получить только активные (непустые) соцсети | $social = ContactHelper::getActiveSocial(); |
hasSocial() |
Проверить наличие активных соцсетей | if (ContactHelper::hasSocial()) { ... } |
formatPhone($phone, $format) |
Форматировать телефон (link или display) |
$link = ContactHelper::formatPhone('+7 (495) 123-45-67', 'link'); |
getMapUrl() |
Получить URL карты с параметрами | $map = ContactHelper::getMapUrl(); |
getFooterContact() |
Получить сокращённый набор для футера | $footer = ContactHelper::getFooterContact(); |
Полный пример для шапки и футера
<?php
if (CModule::IncludeModule('ipromoagency.contact')) {
$contact = \Ipromoagency\Contact\ContactHelper::getContactArray();
$social = \Ipromoagency\Contact\ContactHelper::getActiveSocial();
}
?>
<!-- Логотип -->
<?php if (!empty($contact['LOGO'])): ?>
<img src="<?= $contact['LOGO'] ?>" alt="Логотип">
<?php endif; ?>
<!-- Телефон со ссылкой -->
<a href="tel:<?= preg_replace('/[^\d+]/', '', $contact['PHONES']['MAIN']) ?>">
<?= $contact['PHONES']['MAIN'] ?>
</a>
<!-- Дополнительный телефон -->
<?php if (!empty($contact['PHONES']['ADDITIONAL'])): ?>
<a href="tel:<?= preg_replace('/[^\d+]/', '', $contact['PHONES']['ADDITIONAL']) ?>">
<?= $contact['PHONES']['ADDITIONAL'] ?>
</a>
<?php endif; ?>
<!-- Email -->
<a href="mailto:<?= $contact['EMAILS']['MAIN'] ?>">
<?= $contact['EMAILS']['MAIN'] ?>
</a>
<!-- Адрес -->
<?php if (!empty($contact['ADDRESSES']['MAIN'])): ?>
<div><?= $contact['ADDRESSES']['MAIN'] ?></div>
<?php endif; ?>
<!-- Режим работы -->
<?php if (!empty($contact['WORK_TIME']['MAIN'])): ?>
<div><?= $contact['WORK_TIME']['MAIN'] ?></div>
<?php endif; ?>
<!-- Социальные сети -->
<?php if (!empty($social)): ?>
<div class="social-links">
<?php foreach ($social as $name => $url): ?>
<a href="<?= $url ?>" target="_blank" rel="nofollow noopener"
class="social-<?= strtolower($name) ?>">
<?= $name ?>
</a>
<?php endforeach; ?>
</div>
<?php endif; ?>
<!-- Вывод отдельной социальной сети -->
<?php if (!empty($contact['SOCIAL']['TELEGRAM'])): ?>
<div><?= $contact['SOCIAL']['TELEGRAM'] ?></div>
<?php endif; ?>
<!-- Карта -->
<?php if (!empty($contact['MAP'])): ?>
<a href="<?= $contact['MAP'] ?>" target="_blank" rel="nofollow noopener">
Показать на карте
</a>
<?php endif; ?>
<!-- Копирайт -->
<?php if (!empty($contact['COPYRIGHT'])): ?>
<div><?= $contact['COPYRIGHT'] ?></div>
<?php endif; ?>
Сокращённый вывод для футера
Метод getFooterContact() возвращает только нужный для футера набор:
<?php
if (CModule::IncludeModule('ipromoagency.contact')) {
$footer = \Ipromoagency\Contact\ContactHelper::getFooterContact();
}
?>
<footer>
<?php if ($footer['LOGO']): ?>
<img src="<?= $footer['LOGO'] ?>" alt="Логотип">
<?php endif; ?>
<div><?= $footer['PHONE'] ?></div>
<div><?= $footer['EMAIL'] ?></div>
<div><?= $footer['ADDRESS'] ?></div>
<div><?= $footer['COPYRIGHT'] ?></div>
<?php foreach ($footer['SOCIAL'] as $name => $url): ?>
<a href="<?= $url ?>" target="_blank"><?= $name ?></a>
<?php endforeach; ?>
</footer>
Форматирование телефона
Метод formatPhone() умеет выдавать телефон в двух форматах:
link— только цифры и «+», пригодно дляhref="tel:...";display— отформатированный номер для отображения.
<?php
$raw = '+7 (495) 123-45-67';
$link = ContactHelper::formatPhone($raw, 'link'); // +74951234567
$display = ContactHelper::formatPhone($raw, 'display'); // +7 (495) 123-45-67
?>
<a href="tel:<?= $link ?>"><?= $display ?></a>
Обновление контактов из кода
Если нужно записать значение программно (например, при деплое или в миграции):
<?php
\Ipromoagency\Contact\ContactHelper::setOption('PHONE', '+7 (495) 662-95-43');
?>
Кеширование
Все методы возвращают данные из опций модуля — они уже закешированы Битриксом. Дополнительное кеширование в шаблоне не требуется. Если нужно сбросить кеш после изменения опций — очистите весь кеш сайта или кеш конкретной страницы.