Пост

Шпаргалка по интеграции на Битрикс: пошаговое руководство для начинающих

Подробное руководство по интеграции HTML-шаблона на Битрикс. Узнайте, как работать с компонентами, инфоблоками, формами и кешированием. Практические примеры и советы для начинающих разработчиков.

Шпаргалка по интеграции на Битрикс: пошаговое руководство для начинающих

Эта шпаргалка поможет вам разобраться с интеграцией HTML-шаблона на Битрикс. Здесь собраны основные коды и функции, которые часто используются при разработке сайтов на Битрикс. Каждый раздел содержит подробное объяснение и практические примеры использования.

Важно! Перед началом работы убедитесь, что у вас установлена последняя версия Битрикса и все необходимые модули. Также рекомендуется создать резервную копию сайта перед внесением изменений.

Начальная настройка

Структура шаблона

При создании шаблона сайта на Битрикс важно соблюдать правильную структуру файлов. Это поможет организовать код и облегчит поддержку сайта:

1
2
3
4
5
6
7
8
9
10
/templates/your_template/          # Корневая папка шаблона
├── header.php                    # Шапка сайта
├── footer.php                    # Подвал сайта
├── styles.css                    # Основные стили
├── js/                          # Папка для JavaScript файлов
│   ├── script.js                # Основной скрипт
│   └── plugins/                 # Папка для плагинов
├── images/                      # Папка для изображений
├── components/                  # Папка для компонентов
└── .description.php            # Описание шаблона

Совет: Создайте файл .gitignore в корне шаблона, чтобы исключить временные файлы и кеш из системы контроля версий.

Подключение стилей и скриптов

В файле header.php нужно подключить все необходимые стили и скрипты. Это делается с помощью специальных функций Битрикса:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
// Подключение стилей
// SITE_TEMPLATE_PATH - это путь к текущему шаблону
$APPLICATION->SetAdditionalCSS(SITE_TEMPLATE_PATH . '/css/style.css');

// Подключение скриптов
// AddHeadScript добавляет скрипт в head страницы
$APPLICATION->AddHeadScript(SITE_TEMPLATE_PATH . '/js/script.js');

// Проверяем, что файлы существуют
if (!file_exists($_SERVER['DOCUMENT_ROOT'] . SITE_TEMPLATE_PATH . '/css/style.css')) {
    // Логируем ошибку
    error_log('Файл стилей не найден: ' . SITE_TEMPLATE_PATH . '/css/style.css');
}
?>

Важно! Всегда проверяйте существование файлов перед их подключением. Это поможет избежать ошибок на продакшене.

Работа с компонентами

Что такое компоненты в Битриксе?

Компоненты в Битриксе - это как готовые блоки конструктора. Представьте, что вы строите дом: вместо того чтобы каждый раз заново придумывать, как сделать окно или дверь, вы берете готовые детали и собираете их вместе. Так же и с компонентами - это готовые блоки кода, которые можно использовать на разных страницах сайта.

Например, если вам нужно вывести список новостей, вы не пишете каждый раз код для получения данных из базы, их сортировки и вывода. Вместо этого вы используете готовый компонент bitrix:news.list, который уже содержит всю необходимую логику.

Совет: Начните с изучения стандартных компонентов Битрикса. Они покрывают большинство типовых задач и помогут понять, как правильно структурировать код.

Где находятся компоненты?

В Битриксе есть два места, где хранятся компоненты. В папке /bitrix/components/ находятся стандартные компоненты, которые идут в комплекте с Битриксом. А в папке /local/components/ вы можете создавать свои собственные компоненты.

Важно! Всегда создавайте свои компоненты в папке /local/. Это позволит обновлять Битрикс без потери ваших изменений.

Как создать свой компонент?

Давайте создадим простой компонент, который будет выводить приветствие. Сначала создайте папку для вашего компонента:

1
/local/components/your_company/hello_world/

Теперь создайте в этой папке файл .description.php:

1
2
3
4
5
6
7
8
9
10
11
12
<?php
if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true) die();

$arComponentDescription = array(
    "NAME" => "Приветствие", // Название компонента
    "DESCRIPTION" => "Выводит приветственное сообщение", // Описание
    "PATH" => array(
        "ID" => "your_company", // ID вашей компании
        "NAME" => "Мои компоненты", // Название раздела
    ),
);
?>

Создайте файл component.php - это основной файл компонента, где будет вся логика:

1
2
3
4
5
6
7
8
9
10
11
12
<?php
if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true) die();

