Пост

Битрикс для начинающих: разработка корпоративных сайтов

Подробное руководство по Битрикс для начинающих. Изучите основы Битрикс, создание компонентов, разработку шаблонов и лучшие практики создания корпоративных сайтов.

Битрикс для начинающих: разработка корпоративных сайтов

Введение

Битрикс - это мощная система управления контентом (CMS), специально разработанная для создания корпоративных сайтов и интернет-магазинов. В этой статье мы рассмотрим основы Битрикс и научимся создавать современные веб-проекты.

Что такое Битрикс?

  • Корпоративный уровень: Профессиональные решения
  • Интеграция с 1С: Готовые решения для бизнеса
  • Компонентный подход: Модульная архитектура
  • Безопасность: Встроенные механизмы защиты

Установка и настройка

1. Установка Битрикс

Требования к серверу

1
2
3
4
5
- PHP 7.4 или выше
- MySQL 5.6 или выше
- Apache/Nginx
- mod_rewrite
- GD или ImageMagick

Установка через composer

1
2
3
composer create-project bitrix/bitrix24 my-project
cd my-project
php -S localhost:8000

2. Первый запуск

Настройка сайта

  1. Откройте сайт в браузере
  2. Выберите тип установки
  3. Настройте подключение к базе данных
  4. Создайте администратора

Разработка компонентов

1. Структура компонента

Основные файлы

1
2
3
4
5
6
7
8
9
10
11
12
13
local/components/custom/my.component/
  ├── class.php
  ├── component.php
  ├── .description.php
  ├── .parameters.php
  ├── templates/
  │   └── .default/
  │       ├── template.php
  │       ├── style.css
  │       └── script.js
  └── lang/
      └── ru/
          └── class.php

Класс компонента

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
if (!defined('B_PROLOG_INCLUDED') || B_PROLOG_INCLUDED !== true) die();

class MyComponent extends CBitrixComponent
{
    public function executeComponent()
    {
        // Получение параметров
        $this->arParams = $this->getParameters();
        
        // Получение данных
        $this->arResult = $this->getData();
        
        // Подключение шаблона
        $this->includeComponentTemplate();
    }
    
    protected function getParameters()
    {
        return [
            'CACHE_TIME' => 3600,
            'ELEMENTS_COUNT' => 10
        ];
    }
    
    protected function getData()
    {
        // Пример получения данных
        return [
            'ITEMS' => [
                ['ID' => 1, 'NAME' => 'Item 1'],
                ['ID' => 2, 'NAME' => 'Item 2']
            ]
        ];
    }
}

2. Использование компонента

Вызов компонента

1
2
3
4
5
6
7
8
9
<?php
$APPLICATION->IncludeComponent(
    'custom:my.component',
    '',
    [
        'CACHE_TIME' => 3600,
        'ELEMENTS_COUNT' => 10
    ]
);

Разработка шаблонов

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

Основные файлы

1
2
3
4
5
6
7
8
local/templates/my_template/
  ├── header.php
  ├── footer.php
  ├── styles.css
  ├── scripts.js
  ├── .description.php
  ├── .section.php
  └── components/

header.php

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
<?php if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();?>
<!DOCTYPE html>
<html lang="<?=LANGUAGE_ID?>">
<head>
    <?php $APPLICATION->ShowHead();?>
    <title><?php $APPLICATION->ShowTitle();?></title>
    <?php
    $APPLICATION->SetAdditionalCSS(SITE_TEMPLATE_PATH."/styles.css");
    $APPLICATION->AddHeadScript(SITE_TEMPLATE_PATH."/scripts.js");
    ?>
</head>
<body>
    <?php $APPLICATION->ShowPanel();?>
    <header>
        <div class="container">
            <h1><?php $APPLICATION->ShowTitle(false);?></h1>
            <?php
            $APPLICATION->IncludeComponent(
                "bitrix:menu",
                "main",
                [
                    "ROOT_MENU_TYPE" => "top",
                    "MAX_LEVEL" => "1"
                ]
            );
            ?>
        </div>
    </header>

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

