Все статьи
306 материалов

CIBlock — класс для работы с самими инфоблоками из кода: их созданием, изменением настроек и удалением. Не путайте с CIBlockElement, который работает с элементами внутри инфоблока, — здесь речь о самом контейнере. Получение списка инфоблоков <?php $result = CIBlock::GetList( [‘SORT’ => ‘ASC’], [‘TYPE’ => ‘catalog’, ‘ACTIVE’ => ‘Y’] ); while ($iblock = $result->Fetch()) { echo $iblock[‘ID’] . ‘ — ‘…

Умный фильтр на большом каталоге работает медленно по вполне понятной причине: свойства товаров хранятся в отдельных таблицах, и чтобы отобрать позиции по трём характеристикам сразу, базе приходится соединять их между собой. На десятках тысяч товаров это занимает секунды. Фасетный индекс решает задачу иначе: значения свойств заранее раскладываются в одну плоскую таблицу, оптимизированную под выборку. Разберём, как его включить, сколько это…

Изображение, которое пользователь пытается загрузить через форму на сайте, «не загружается» без внятного объяснения — одна из самых частых жалоб, за которой почти всегда стоит одна и та же небольшая группа причин на стороне сервера. Разберём настройки PHP, отвечающие за загрузку файлов, и как их правильно синхронизировать. Два разных лимита PHP ; php.ini upload_max_filesize = 20M post_max_size = 25M upload_max_filesize…

bitrix:catalog.section — штатный компонент вывода списка товаров раздела каталога, лежащий в основе большинства витрин на 1С-Битрикс. Разберём его ключевые параметры и типичные настройки, о которые регулярно спотыкаются при кастомизации. Базовый вызов компонента <?php $APPLICATION->IncludeComponent( ‘bitrix:catalog.section’, ‘my_template’, [ ‘IBLOCK_TYPE’ => ‘catalog’, ‘IBLOCK_ID’ => $iblockId, ‘SECTION_ID’ => $sectionId, ‘ELEMENT_SORT_FIELD’ => ‘sort’, ‘ELEMENT_SORT_ORDER’ => ‘asc’, ‘PAGE_ELEMENT_COUNT’ => 24, ‘PROPERTY_CODE’ => [‘COLOR’, ‘SIZE’], ‘DETAIL_URL’…

Bitrix\Main\Web\HttpClient — штатный класс D7 для запросов к внешним API: интеграции с CRM, платёжными системами, службами доставки. Разберём базовое использование, обработку ошибок и настройку таймаутов, без которых внешний запрос может подвесить весь сайт. Базовый GET-запрос <?php use Bitrix\Main\Web\HttpClient; $httpClient = new HttpClient(); $response = $httpClient->get(‘https://api.example.com/status’); if ($httpClient->getStatus() === 200) { echo $response; } else { echo ‘Ошибка: ‘ . $httpClient->getStatus();…

Сайт работал и внезапно перестал: вместо страниц — ошибка подключения к базе данных, а в логе строка Too many connections. Через несколько минут всё снова работает, потом падает опять. Это классическая картина исчерпания лимита одновременных соединений с MySQL. Разберём, откуда берутся лишние соединения, как понять, кто их занимает, и что делать — не только поднимать лимит, но и убирать причину….

Сайт перешёл на HTTPS, сертификат в порядке, но браузер всё равно показывает «Соединение не защищено» или значок предупреждения вместо зелёного замка. Разберём, откуда берётся смешанный контент на сайтах 1С-Битрикс и как его системно найти и вычистить, а не чинить по одной странице за раз. Что такое смешанный контент Смешанный контент — это ситуация, когда HTTPS-страница загружает ресурсы (изображения, скрипты, стили,…

Файл component.php — сердце логики компонента, отвечающее за подготовку данных до того, как шаблон начнёт что-то выводить. Разберём его устройство, жизненный цикл выполнения и типичную структуру, на которую стоит ориентироваться при написании собственных компонентов. Базовая структура файла <?php if (!defined(‘B_PROLOG_INCLUDED’) || B_PROLOG_INCLUDED !== true) { die(); } use Bitrix\Main\Loader; Loader::includeModule(‘iblock’); $arResult = []; if (!$this->startResultCache()) { // кеш неактуален или…

D7 в отличие от старого API активно использует исключения для сигнализации об ошибках — вместо возврата false или пустого значения, метод выбрасывает объект исключения с описанием проблемы. Разберём иерархию исключений D7 и как правильно их обрабатывать. Базовая иерархия исключений D7 Exception (стандартный PHP) └── Bitrix\Main\SystemException ├── Bitrix\Main\ArgumentException │ ├── ArgumentNullException │ ├── ArgumentOutOfRangeException │ └── ArgumentTypeException ├── Bitrix\Main\NotSupportedException ├── Bitrix\Main\ObjectNotFoundException…

Агенты в 1С-Битрикс — механизм отложенного и периодического выполнения кода, встроенный в ядро с самого начала. Разберём CAgent: как зарегистрировать агент, какие требования предъявляются к функции-обработчику и почему агент, забытый после отладки, может годами незаметно грузить сервер. Регистрация агента <?php CAgent::AddAgent( ‘syncStockBalances();’, // вызываемая функция как строка ‘my.module’, // модуль, к которому привязан агент ‘N’, // периодичность: N — по…

Комплексный компонент отличается от обычного одним принципиальным свойством: он сам управляет несколькими страницами через ЧПУ, вызывая внутри себя другие компоненты в зависимости от текущего адреса. bitrix:catalog и bitrix:sale.personal.section — типичные примеры: один вызов разворачивает список, детальную карточку, корзину и личный кабинет одновременно. Чем комплексный компонент отличается от обычного Обычный компонент Комплексный компонент Управляет Одним блоком на странице Несколькими страницами раздела…

«Не удаётся загрузить список обновлений» или обновление, зависшее на середине, — неприятная ситуация: сайт может остаться в промежуточном состоянии между версиями. Разберём типичные причины сбоя обновления 1С-Битрикс и как действовать, если процесс уже начался и застрял. Проверка доступа к серверам обновлений Модуль обновления обращается к внешним серверам разработчика за списком доступных патчей — если сервер или файрвол блокирует исходящие соединения…