// Проверяем наличие обязательных параметров
if (!isset($arParams["NAME"]) || empty($arParams["NAME"])) {
    $arParams["NAME"] = "Гость"; // Значение по умолчанию
}

// Здесь ваша логика
$arResult["MESSAGE"] = "Привет, " . htmlspecialchars($arParams["NAME"]) . "!";
$this->includeComponentTemplate();
?>

Важно! Всегда проверяйте и экранируйте входные данные. Используйте htmlspecialchars() для вывода текста в HTML.

И наконец, создайте файл template.php для вывода:

1
2
3
4
5
<?php if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();?>

<div class="greeting">
    <?php echo $arResult["MESSAGE"]; ?>
</div>

Как использовать компонент на странице?

Есть два способа подключить компонент на страницу. Первый способ - через PHP код:

1
2
3
4
5
6
7
8
9
<?php
$APPLICATION->IncludeComponent(
    "your_company:hello_world", // Имя компонента
    "",                        // Шаблон компонента
    Array(                     // Параметры компонента
        "NAME" => "Иван"       // Передаем имя
    )
);
?>

Второй способ - через административную панель. Откройте страницу в режиме правки, нажмите кнопку “Добавить компонент”, найдите ваш компонент в списке и настройте его параметры в открывшемся окне.

Совет: Используйте административную панель для добавления компонентов, если вы не уверены в правильности параметров. Это поможет избежать ошибок.

Пример компонента списка новостей

Давайте разберем на примере компонента новостей. Представьте, что вы хотите вывести список последних новостей на главной странице:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
<?php
$APPLICATION->IncludeComponent(
    "bitrix:news.list",          // Тип компонента - список новостей
    "",                          // Шаблон компонента
    Array(                       // Параметры компонента
        // Основные параметры
        "IBLOCK_TYPE" => "content",     // Тип инфоблока (content, news, catalog и т.д.)
        "IBLOCK_ID" => "1",             // ID инфоблока (можно найти в админке)
        
        // Настройки вывода
        "NEWS_COUNT" => "10",           // Сколько новостей показывать
        "SORT_BY1" => "ACTIVE_FROM",    // Сортировка по дате
        "SORT_ORDER1" => "DESC",        // По убыванию (DESC) или возрастанию (ASC)
        
        // Какие поля выводить
        "FIELD_CODE" => array(          
            "NAME",                     // Название новости
            "PREVIEW_TEXT",             // Краткое описание
            "PREVIEW_PICTURE",          // Картинка для анонса
            "DETAIL_TEXT",              // Полный текст
            "DETAIL_PICTURE"            // Полная картинка
        ),
        
        // Какие свойства выводить
        "PROPERTY_CODE" => array(       
            "PRICE",                    // Цена
            "COLOR",                    // Цвет
            "MATERIAL"                  // Материал
        ),
        
        // Настройки пагинации
        "PAGER_TEMPLATE" => "modern",   // Шаблон пагинации
        "DISPLAY_TOP_PAGER" => "Y",     // Показывать пагинацию сверху
        "DISPLAY_BOTTOM_PAGER" => "Y",  // Показывать пагинацию снизу
        
        // Настройки кеширования
        "CACHE_TYPE" => "A",           // Тип кеширования (A - авто)
        "CACHE_TIME" => "3600"         // Время кеширования в секундах
    )
);
?>

Совет: Начните с минимального набора параметров и добавляйте новые по мере необходимости. Это поможет лучше понять, как работает компонент.

Как найти ID инфоблока?

Чтобы найти ID инфоблока, зайдите в административную панель Битрикса. Перейдите в раздел “Контент” -> “Информационные блоки” -> “Типы информационных блоков”. Найдите нужный тип инфоблока (например, “content”) и перейдите в “Информационные блоки”. Там вы увидите список всех инфоблоков и их ID.

Важно! Запишите ID инфоблока в надежном месте. Он понадобится при настройке компонентов.

Как настроить шаблон компонента?

Если вы хотите изменить внешний вид компонента, создайте свой шаблон. Для этого создайте папку templates/your_template/ в папке компонента и скопируйте туда файлы из корневой папки. Теперь вы можете изменять эти файлы под свои нужды. При подключении компонента укажите имя вашего шаблона:

1
2
3
4
5
$APPLICATION->IncludeComponent(
    "bitrix:news.list",
    "your_template",  // Имя вашего шаблона
    Array(...)
);

Совет: Создавайте разные шаблоны для разных вариантов вывода. Это позволит переиспользовать логику компонента с разным оформлением.

Полезные советы по работе с компонентами

