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

Пустой атрибут alt у сотен изображений каталога — упущенная SEO-возможность и проблема доступности одновременно. Разберём, как массово заполнить alt и title изображений на существующем сайте 1С-Битрикс, не проставляя их вручную по одной карточке. Откуда берётся alt у изображения товара Для стандартного вывода изображения товара через компонент каталога значение alt обычно формируется автоматически на основе названия товара, если явно не задано…

Инфоблоки 2.0 — обновлённая архитектура хранения данных элементов и разделов, пришедшая на смену классической структуре таблиц инфоблоков. Разберём, что реально меняется под капотом, когда стоит включать новую версию, а когда лучше остаться на классической. В чём принципиальное отличие от классических инфоблоков Классические инфоблоки хранят свойства элементов в универсальных таблицах значений свойств, общих для всех инфоблоков сайта, — это гибко, но…

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

Письма в 1С-Битрикс не отправляются в момент вызова CEvent::Send или Event::send — они становятся в очередь, которую разбирает отдельный механизм. Разберём, как устроена эта очередь, что делать, если письма копятся и не уходят, и как настроить отправку под реальную нагрузку проекта. Как письмо попадает в очередь Вызов почтового события создаёт запись в таблице очереди писем (b_event и связанные таблицы) со…

Мобильное приложение, внешняя интеграция или SPA-фронтенд, работающий с данными сайта, — всем им нужен API. Разберём, как реализовать собственный REST-эндпоинт на 1С-Битрикс через штатный механизм контроллеров D7, а не через самописную маршрутизацию с нуля. Контроллер как основа REST-эндпоинта <?php namespace Vendor\Module\Controller; use Bitrix\Main\Engine\Controller; use Bitrix\Main\Engine\ActionFilter; class Product extends Controller { public function configureActions(): array { return [ ‘list’ => […

На проекте с растущим каталогом и историей заказов производительность сайта рано или поздно упирается не в PHP, а в базу данных. Разберём, как находить и устранять медленные запросы MySQL на сайтах 1С-Битрикс, не переписывая всю логику приложения с нуля. Включение лога медленных запросов # my.cnf slow_query_log = 1 slow_query_log_file = /var/log/mysql/slow.log long_query_time = 1 Лог медленных запросов фиксирует все запросы,…

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

CIBlockSection::GetByID и построение цепочки родительских разделов — базовая задача при выводе хлебных крошек, вложенных каталогов и любой структуры, где разделы образуют иерархию. Разберём метод и типичные способы получить полную цепочку от текущего раздела до корня. Получение одного раздела по ID <?php $section = CIBlockSection::GetByID($sectionId)->GetNext(); if ($section) { echo $section[‘NAME’]; echo $section[‘IBLOCK_SECTION_ID’]; // ID родительского раздела, если есть } Как и…

В каталоге из десяти тысяч товаров метатеги невозможно прописать руками. Их генерируют по шаблонам — и от того, насколько удачно составлен шаблон, зависит, как выглядят в поисковой выдаче тысячи страниц сразу. Разберём, где задаются шаблоны, какие подстановки доступны, как работает наследование по дереву разделов и почему шаблон «Купить #NAME# недорого» приносит больше вреда, чем пользы. Где задаются шаблоны Настройки лежат…

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

Заказ покупателя, оформленный через sale.order.ajax, — не единственный способ создать заказ в 1С-Битрикс. Часто нужно собрать его программно: при импорте из внешней системы, при оформлении по звонку менеджером, при переносе заказов со старого сайта. Разберём, как создать заказ через объектную модель Bitrix\Sale\Order из кода D7 — без обращения к устаревшим функциям старого модуля продаж. Основные объекты Модуль продаж в D7…

Сайт отправляет письма, а до получателей они не доходят или падают в спам. Заказ оформлен — покупатель не получил подтверждение. Пользователь зарегистрировался — ссылка активации не пришла. Форма отправлена — менеджер узнаёт об этом через сутки. В подавляющем большинстве случаев причина не в тексте письма и не в настройках Битрикс, а в отсутствии DNS-записей, подтверждающих право сайта отправлять почту от…