Передача данных из элемента инфоблока в константы в 1С-Битрикс

Внимание! Работает режим премодерации. Все сообщения публикуются после проверки!
Страницы: 1
Ответить
RSS
Передача данных из элемента инфоблока в константы в 1С-Битрикс
Как передать значения из элемента инфоблока в константы 1С-Битрикс и использовать их в шаблонах сайта

В процессе разработки на 1С-Битрикс часто возникает задача — хранить  относительно постоянные данные (логотипы, телефоны, режим работы и т.п.)  в одном месте, чтобы легко управлять ими и выводить на нескольких  страницах. Удобным решением является хранение такой информации в  инфоблоке и дальнейшее «пробрасывание» этих данных в константы или  глобальные переменные для использования в шаблонах (header.php,  footer.php и т.д.).
Изменено: Валерий Макеев - 29.09.2025 10:20:09
Извлекаем и кешируем контактные данные из инфоблока, чтобы быстро и безопасно выводить их на любой странице сайта без дублирования запросов к базе.
Код
<?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;
?>
Страницы: 1
Ответить
Форма ответов
Текст сообщения*
Перетащите файлы
Ничего не найдено
Файл
 

Стоимость услуг по разработке и сопровождению сайтов на 1C-Битрикс

Интернет-магазин на готовом решении

от 7 дней

от 40 000 рублей
запуск сайта в максимально короткие сроки

* указана минимальная стоимость. Стоимость выбранной лицензии «1С-Битрикс» оплачивается отдельно.

Лендинг

от 3 дней

от 25 000 рублей

Разработка одностраничного сайта на платформе Битрикс

* стоимость зависит от наличия верстки, использования готового решения и т.д.

Техническая поддержка

сайтов на CMS 1C-Битрикс

от 20 000 рублей/месяц
Оптимизация производительности действующих интернет-проектов, наполнение и сопровождение, полная техническая поддержка и продвижение в поисковых сетях.

* стоимость зависит от объема и сложности выполняемых работ