При создании компонентов всегда проверяйте наличие проверки B_PROLOG_INCLUDED - это защищает от прямого доступа к файлам компонента. Используйте кеширование для оптимизации производительности - это особенно важно для компонентов, которые получают данные из базы.

Группируйте компоненты по назначению - например, все компоненты для работы с новостями в одной папке, все компоненты для работы с каталогом в другой. Создавайте разные шаблоны для разных вариантов вывода - это позволит переиспользовать логику компонента с разным оформлением.

И самое главное - документируйте параметры компонента. Через год вы можете забыть, что означают те или иные параметры, а если компонент использует кто-то другой, без документации ему будет сложно разобраться.

Работа с инфоблоками

Получение элементов инфоблока

Инфоблоки - это специальные структуры в Битриксе для хранения данных. Вот как получить элементы из инфоблока:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
<?php
// Массив полей, которые нужно получить
$arSelect = Array(
    "ID",                    // ID элемента
    "NAME",                  // Название
    "PREVIEW_TEXT",          // Краткое описание
    "PREVIEW_PICTURE"        // Картинка для анонса
);

// Фильтр для выборки
$arFilter = Array(
    "IBLOCK_ID" => 1,       // ID инфоблока
    "ACTIVE" => "Y"         // Только активные элементы
);

// Получаем список элементов
$res = CIBlockElement::GetList(
    Array("SORT" => "ASC"), // Сортировка по возрастанию
    $arFilter,              // Фильтр
    false,                  // Группировка (не используется)
    false,                  // Навигация (не используется)
    $arSelect              // Выбираемые поля
);

// Проверяем результат
if ($res) {
    // Выводим элементы
    while($ob = $res->GetNext()) {
        echo $ob["NAME"];           // Выводим название
        echo $ob["PREVIEW_TEXT"];   // Выводим описание
    }
} else {
    // Обрабатываем ошибку
    error_log('Ошибка при получении элементов инфоблока: ' . CIBlockElement::GetLastError());
}
?>

Важно! Всегда проверяйте результат выполнения методов Битрикса. Это поможет быстро найти и исправить ошибки.

Получение свойств элемента

Свойства - это дополнительные поля в инфоблоках. Вот как получить значение свойства:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php
$elementId = 123;  // ID элемента
$res = CIBlockElement::GetProperty(
    1,              // ID инфоблока
    $elementId,     // ID элемента
    array(),        // Фильтр по свойствам (пустой)
    array("CODE" => "PRICE")  // Код свойства
);

// Проверяем результат
if ($res) {
    if($prop = $res->Fetch()) {
        echo $prop["VALUE"];  // Выводим значение свойства
    }
} else {
    // Обрабатываем ошибку
    error_log('Ошибка при получении свойств элемента: ' . CIBlockElement::GetLastError());
}
?>

Работа с меню

Вывод меню

Меню в Битриксе создается через компонент. Вот пример настройки меню:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
$APPLICATION->IncludeComponent(
    "bitrix:menu",           // Тип компонента - меню
    "horizontal",            // Шаблон - горизонтальное меню
    Array(                   // Параметры меню
        "ROOT_MENU_TYPE" => "top",     // Тип корневого меню
        "MAX_LEVEL" => "1",            // Максимальный уровень вложенности
        "CHILD_MENU_TYPE" => "left",   // Тип подменю
        "USE_EXT" => "Y",              // Использовать расширенный режим
        "MENU_CACHE_TYPE" => "A",      // Тип кеширования
        "MENU_CACHE_TIME" => "3600",   // Время кеширования (1 час)
        "MENU_CACHE_USE_GROUPS" => "Y", // Кешировать для групп
        "MENU_CACHE_GET_VARS" => array() // GET-параметры для кеширования
    )
);
?>

Работа с формами

Создание формы обратной связи

Формы в Битриксе создаются через компонент. Вот пример настройки формы:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php
$APPLICATION->IncludeComponent(
    "bitrix:form",           // Тип компонента - форма
    "feedback",              // Шаблон формы
    Array(                   // Параметры формы
        "WEB_FORM_ID" => "1",        // ID веб-формы
        "SHOW_FORM" => "Y",          // Показывать форму
        "SUCCESS_URL" => "/success.php",  // URL после успешной отправки
        "CHAIN_ITEM_TEXT" => "Обратная связь",  // Текст в цепочке навигации
        "CHAIN_ITEM_LINK" => "",     // Ссылка в цепочке навигации
        "IGNORE_CUSTOM_TEMPLATE" => "N",  // Не игнорировать кастомный шаблон
        "USE_THEME" => "Y",          // Использовать тему оформления
        "BUTTON_POSITION" => "RIGHT", // Позиция кнопки
        "VARIABLE_ALIASES" => Array(  // Алиасы переменных
            "action" => "action"      // Алиас для action
        )
    )
);
?>