1. Создание инфоблока

Структура инфоблока

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
$iblockId = 1; // ID инфоблока

// Получение элементов
$elements = CIBlockElement::GetList(
    ['SORT' => 'ASC'],
    ['IBLOCK_ID' => $iblockId],
    false,
    false,
    ['ID', 'NAME', 'DETAIL_PAGE_URL']
);

while ($element = $elements->GetNext()) {
    $items[] = $element;
}

2. Работа с элементами

CRUD операции

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// Создание элемента
$element = new CIBlockElement;
$elementId = $element->Add([
    'IBLOCK_ID' => $iblockId,
    'NAME' => 'Новый элемент',
    'ACTIVE' => 'Y',
    'DETAIL_TEXT' => 'Описание элемента'
]);

// Обновление элемента
$element->Update($elementId, [
    'NAME' => 'Обновленное название'
]);

// Удаление элемента
$element->Delete($elementId);

Работа с пользователями

1. Авторизация

Форма авторизации

1
2
3
4
5
6
7
8
9
10
<?php
$APPLICATION->IncludeComponent(
    "bitrix:system.auth.form",
    "",
    [
        "REGISTER_URL" => "/register/",
        "FORGOT_PASSWORD_URL" => "/forgot-password/",
        "PROFILE_URL" => "/profile/"
    ]
);

2. Регистрация

Форма регистрации

1
2
3
4
5
6
7
8
9
10
11
<?php
$APPLICATION->IncludeComponent(
    "bitrix:main.register",
    "",
    [
        "AUTH" => "Y",
        "REQUIRED_FIELDS" => ["EMAIL", "NAME", "LAST_NAME"],
        "SET_TITLE" => "Y",
        "USER_PROPERTY" => ["UF_DEPARTMENT"]
    ]
);

Работа с API

1. REST API

Создание метода

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php
class MyRestApi extends CBitrixComponent
{
    public function getDataAction()
    {
        return [
            'status' => 'success',
            'data' => [
                'items' => $this->getItems()
            ]
        ];
    }
    
    protected function getItems()
    {
        // Получение данных
        return [
            ['id' => 1, 'name' => 'Item 1'],
            ['id' => 2, 'name' => 'Item 2']
        ];
    }
}

2. Использование API

Пример запроса

1
2
3
4
5
6
7
8
BX.ajax.runComponentAction('custom:my.component', 'getData', {
    mode: 'class',
    data: {
        // параметры запроса
    }
}).then(function(response) {
    console.log(response.data);
});

Оптимизация

1. Кэширование

Настройка кэширования

1
2
3
4
5
6
7
8
9
10
11
12
13
14
// Кэширование компонента
$this->setResultCacheKeys(['ITEMS']);
$this->includeComponentTemplate();

// Кэширование запросов
$cache = Bitrix\Main\Data\Cache::createInstance();
$cacheId = 'my_cache_' . md5(serialize($params));

if ($cache->startDataCache(3600, $cacheId)) {
    $result = $this->getData();
    $cache->endDataCache($result);
} else {
    $result = $cache->getVars();
}

2. Оптимизация изображений

Обработка изображений

1
2
3
4
5
6
7
8
9
$image = CFile::ResizeImageGet(
    $fileId,
    [
        'width' => 800,
        'height' => 600
    ],
    BX_RESIZE_IMAGE_PROPORTIONAL,
    true
);

Безопасность

1. Валидация данных

Проверка входных данных

1
2
3
4
5
6
7
8
9
10
use Bitrix\Main\Security\Sign\Signer;

// Проверка подписи
$signer = new Signer();
$signed = $signer->sign($data);

// Проверка подписи
if ($signer->validate($signed)) {
    // данные валидны
}

2. Защита от XSS

Очистка данных

1
2
3
4
5
6
7
use Bitrix\Main\Text\HtmlFilter;

// Очистка HTML
$cleanHtml = HtmlFilter::encode($html);

// Очистка текста
$cleanText = HtmlFilter::encode($text);

Заключение

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

#

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