Мы настраиваем альтернативные тексты для изображений в интернет-магазинах на 1С-Битрикс под ключ. Не просто заполняем alt-атрибуты — мы интегрируем логику автозаполнения, исправляем вывод в компонентах и оптимизируем для SEO. Пустой alt — это не просто проблема доступности. Это SEO-потеря: Google использует alt-текст как текстовый сигнал для ранжирования изображений в поиске. Интернет-магазин с тысячей товаров, у которых alt либо пустой, либо равен «image.jpg» — это тысяча пропущенных точек входа из Google Images. В Битриксе alt-тексты не заполняются автоматически нигде в стандартных компонентах. За 5+ лет работы с Битриксом мы выполнили более 50 проектов по оптимизации изображений.
Почему alt-текст критичен для SEO и доступности?
Alt-текст — единственный способ для Google Images понять содержание картинки. У скринридеров он используется для озвучивания. Отсутствие alt или заполнение мусором (например, «image.jpg») снижает рейтинг страницы в выдаче. По нашей оценке, правильно настроенные alt-тексты приносят до 30% дополнительного трафика из поиска по картинкам.
Где хранится alt в инфоблоке
Битрикс хранит alt-текст изображения в таблице b_file — поле DESCRIPTION. Это поле заполняется в административной части при загрузке файла. Также для свойств типа F есть поле DESCRIPTION в b_iblock_element_property — это подпись к конкретному использованию изображения в элементе, независимо от подписи в b_file.
Приоритет при выводе: если у свойства элемента есть DESCRIPTION — использовать его; если нет — взять DESCRIPTION из b_file; если и там пусто — сгенерировать из названия товара.
| Источник alt | Приоритет | Когда используется |
|---|---|---|
| Описание свойства элемента (DETAIL_PICTURE) | 1 | Если задано в админке |
| Описание файла (b_file.DESCRIPTION) | 2 | Если нет описания свойства |
| Название товара (сгенерированное) | 3 | Когда оба пустые |
В шаблоне компонента:
$fileId = $arResult['DETAIL_PICTURE']['ID']; $fileData = \CFile::GetFileArray($fileId); $alt = ''; // Приоритет 1: описание свойства элемента if (!empty($arResult['PROPERTIES']['DETAIL_PICTURE']['DESCRIPTION'])) { $alt = $arResult['PROPERTIES']['DETAIL_PICTURE']['DESCRIPTION']; } // Приоритет 2: описание файла elseif (!empty($fileData['DESCRIPTION'])) { $alt = $fileData['DESCRIPTION']; } // Приоритет 3: название товара else { $alt = $arResult['NAME']; } $alt = htmlspecialcharsEx($alt); Функция CFile::GetFileArray описана в официальной документации Битрикс.
Массовое заполнение alt для существующих товаров
Если магазин работает несколько лет и тысячи изображений без alt — нужен скрипт массового заполнения. Логика: пройти все элементы инфоблока, для каждого взять DETAIL_PICTURE и MORE_PHOTO, проверить DESCRIPTION в b_file, при пустом — заполнить из названия элемента.
Скрипт запускается агентом Битрикса или через CLI:
$res = \CIBlockElement::GetList( ['ID' => 'ASC'], ['IBLOCK_ID' => CATALOG_IBLOCK_ID], false, ['nTopCount' => 100, 'iNumPage' => $page], ['ID', 'NAME', 'DETAIL_PICTURE'] ); while ($el = $res->GetNextElement()) { $fields = $el->GetFields(); if (empty($fields['DETAIL_PICTURE'])) continue; $fileId = $fields['DETAIL_PICTURE']; $fileData = \CFile::GetFileArray($fileId); if (empty($fileData['DESCRIPTION'])) { $DB->Query("UPDATE b_file SET DESCRIPTION = '" . $DB->ForSql($fields['NAME']) . "' WHERE ID = " . (int)$fileId); } } Прямой UPDATE в b_file быстрее, чем CFile::Update() — тот сбрасывает кеш по каждому файлу отдельно.
Как автоматически заполнять alt для новых товаров?
Для новых товаров alt-текст можно заполнять автоматически при импорте из 1С или через обработчик OnBeforeIBlockElementAdd. В нём проверяем заполнение DETAIL_PICTURE и при пустом DESCRIPTION подставляем название элемента. Это исключает ручную работу контент-менеджеров.
Alt для изображений в инфоблоке новостей и статей
Для изображений, вставленных через TinyMCE в поле DETAIL_TEXT, alt заполняется непосредственно в редакторе. Проблема: если контент-менеджеры игнорируют поле alt в диалоге вставки изображения, картинки получают пустой alt="" или alt="image". Решение на уровне редактора: в настройках TinyMCE (файл конфигурации в шаблоне) добавить обязательность поля alt через кастомный плагин или через валидацию формы вставки. Другой подход — постобработка HTML при сохранении через обработчик OnBeforeIBlockElementUpdate: парсить DETAIL_TEXT через DOMDocument, находить <img> без alt и подставлять заголовок статьи.
Декоративные изображения
Иконки, разделители и декоративные фоновые элементы должны иметь пустой alt="" — это намеренно пустой атрибут, сигнализирующий screen reader игнорировать изображение. Ошибка — вообще не указывать alt (нарушение WCAG 1.1.1) или указывать описательный текст для декора (лишний шум для assistive technology). В шаблонах Битрикса иконки часто выводятся через <img> — стоит заменить их на inline SVG с aria-hidden="true" или добавить явный alt="".
Что входит в настройку альтернативных текстов
- Аудит текущего состояния alt-атрибутов (выборка по инфоблокам, проверка ошибок).
- Написание скриптов массового заполнения и автозаполнения для новых элементов.
- Корректировка шаблонов компонентов для правильного приоритета alt-текста.
- Настройка правил для декоративных изображений (SVG, пустой alt).
- Тестирование на корзине тестовых товаров и статей.
- Документация по поддержке и инструкции для контент-менеджеров.
Свяжитесь с нами — мы оценим ваш каталог. Обычно настройка занимает 5–10 рабочих дней в зависимости от объёма.
Наши результаты
Более 5 лет опыта работы с Битриксом. Выполнили 50+ проектов по оптимизации изображений для интернет-магазинов. Средний прирост поискового трафика по картинкам — 20–30%.