Работа с файлами

Загрузка файлов

В Битриксе есть специальные функции для работы с файлами. Вот пример:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
// Получаем массив с информацией о файле
$file = CFile::GetFileArray($element["PREVIEW_PICTURE"]);
if($file) {
    // Выводим изображение с заданными параметрами
    echo CFile::ShowImage(
        $file,           // Массив с информацией о файле
        200,            // Ширина
        200,            // Высота
        "border=0",     // Дополнительные атрибуты
        "",            // Путь к файлу (не используется)
        true           // Создавать миниатюру
    );
} else {
    // Обрабатываем ошибку
    error_log('Ошибка при получении файла: ' . CFile::GetLastError());
}
?>

Получение пути к файлу

Иногда нужно получить прямой путь к файлу:

1
2
3
4
5
6
7
8
<?php
// Получаем путь к файлу
$filePath = CFile::GetPath($element["PREVIEW_PICTURE"]);
if (!$filePath) {
    // Обрабатываем ошибку
    error_log('Ошибка при получении пути к файлу: ' . CFile::GetLastError());
}
?>

Полезные функции

Получение текущего раздела

Часто нужно получить информацию о текущем разделе:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php
// Получаем информацию о разделе
$section = CIBlockSection::GetList(
    array(),                    // Сортировка (пустая)
    array("ID" => $arResult["IBLOCK_SECTION_ID"]),  // Фильтр по ID
    false,                      // Группировка (не используется)
    array(                      // Выбираемые поля
        "ID",                   // ID раздела
        "NAME",                 // Название
        "SECTION_PAGE_URL"      // URL раздела
    )
)->Fetch();

// Проверяем результат
if (!$section) {
    // Обрабатываем ошибку
    error_log('Ошибка при получении раздела: ' . CIBlockSection::GetLastError());
}
?>

Проверка авторизации

Проверка, авторизован ли пользователь:

1
2
3
4
5
6
7
8
9
<?php
if($USER->IsAuthorized()) {
    // Пользователь авторизован
    echo $USER->GetFullName();  // Выводим полное имя
} else {
    // Пользователь не авторизован
    echo "Гость";              // Выводим "Гость"
}
?>

Получение настроек сайта

Получение основных настроек сайта:

1
2
3
4
5
6
7
8
9
10
<?php
// Получаем настройки текущего сайта
$siteSettings = CSite::GetByID(SITE_ID)->Fetch();
if ($siteSettings) {
    echo $siteSettings["NAME"];  // Выводим название сайта
} else {
    // Обрабатываем ошибку
    error_log('Ошибка при получении настроек сайта: ' . CSite::GetLastError());
}
?>

Работа с кешем

Кеширование компонентов

Кеширование помогает ускорить работу сайта. Вот пример настройки кеширования для компонента:

1
2
3
4
5
6
7
8
9
10
11
12
<?php
$APPLICATION->IncludeComponent(
    "bitrix:news.list",      // Тип компонента
    "",                      // Шаблон компонента
    Array(                   // Параметры компонента
        "IBLOCK_ID" => "1",  // ID инфоблока
        "CACHE_TYPE" => "A", // Тип кеширования (авто)
        "CACHE_TIME" => "3600", // Время кеширования (1 час)
        "CACHE_GROUPS" => "Y"   // Кешировать для групп
    )
);
?>

Очистка кеша

Иногда нужно очистить кеш вручную:

1
2
3
4
5
<?php
// Очищаем все кеши
$GLOBALS["CACHE_MANAGER"]->CleanAll();
$GLOBALS["stackCacheManager"]->CleanAll();
?>

Заключение

Эта шпаргалка содержит основные коды и функции, которые часто используются при интеграции верстки на Битрикс. Для более глубокого изучения рекомендую:

  1. Изучить официальную документацию Битрикс
  2. Разобраться с компонентами Битрикс
  3. Изучить работу с инфоблоками
  4. Понять систему кеширования
  5. Освоить работу с D7

Если у вас есть вопросы по конкретным разделам или нужна помощь с интеграцией, пишите в комментариях - поделимся опытом и знаниями.

Авторский пост защищен лицензией CC BY 4.0 .

© Oleg Dobrynin. Некоторые права защищены.