Извлекаем и кешируем контактные данные из инфоблока, чтобы быстро и безопасно выводить их на любой странице сайта без дублирования запросов к базе.
| Код |
|---|
<?php
require_once($_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/include/prolog_before.php");
$cacheId = 'site_global_settings';
$cacheTime = 3600; // 1 час
$cachePath = '/site_settings/';
$cache = new CPHPCache();
if ($cache->InitCache($cacheTime, $cacheId, $cachePath)) {
$vars = $cache->GetVars();
extract($vars);
} else {
CModule::IncludeModule('iblock');
$element = CIBlockElement::GetList(
[],
['IBLOCK_CODE' => 'settings', 'CODE' => 'GLOBAL_SETTINGS', 'ACTIVE' => 'Y'],
false,
false,
['ID']
)->Fetch();
if ($element) {
$props = [];
$propIterator = CIBlockElement::GetProperty(0, $element['ID'], ['sort' => 'asc'], ['ACTIVE' => 'Y']);
while ($prop = $propIterator->Fetch()) {
$props[$prop['CODE']] = $prop['VALUE'];
}
$logoPath = CFile::GetPath($props['LOGO'] ?? '');
$phone = $props['CONTACT_PHONE'] ?? '';
$address = $props['OFFICE_ADDRESS'] ?? '';
$cache->StartDataCache();
$cache->EndDataCache(compact('logoPath', 'phone', 'address'));
} else {
$logoPath = $phone = $address = '';
}
}
// Вывод в шаблон
echo <<<HTML
<div class="site-info">
<img src="{$logoPath}" alt="Логотип компании" />
<p>Телефон: <strong>{$phone}</strong></p>
<p>Адрес: <em>{$address}</em></p>
</div>
HTML;
?> |