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

Не всякая фоновая задача — это агент, который ждёт своего интервала. Иногда нужно выполнить код сразу после того, как ответ уже ушёл пользователю, — чтобы не заставлять посетителя ждать отправку письма, лог или другую тяжёлую операцию, не влияющую на то, что он видит на странице. Разберём, как это сделать в Битриксе корректно. Проблема: тяжёлая операция в основном потоке ответа <?php…

Собственная логика, привязанная к оформлению или изменению заказа, — интеграция с CRM, отправка данных во внешнюю систему, начисление бонусов — реализуется через события модуля продаж, а не через разрозненные проверки в разных местах кода. Разберём ключевые события заказа в D7 и как их правильно использовать. OnSaleOrderSaved — универсальное событие сохранения <?php use Bitrix\Main\EventManager; EventManager::getInstance()->addEventHandler( ‘sale’, ‘OnSaleOrderSaved’, function ($event) { $order…

Пароль администратора — единственное, что отделяет посторонних от полного доступа к сайту. Его можно подобрать, украсть вредоносной программой, получить из утечки другого сервиса, где использовался тот же пароль. Двухфакторная аутентификация закрывает все эти сценарии сразу: даже зная пароль, войти без второго фактора невозможно. Разберём, как она устроена в 1С-Битрикс, как включить и что делать, если доступ всё-таки потерян. Как это…

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

Любой текст, который увидит пользователь или администратор, стоит выносить в языковые файлы через Loc::getMessage, а не зашивать строкой прямо в код, — даже если проект никогда не станет многоязычным. Разберём механизм локализации D7 и почему это правило стоит соблюдать с самого начала разработки. Базовое использование <?php use Bitrix\Main\Localization\Loc; Loc::loadMessages(__FILE__); echo Loc::getMessage(‘MY_MODULE_TASK_SAVED’); Loc::loadMessages(__FILE__) подключает языковой файл, расположенный по соглашению рядом с…

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

Загрузка всех изображений страницы сразу, включая те, что находятся далеко за пределами видимой области экрана, — лишняя нагрузка на канал и заметная задержка отрисовки. Разберём, как настроить отложенную загрузку изображений (lazy load) на сайте 1С-Битрикс современным способом, без сторонних JS-библиотек. Нативный атрибут loading вместо сторонних библиотек <img src=»/upload/product.jpg» loading=»lazy» alt=»Название товара»> Современные браузеры поддерживают атрибут loading=»lazy» нативно — изображение с…

CIBlockElement::GetByID — самый частый способ получить один конкретный элемент инфоблока, когда его идентификатор уже известен: на странице детального просмотра товара, при обработке AJAX-запроса с ID в параметрах, при работе с элементом внутри обработчика события. Базовый вызов <?php $result = CIBlockElement::GetByID($elementId); if ($element = $result->GetNext()) { echo $element[‘NAME’]; echo $element[‘DETAIL_TEXT’]; } Метод возвращает объект результата даже для одного элемента — обращение…

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

Режим отладки в 1С-Битрикс — это не одна галочка, а набор независимых настроек: вывод ошибок PHP, журнал SQL-запросов, отладка событий, таймер производительности. Разберём, что реально показывает каждая из них и почему включать всё сразу на боевом сайте не стоит. Вывод ошибок PHP Базовая настройка находится в /bitrix/.settings.php, в секции exception_handling. Параметр debug со значением true включает подробный вывод ошибок прямо…

AJAX на сайте под 1С-Битрикс можно сделать пятью разными способами, и они сильно отличаются по надёжности. Часть решений тянется из старого ядра, часть появилась в D7, а самый распространённый вариант — отдельный PHP-файл в обход системы — работает, но обычно оказывается худшим выбором. Разберём все подходы, покажем современный вариант с контроллерами D7 и объясним, почему подключать prolog_before.php в самописный обработчик…

Прямой SQL через глобальный объект $DB остаётся в проектах на Битриксе там, где ORM или старый объектный API оказываются избыточными или недостаточно быстрыми. Разберём, как безопасно работать с $DB->Query, и почему прямой SQL — это осознанный компромисс, а не путь по умолчанию. Базовый запрос <?php global $DB; $result = $DB->Query(‘SELECT ID, NAME FROM b_iblock_element WHERE IBLOCK_ID = 14 AND ACTIVE…